Projects About

HTTP 200, No Email — Claude Code Found a 7-Day Silent Bug and Delivered to 11 Subscribers

For seven days, the pipeline was dead. Every morning at 09:03 KST, the cron job fired, the script ran, and nothing happened. No errors surfaced. No alerts fired. From the outside, it just looked like “no email today.”

Today I found it. 8 sessions, 153 tool calls. Zero new features written.

TL;DR A Claude CLI logout silently killed the AI news crawl from March 17. AgentCrow dispatched 3 agents across 2 phases to recover it. Got HTTP 200 on a test send, still no email — turned out to be spam. Fixed the email design. Sent to all 11 subscribers. Then removed the feedback section entirely before the next run.

The Bug That Hid for 7 Days

First session: 1 minute, 21 tool calls. Started with “why no email again today.”

Scanned ~/spoonai/. The cron log showed generate-ai-news.sh firing daily at 09:03 — but exiting with code 1 every time. The error was buried in the subprocess output:

Not logged in · Please run /login

Familiar error. The problem was the timestamp. The logs went back to March 17 — seven consecutive days of the same failure.

The cascade was clean once you saw it: Claude CLI logout → zero news generated → empty crawl JSON → email HTML can’t render → 0 sends. The first step of the pipeline had been silently failing for a week while the symptom was just “no email.”

Diagnosis took 21 tool calls: 15 Bash runs to read through logs, 3 Glob calls to check whether crawl JSONs existed.

AgentCrow: 2-Phase Pipeline Recovery

After logging back in, the recovery session ran for 14 minutes across 13 tool calls.

The pipeline has a strict dependency order — crawling has to finish before article generation or email rendering can start. So I set up a sequential-then-parallel structure:

━━━ 🐦 AgentCrow ━━━━━━━━━━━━━━━━━━━━━
Dispatching 3 agents (2-phase sequential):

Phase 1:
🔄 @data_pipeline_engineer → crawl → ~/spoonai/crawl/2026-03-24.json

Phase 2 (parallel, after Phase 1):
🖥️ @senior_developer → generate article MDs + download images + git push
📝 @writer            → generate email HTML (ko/en)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Phase 1 collected 52 items, filtered down to 28 (TOP5, BUZZ3, PAPER1, QUICK17, GITHUB3). That JSON fed Phase 2.

Output: 6 article MDs (NVIDIA GTC, Anthropic Marketplace, Meta Llama 4 — both ko and en). 3 OG images failed to fetch, swapped to Wikimedia CC alternatives. Site deployed.

HTTP 200, No Email

Test send session: 2 minutes, 9 tool calls. Sent to [email protected] via send-email.js. Resend API responded 200, message ID ebf3a2a5-....

“Still not here.”

Second send session kicked off (2 minutes, 8 tool calls). Re-confirmed file paths, checked an alternate output directory (~/spoonai-site/data/output/), explicitly specified the HTML file and script this time. Another send. ID ad836686-..., another 200.

Then: “Check the spam folder.”

It was there. Both of them. The first send had worked fine — Resend had processed it successfully. I should have checked the delivery status dashboard before resending. Instead, I fired a second send immediately. Two test emails went out today.

Email Redesign: 48 Tool Calls

Once delivery was confirmed, feedback came in: “The design changes I asked for earlier aren’t applied.”

Session 5: 9 minutes, 48 tool calls. Four things to fix: smaller keyword tags with more vivid colors, smaller link buttons, improved feedback section design, full TLDR style guide applied throughout.

Used email-2026-03-21-ko.html as a reference and diffed the CSS patterns. 14 Edit calls applied the changes to both ko and en HTML files. 7 TodoWrite calls tracked each of the four fix items.

After the fixes, generated two new base template files: email-template-ko.html and email-template-en.html. Next time, the structure doesn’t need to be rebuilt from scratch.

11 Subscribers, 11 Sent, 0 Failed

One message after design review: “Send the full list.”

Session: 4 minutes, 18 tool calls. subscribers.txt format is ko,[email protected]. Subscriber count: ko 10, en 1. Individual API calls per recipient.

LangSubjectRecipients
ko[spoonai] 3/24 Mon — 젠슨 황이 터뜨린 1조 달러 AI 수주10
en[spoonai] 3/24 Mon — Jensen Huang's $1T AI Order Bombshell1

Success: 11. Failed: 0. Bash ran 9 times to write and execute the send script.

Remove the Feedback Section — Same Day

Right after the send completed: “Starting tomorrow, remove the ‘how was this briefing’ section. Update the skill too.”

This took two sessions (session 7: 9 minutes, 26 tool calls; session 8: 0 minutes, 10 tool calls). Session 7 edited 2 SKILL.md files and both HTML templates. Session 8 ran grep to find leftover CSS class references and cleaned them out.

Two sessions for one task because session 7 wasn’t complete. CSS class descriptions were still inlined in SKILL.md — missed on the first pass. Four Grep calls covered feedback, 피드백, 어땠어, and survey across the codebase.

Skill files are instructions to Claude, not code. Stale content in a skill file means Claude will regenerate removed features in the next session.

Tool Usage Breakdown

8 sessions. 153 total tool calls.

ToolCountPurpose
Bash51Log inspection, send scripts
Read34File content review
Edit28CSS, HTML, skill file edits
Glob10File location checks
TodoWrite7Fix item tracking
Grep6Keyword search

2 files created (email-template-ko.html, email-template-en.html), 6 files modified. No feature code written. Pipeline recovered, design fixed, 11 emails delivered.


More projects and build logs at jidonglab.com

Comments 0

0 / 1000