Saturday, July 11, 2026
If you can't see what a feature costs to run, you're flying the plane by feel.
Gave Sage a blog that syndicates itself to X, and finally made AI spend measurable — a dashboard that shows real per-call cost instead of a monthly surprise. Also split the pipeline so slow work and fast work stop fighting over the same lane.
Shipped
- A blog that syndicates — shipped a public blog on Sage end to end: the data model, admin authoring under the content tools, the public read pages, and one-click syndication of a published post to X — write once, distribute automatically
- Measured LLM cost — built an /admin/usage dashboard that records and shows real LLM usage and cost, so I can finally see what each feature actually spends per call instead of reconciling a bill at month end
- Split the pipeline — separated slow content ingestion onto a scheduled data pipeline and interactive decodes onto a fast daemon, so a heavy background scan can't make a live "decode this now" request wait in line
- The Observatory — restructured the whole admin: redesigned the dashboard as "The Observatory," grouped the navigation into Content, and pulled the posting program into a clean schedule cockpit, cutting the clutter that had accumulated across weeks of shipping
- Grounded card copy + consolidated analytics — the generated daily-card copy now grounds on the matching reference essay, and I folded builddaily.io's scattered analytics jobs into a single daily pipeline
Notes
Two weeks ago I put a budget ceiling under the AI. Today I built the gauge that shows how close to it I'm flying. A circuit-breaker keeps a disaster from happening; a usage dashboard tells me where the money actually goes so I can make it cheaper on purpose. You can't optimize what you can't measure, and until today "what does the decode feature cost per call" was a question I could only answer by guessing. Splitting the pipeline is the same instinct applied to time instead of money — a slow scan and a live request were sharing one lane, and the person waiting for a live answer always lost. Give each its own lane and both get faster.
