The original input
What the person actually typed.
This is the demo as it ran on my laptop the first day it worked. One form, one trace object, one local store. The Python server isn't on this page, so the form falls back to a small in-browser mock — you can still click through it, the shape is the same.
serve.py, no OpenAI key, no traces.jsonl. The mock returns a stub trace from the input you typed so the save/recall loop is observable in your own tab — your traces never leave it.The point isn't this specific demo. The point is that putting an unfinished thing somewhere readable is how the next person learns with less hesitation than you did.
Type the idea the way a real person would say it. The trace should make it easier to review, not harder.
The server returns a trace object with a summary, assumptions, open questions, a next step, and a plain-English version.
{}
On this page, history lives in your tab only — it clears when you close it. The local server version keeps a JSONL file instead, but the same shape.
What the person actually typed.
A clearer version with assumptions, questions, and a next step.
Mock output or live OpenAI output, depending on server settings.
A record you can reload later from the local JSONL store.
The form captures a rough idea, audience, and context.
The server returns a structured trace, using a mock function by default. On this page, that mock runs in your browser instead of on a server.
If OPENAI_USE_LIVE=1 and OPENAI_API_KEY are set, the local server asks OpenAI for the trace instead.
Every result is saved — to traces.jsonl when run locally, to sessionStorage when run here. Either way it can be reloaded from the page.
Identity is browser-only: a random handle in localStorage, plus a rolling token-per-minute throttle that asks you to wait — or email me for a personal demo — when it trips. No accounts, no server-side state, no email required.