Free for one product. Connect your demo deployment, publish a link, and see how far each visitor gets.
No card required.Anonymous AI trials draw abuse and surprise bills, so many teams hide the product behind signup. Give each visitor a disposable workspace and a capped allowance instead, and let them see real output on real work.
Throwaway emails turn a generous trial into a bill for inference nobody pays for.
Visitors who only wanted to see real output leave before they ever see it.
A tour shows yesterday's answer to someone else's prompt, not what your product does now.
Each visitor gets a temporary workspace in a demo deployment of your real app, and it's deleted when the session ends.
AI requests, tokens, image renders, searches or pages. Set a limit per visitor in your recipe.
withBudget reserves the estimate in one database statement before the call runs, so parallel requests can't reserve past the limit.
When an allowance runs out, the call is refused with a clear reason. Show a message or fall back to a cheaper path.
The session expires, and its workspace and usage rows are removed with it.
Declare the limit in your recipe, then wrap the call in demo mode. When the allowance runs out, withBudget refuses with budget_exhausted, and your app decides what to show.
// recipe: budgets: { "ai.requests": 15, "ai.tokens": 40000 }
const summary = await withBudget(
sql, grant, recipes,
"ai.tokens", 1200, // estimate, reserved first
() => model.summarize(document),
(result) => result.usage.tokens, // actual, recorded after
);