Joining the @ReplitDesign designathon through @Replit. This is my 2nd event with them and learned a lot from the first.
Here's what I'm building.
Meet Scrim - adaptive testing for better learning and understanding, as well as, reducing test anxiety. The test learns with you.
I was a Navy air traffic controller. The job was watching things that only go wrong when nobody is looking.
I now have 14 builds and 6 deadlines running at once. Nobody loses these competitions because their idea was bad.
Built for the All Things Agentic Hackathon on Gemini 3.5 and 3.7 Flash via the GenAI SDK, Cloud Run, Cloud Scheduler, and Firestore.
Repo: https://t.co/veY390bO09
Live status page, no login: https://t.co/CKR20WAJfh
And when you fix it, it calls back and stands down its own alert. When it was wrong to call, it says so. Most verification agents only ever add findings. Tower is built to take one back.
Tower reads a competition rulebook once, decides which obligations it can actually verify, then checks your live repo and public artifacts every 30 minutes for weeks. When something is about to disqualify you, it doesn't send an email you won't read. It calls your phone.
When an AI product feels like it has teeth, the teeth are usually in the loop, not the prompt.
Sycophancy isn't only a training artifact. You can architect it in by accident.
3rd build starts now, on Replit, for #Shipaton.
#BuildInPublic
I rebuilt an app I'd already built, with a better stack and a better model, and it came out worse.
Whetstone is a thinking partner that refuses to flatter you.
v1's Workshop had teeth. v2's agreed with everything.
Same prompts.
3. No termination. No phases, no turn cap, no done flag.
Progress lives in the canvas, not a completion state.
v2 injected once, summarized, and capped the exchange. Each looked reasonable on its own.
2. The canvas merges, never replaces. Fields only accumulate.
That gives the model a stable baseline to compare each new message against.
The gap between old canvas and new message is what triggers the pushback.
1. Re-inject the full Mirror + current canvas into the system prompt EVERY turn.
Not once at session start. Every turn.
The model can only quote your own values back at you if it's handed them fresh.
This part isn't built yet. It's spec, and it gets its own eval suite before any of it ships.
The failure mode isn't a model that ignores the instruction. It's one that follows it too well.
#BuildInPublic
A 5-year-old telling a story says "um" a lot.
She also says "wait, no, the dragon was green."
One of those is noise. The other is the story.
Building Abra for #Shipaton, and the whole thing lives on telling them apart.
Cost of leaving an "um" in: a slightly rough sentence.
Cost of deleting a "wait, no": telling a child the version she rejected was better than the one she chose.