charity plannershack15 · sf

a hackathon, in real time

how it was made

One afternoon at Shack15 — a brief, a spec, a rubric, and an agent let loose. These are the notes, in the order they happened.

Nº 01

Arrived.

Shack15 — Ferry Building, Suite 201, San Francisco.

ferry building, sf

parked blocks away — and it’s hot out 🥵

Before kickoff.

Met people over coffee — conversation ran from agent evals to enterprise features to what everyone was about to build.

the coffee was 3D-printed — sent a photo to my kid, who 3D-prints 🤍

now playing

Claude FM — live coding radio

▶ youtube

10:00a – 12:30p

Nº 02

Wrote the spec.

~2 hours turning earlier ideas — and the accounts I’d set up before the event — into three files that did the heavy lifting later.

BRIEF.md DESIGN.md RUBRIC.md

intermission

Ran 15 minutes back to the car to re-pay the meter. Again. 🥵

ultracode? yes.

Wavered on whether to use ultracode + workflows. A two-minute Q&A with Claude settled it — exactly what this needed.

claude — /goal
/goal let’s work on @BRIEF.md, read @DESIGN.md and follow @RUBRIC.md to verify the work is done. Build it to a level of quality that wows people on the demo. All third-party services are already set up — so iterate on the definitions and get it deployed end-to-end. The RUBRIC.md must pass all the verifications.

↳ goal set. agent running.

All services green.

T+23 min
  • claude-opus-4-8the model
  • web_searchreachable
  • voyage-41024-dim · matches schema
  • rerank-2.5food bank ranks #1
  • postgres 18.4pgvector · pg_trgm
  • fly.iodeploy-ready

incredible.

claude — pipeline
1:25 db:migrate — charities table created ✓
1:31 ingest — rows landing 🎉
1:33 embed (voyage-4) — 99.36% (9,936 / 10,000)
1:33 ingest --backfill — 64 stragglers ✓

corpus embedded · voyage-4 · 1024-dim

9,936

charities, every one with a non-null embedding. 100%.

One batch of 64 failed transiently — but ingest is idempotent, so a re-run quietly backfilled them.

Retrieval, first try.

Nº 03

Maria

7 California food & education orgs — right region, right causes.

The Chens

Asked to exclude religion, and the religious org stayed in — it dropped, correctly. Exclusions held.

Sam

10 wildlife orgs, every one on-target.rerank 0.70–0.83

honest note

“red cross” didn’t surface the American Red Cross — it simply isn’t in this 10k subset. Rerank sensibly returned Magen David Adom (Israel’s Red Cross) and blood centers. A corpus reality, not a bug — so I aligned the sanity queries to orgs that are actually present.

Meanwhile…

Got a little bored waiting on the agent — so I opened a second session and started this very page.

you’re reading it.

Tests before pixels.

Backend typechecked clean — and before a single component, it wrote a scenario harness to check the RUBRIC assertions at the data layer: facets captured, dollars summing, exclusions holding.

data first, then pixels.

claude — self-check
temperature is deprecated for opus-4-8 — let me check the claude-api reference rather than guess.

↳ the model, reading its own docs. very meta.

Deployed — and it’s good.

Nº 04

First full report on Fly in 18.8s. Maria’s plan came back demo-quality on the very first run.

top-3 split$50+$30+$20=$100

Eight California orgs, zero political, a first-person philosophy in her own words, and the right Daffy fork fund.

the hardest test

The Chens.

Full mode, two exclusions at once: no religious orgs (structured) and nothing Stanford-affiliated (free text). The ambitious bet — can it honor a constraint you only typed in passing?

pnpm verify · vs. live url

All green. 🎉

Nº 05
  • typecheck + biomeclean
  • 27 unit testsgreen
  • ingest10,000 rows embedded
  • no-leak0 forbidden in top 10
  • smoke/ + /api/health · 200
  • playwrighthappy path

Plus the sanity queries and all three live scenarios — S1, S2, S3 — passing end-to-end.

claude — /goal

✔ Goal achieved (1h · 1 turn · 296.6k tokens)

↳ on to the delight features — voice, motion, the reveal.

…and I hadn’t touched it once since 12:30 🤯

One afternoon, one prompt.

After 12:30, my only input was a handful of design tweaks. A detailed brief and a strict rubric let the agent one-shot the build, grade its own work, and fix its own misses — untouched.

even these notes — made with Claude.