An intent configuration interface. Language in, readable trait score out, artifact updates live.
When you prompt an AI — "formal and warm," "minimal but expressive" — the interpretation is invisible. You can't inspect it, tune it, or carry it forward. This prototype makes that interpretation explicit: a five-axis radar you can edit directly, before generation runs.
The chain: prompt language → extracted traits → radar edits → artifact mutation
You enter natural language preferences. The model extracts them into a trait score — discrete axes with values between 0 and 1, each mapped to CSS variables. Drag a point on the radar and the profile card updates live. Export a soul.md — a portable, machine-readable spec of your taste.
When two traits share a CSS variable, conflict resolution is typed: numeric properties blend proportionally, colors mix per channel, categorical properties (font family, easing) go to whichever trait has the strongest opinion — with hysteresis to prevent jitter on near-ties.
Requires Node.js. No install step.
-
Create a
.envfile in the project root:OPENAI_API_KEY=your-key-here -
Start the server:
node server.mjs
If port 4173 is taken: PORT=4174 node server.mjs
Vanilla JS + CSS — Node.js HTTP server — OpenAI Responses API (gpt-5-nano by default, swap via OPENAI_MODEL env var)
See agent_docs/ for spec, contributor guide, QA runbook, and acceptance criteria.