Mary Imevbore
Vol. I · No. 01 · May 2026
Brooklyn, NY Est. 1996 Last updated May 2026
§ — Case Study · Engineering

Gist

A daily personalized morning briefing. Pulls signal from your calendar, recent mail, weather, news, and the time of year, distills it through Claude, and delivers a short read tuned to the person reading it.

TypeScript Firebase Claude API LLM Distributed Cron
§ 01 — Problem

Problem

Most morning newsletters are one-size-fits-all. Gist generates a fresh briefing per user every day, blending their calendar, recent mail, weather, news of interest, and even the day's moon phase, then asks Claude to synthesize a short, personal read.

The architecture is sized for a small number early adopters, as a single scheduled function generates every due briefing in one run.

§ 02 — Architecture

Architecture

A scheduled Cloud Function runs every 15 minutes, queries Firestore for users whose nextDeliveryAt has passed, and for each eligible user fans out five connector calls in parallel — weather, calendar, news, Gmail, moon phase. The aggregated signal is handed to Claude for briefing generation, the result is written back to Firestore, and per-user delivery state is updated for the next cycle.

§ 03 — Technical Decisions

Technical decisions

§ 04 — What's Next

What's next

  1. Parallel section generation. The briefing is still one Claude call that emits the whole newspaper. Splitting independent sections into concurrent calls collapses run time — the same fan-out the connectors already use.

  2. Gist generation fan-out. The architecture is sized for a small number (around 100) of users. A single scheduled function generates every due briefing in one run, and will quickly come against rate limits within function calls.

  3. Cost reduction. Every Claude call currently uses claude-sonnet-4-20250514; lightweight classification work should move to Haiku and reserve Sonnet for the user-facing briefing prose. System prompts and connector summaries are stable across users and days, so caching them cuts input-token cost meaningfully. And there's no circuit breaker on runaway prompt size today — a per-user token budget would catch a misbehaving connector before it burns through the bill.

§ 05 — Links

Links