The model listens. Code verifies.

An LLM is good at reading a messy sentence and bad at knowing when to stop. So it only reads; everything that decides what goes on the application is plain, tested Python.

From one sentence to a verified application

Every customer message goes through the same five steps. The model reads the message and words the next question; everything else is code, which is instant, exact and covered by tests.

  1. Read the message

    One model call reads the customer's latest reply, with only the question it answers as context, and returns a forced tool call: the facts stated, the ones that were vague (“about a dozen”), and the ones the customer said they don't know. It is told never to fill in a typical value.

  2. Check it in code

    Pydantic validates every value: real US states (“Texas” becomes TX), sensible numbers, known industries. Then the no-guess rules: “don't know” counts only for the question just asked, a saved answer changes only when we asked about it, and a business name or description must be made of words the customer actually typed.

  3. Pick the next question

    A fixed priority order, plus typed follow-ups for each industry: a roofer is asked roof height and torch-down work, a daycare its licensed capacity and pool. Anything answered, unknown or not applicable is skipped, so most owners answer about seven questions. A second model call only words the chosen question naturally.

  4. Confirm before saving

    Vague numbers are held back and read back to the customer to confirm. When nothing is left to ask, code writes the summary from the validated answers, so it can't misstate anything. The customer approves it or corrects it.

  5. Coverage and flags by rule

    Suggested policies and hard-to-place flags (roofs over 40 ft, torch-down work, alcohol over half of sales, two or more recent claims) come from plain Python rules a broker can read and disagree with, never from the model.

Measured, not guessed

50 simulated owners, each with known true facts and 1–2 facts they don't know, talk to the same agent this site runs. Every field it records is scored against the truth. Latest full run: 2026-11-08.

Field accuracy

99.3%

every field that applies to the business

Invented values

0

fields filled that the owner couldn't have stated

Conversations finished

90%

within 25 customer messages

Questions asked

7.5

on average, instead of a 25-field form

Cost per conversation

$0.0029

gpt-5-nano, with per-session and daily spend caps

See every conversation, field by field

Built with

FastAPI, Jinja2, vanilla JS
one Python app for the pages and the API
OpenAI gpt-5-nano
forced tool calls for extraction, low reasoning effort to keep it fast
Pydantic v2
every value validated in code, the ACORD 125-style application schema
SQLite with SQLModel
chat sessions, a cost log of every LLM call, eval runs
pytest
unit tests with a fake model, no live API calls
Own Ubuntu server
nginx with Let's Encrypt HTTPS in front, uvicorn kept running by systemd

The code, the tests and every eval report are in the repository on GitHub.

Try it: describe your business