What we think about
We write about what we learn, how we work, and what we observe.
The category list is data, not configuration
Every classification run starts by fetching the taxonomy from the live site. Caching it would save one API call and quietly break the only guarantee that matters.
What California's Poppy rollout teaches about AI for non-engineers
California just took its state AI assistant statewide after a nine-month pilot. The lessons were never about the models.
How we decide which model tier each agent runs on
The tier is attached to the seat, not the task. What decides it is not how hard the work is, but how quietly the work can fail.
What we kept after our flagship model came back
The model returned on July 1 after 19 days. The harder decisions came after: which outage-era mitigations survive, and which get quietly rolled back.
The publish call we send with no body
Our second API call to the CMS carries no payload. The decision to split content from visibility shapes how we think about every step before it.
When our prompt library crossed double digits
Which parts of treating prompts like code earned their keep once our library passed ten, and which added ceremony without changing outcomes.
Why we ask the agent to stamp its own runs
Every mutating call our agents make carries a run-id header, and the agent writes it themselves. That looks like the wrong place to put a security control.
Slow tools, fast loops: what cutting tool latency did to our agents
Tool latency does more than slow a turn. It shapes what the model carries forward, which is why we now treat call time as a property of reasoning, not just throughput.
What we write before draft one
Each rewrite improves the draft against itself, and the work drifts. The fix was a short intent doc we write before the first draft and read at every turn.