Five agents in orbit around one database.

Two fire on email the second it lands; three run on daily crons. Every run ends the same way — an audit row in Postgres with tokens, cost, and timings.

12 labels3 crons569 tests · 0 secrets$15–30/mo0 emails sent
NeonAUDIT LEDGER
Triager
every email
Job Apps
on dispatch
News Brief
09:15 ET
Morning Brief
10:30 ET
Spend Sync
04:00 ET
inner ring · event-driven — outer ring · cron

00 / LIVEStraight from the audit ledger

lifetime totals · refreshed hourly
LIVE1,193emails classified
LIVE28news briefs generated
LIVE3morning briefs generated

01 / FIG. 1System elevation

email path · end-to-end ≈ 3.5 s
PUSH ≤ 2 s AFTER DELIVERYGmail4 ACCTS · PUB/SUB WATCHTriagerJWT WEBHOOK · SONNET · CACHED12 labels+ ⚠ FLAG WHEN ACTIONABLEJob AppsLANGGRAPH · OPUS · BEARER DISPATCHNotionSTATUS ↑ · BRIEF PAGESNeon PostgresAUDIT LEDGER — RUNS · SPEND · TIMINGSDashboardNEXT.JS RSC · DIRECT READSNews Brief09:15 ET · CURATED DIGESTMorning Brief10:30 ET · TASKS + CALENDARSpend Sync04:00 ET · BILL → POSTGRESREADS LABELED MAILPUBLISH — 1 PAGE / DAY EACHCOST + USAGE · UPSERTDISPATCHAUDIT ROWLABELSTATUS ↑SERVERLESS READ

02A day on the rails

playhead sweeps 24h · markers fire on schedule
00:0004:0008:0012:0016:0020:0024:00
triager
EVENT-DRIVEN · ALL DAY
job-apps
FIRES WHEN LABEL == JOB APPS
spend-sync
04:00
news-brief
09:15
morning-brief
10:30

03Hard rules

enforced in code · covered in tests
Never sends

No automated send path exists. Replies are human, every time.

Never regresses

Saved → Applied → Screen → Interview → Offer. One direction only.

Never fabricates

A date the email doesn't state stays null in Notion.

Always audited

Tokens, cost, latency, path taken — one row per run.

The prompts are private. The engineering isn't.

Public mirror — prompts & personal data removed; every line of pipeline logic, the tests, and the infra are intact.

email →read the code ↗