Every day, the app writes a short AI-generated update on how the standings changed. It runs two ways — Simple, where we hand the model the data, or Agentic, where the model asks for what it needs itself — and on two different models: Claude, hosted by Anthropic, and a self-hosted model running for free on our own hardware, a machine we call "the Spark." You can watch it happen live, too — the prompt sent, any tool calls made, and a timeline of the run.
01Simple vs. Agentic
Simple: the app looks up the standings itself and hands the model everything it needs in one message. The model just writes.
Agentic: the model gets no data upfront. It's given a short list of questions it's allowed to ask — current standings, today's results, the biggest movers — and decides for itself what it needs before it writes.
For the self-hosted model, that back-and-forth works like this: the Spark checks in with our app on a fast, constant heartbeat asking "anything for me?" Once it has a job and the model needs a lookup, it sends a different kind of request and waits — our app checks whether that's allowed, fetches the real answer, and sends it straight back. The model takes that answer and either asks another question or writes its final commentary.
02Kept safe
The self-hosted model never touches our database. It only ever gets answers our app decides to hand it, checked every time.
Personal contact information is never sent to any model, ever, in any environment. Only a participant's display name and bracket name — already public on the leaderboard — is visible to a model.
Nothing a model writes is trusted as formatting or code. Its output is filtered before anyone sees it.
Turn on "Watch processing" to watch it happen live — the prompt sent, any tool calls made, and a timeline of the whole run.
Claude costs real money per use — every run spends actual Anthropic tokens — so it asks for an access code first. Email derek.blum@ymail.com to get one. The Spark options run on our own hardware, cost nothing, and don't need a code.
04What's next
Try a smaller, faster open-weight model to see if speed can improve without a quality tradeoff.
A more direct connection between the app and the Spark, skipping the queue in between — planned for later, not built yet.