Rough text in. Dimensioned copy out.
A planer takes rough stock and returns dimensioned stock. Paste rough text, pick a profile, run a pass. The output streams in and every pass is logged with what it cost.
- Allowance
- 20 passes a month, aborted ones included
- Rough pass
- anthropic/claude-haiku-4.5
- Finish pass
- anthropic/claude-sonnet-4.6
- Logged per pass
- Model, tokens in, tokens out, cost
One pass, 70 words down to 24
profile: smooth · rough pass · anthropic/claude-haiku-4.5
Plain-language rewrite. Keeps the meaning, removes filler and hedging.
Rough stock
So basically what we're trying to do here is, we want to kind of streamline the way that orders get processed, because right now it takes maybe three or four days sometimes, which honestly is probably too long, and we think that if we maybe automated some of the manual steps we could potentially get that down to same day, or at least next day, in most cases we believe.
Dimensioned copy
Order processing takes three to four days. That is too long. Automating the manual steps should bring most orders down to same-day or next-day.
Those two panes and the control line above them are the workbench's own components. The text is a sample, kept short enough to read.
What it demos, and where to read it
- One gateway client
Every call goes through the AI Gateway and asks for a tier, not a model name. No provider SDKs, no provider keys.
src/lib/ai
- A cost ledger
Tokens and dollars land in core.ai_usage_events on success and on failure. A failed call is not a free call.
src/app/(planer)/api/planer/refine/route.ts
- An atomic allowance
Postgres counts the month and inserts the row in one advisory-locked transaction, before a token is spent.
supabase/migrations/20260804120200_planer_pass_claim.sql
- Org-scoped history
Another org's pass id reads back as nothing. There is an integration test that proves it.
src/app/(planer)/lib/rls.itest.ts
Planer is deliberately small. The chassis is the point.
Left out on purpose: chat, file upload, a model picker, a prompt library.
None of those are chassis limits, they are product decisions. Everything planer adds sits in one route group, src/app/(planer), plus two lines on the product roster. That is the whole footprint.