Rewrote the newsletter system prompt from scratch using three published SunshineFM newsletters as the actual register. Upgraded model to claude-sonnet-4-6. Created two new VOICE.md files splitting SunshineFM and AICV voices into separate repos. Fixed PWA installability via service worker, removed social panel, corrected named attribution handling.
The capture + draft newsletter output was flat โ generic analysis dressed up as a newsletter. The system prompt described Sat's voice instead of showing it. No examples. No real register. Claude Sonnet was starting cold every call with nothing concrete to pattern-match against.
Two compounding problems: the model was claude-sonnet-4-20250514 (Sonnet 4, not 4.6), and the voice spec lived in a VOICE_ADDENDUM.md file inside the Claude Project that had never been merged anywhere the app could read it.
Read three published SunshineFM newsletters in full to extract the real register โ Capital Captures Capital, Disappearing Ladders and Graying Ceilings, AI Isn't Coming For Your Job. These became the source of truth for the system prompt rewrite, not a description of the voice.
Newsletter system prompt rebuilt from scratch with nine specific patterns derived from published work: entry point structure, the turn, argument build across h2 sections, parentheticals as dry asides, single sentence punches, direct address, local landing with named institutions, personal stake near the end, challenge not declaration at the close. Sign-off structure added: bio line thematically tied to each edition plus the fixed share CTA. Named attribution restored โ "Jeremy Allaire โ co-founder of Circle โ laid this out on a recent episode of No Priors" is the correct pattern, not formal footnotes. Length corrected from 600 words to 1,000 minimum, 1,200 target. Stock phrase defaults removed โ AICV origin story and "the cavalry is not coming" must be earned from the material, not imported as defaults.
Model upgraded from claude-sonnet-4-20250514 to claude-sonnet-4-6 alias in the Cloudflare Worker proxy โ resolves to latest Sonnet 4.6 snapshot automatically on each call. Better writing quality at same price point.
Created two new VOICE.md files from scratch โ none existed in either repo before today. ~/Projects/docs/VOICE.md covers AICV voices only: @CoachellaAI distribution and X daily take, with the AI job cuts brief as the canonical example register. ~/sunshine-fm/VOICE.md covers SunshineFM voices only: newsletter, blog, Bluesky. Includes the north star and funnel context, nine newsletter voice patterns derived from published work, three published bio line examples, and the four-layer content stack. Both files updated to reflect named attribution as the correct pattern.
Blog system prompt also rewritten with north star, CV context, published opening register from the OpenAI industrial policy post, and correct analytical register distinct from newsletter voice.
PWA service worker added โ Chrome on Android requires a registered service worker before showing the Add to Home Screen prompt. Hard refresh on Pixel confirmed installation. Social panel removed โ social posting lives at tools.aicoachellavalley.com, not in a capture tool. Sitemap updated: blog index corrected from 0.6 to 0.8, capture-draft added at 0.5.
Heavy session โ multiple full file reads of published newsletters, iterative system prompt rewrites, web searches for model comparisons, multiple deploy cycles.
| Category | Estimate |
|---|---|
| Newsletter reads (3 full posts) | ~6,000 tokens |
| System prompt iterations (6-7 rewrites) | ~25,000 tokens |
| VOICE.md files written (both) | ~8,000 tokens |
| Web searches + model research | ~5,000 tokens |
| Conversation turns + responses | ~30,000 tokens |
| Project context loaded per turn | ~15,000 tokens |
| Total estimate | ~85,000โ100,000 tokens |