shpapps

Blog

Notes from the workbench

How we build our apps: the patterns, the numbers and the mistakes, written for developers.

Recipes, not prompts: one edge in front of every app

Our apps never name a model or send a prompt. They name a recipe, and a small Cloudflare Worker does the rest. Here is the pattern and why it has paid for itself.

Short, springy, about the thing touched: RetroReady's motion rules

The four animation pieces behind RetroReady, with their real numbers in Flutter and CSS, and the rule that decided all of them.

Valid JSON, junk inside: guarding model output before users see it

Structured output mode guarantees JSON, not good JSON. A cheap second check against the schema and a short list of junk patterns turned unusable answers into failed steps the ladder could route around.