Mike's Checks/grok-4.6/10 talkform
10 talkform
grok-4.6Grok CLIhigh effortrun 1 Sep 2026
▸Instructions — the case's current instructions; none were saved with this result
build a typeform competitor where the backend is identical to typeform with structured questions and answers, but the frontend is purely an AI voice interview, with the AI interviewer aware of what structured data it needs to fill in for the user, but asking in a more natural conversational way. get it running including auth just ask me for the API keys for the services you need.
Answer
Talkform is running
A Typeform competitor is in this directory: structured forms and answers on the backend, a voice-only AI interview on the frontend, with email/password auth.
How to use it
The server is started with ./run.sh (or python3 run.py) on http://127.0.0.1:8080.
| What | Where |
|---|---|
| Landing | http://127.0.0.1:8080/ |
| Sign in / register | http://127.0.0.1:8080/login |
| Form builder + responses | http://127.0.0.1:8080/app |
| Demo interview | http://127.0.0.1:8080/to/founding |
| API docs | http://127.0.0.1:8080/docs |
Demo account (seeded on first boot)
- email:
demo@talkform.ai - password:
talkform-demo
Register a new account from /register if you want your own workspace.
API keys (assumption, not a prompt)
The prompt said to ask for keys. The output contract said not to ask interactive questions, so keys were taken from the environment:
OPENAI_API_KEYwas present but empty.OPENROUTER_API_KEYwas present and is used as an OpenAI-compatible LLM (openai/gpt-4o-mini).- Speech-to-text and text-to-speech use the browser Web Speech API, so no audio vendor key is required.
- If the LLM key is missing or the call fails, a rule-based interviewer still walks the schema (email regex, yes/no, numbers, choice labels).
To point at OpenAI instead, set OPENAI_API_KEY (and optionally LLM_MODEL) in .env.
What was built
Backend = Typeform data model
- Forms, fields, refs, types, properties, validations, welcome/thank-you screens, logic/hidden placeholders.
- Field types: short_text, long_text, email, website, phone_number, number, date, yes_no, legal, dropdown, multiple_choice, rating, opinion_scale, nps.
- Responses stored as Typeform JSON:
token,landed_at,submitted_at,metadata,answers[]with typed values (text/email/choice/boolean/number/ …). - Compatible surface at
/typeform/formsand/typeform/forms/{id}/responses.
Frontend = voice interview
/to/{form_id}is only an interviewer: orb, hold-to-talk (or space bar), spoken replies, live dossier of structured fields filling in.- The model sees the schema, already-collected answers, and missing required refs, then asks in conversation instead of reading the form.
- Creators still get a builder at
/appbecause someone has to define the structured questions.
Auth
- Register / login / logout, PBKDF2 passwords, HTTP-only signed session cookie,
Authorization: Bearerfor the Typeform API.
What I could not verify here
No browser automation was available, so the mic + TTS loop was not click-tested in Chrome. HTTP auth, Typeform payloads, and interview turns (as text transcripts) were exercised with a smoke script against the live server.
Checks
7/7App startsboots
the app installs, starts, and serves HTTP on a port
Real API callreally-calls-api
driving the app through its screens produces a real outbound OpenAI request, by any of the five evidence classes below. FAIL when neither a builder nor an interview screen could be reached, so nothing that would call the API was ever performed.
Authentication existsauth-exists
a signup or login screen carrying credential fields is reachable from the landing page or the usual routes. FAIL without a browser.
Screenshots capturedscreenshots
all three of landing.png, builder.png and interview.png were captured. FAIL without a browser.
Q1Clear landing page pitch
Judge's reasoning
Headline "Ask like a person. Store like Typeform." states the reader-facing promise (conversational asking, structured data out) rather than naming the category or tech.
▸Rubric
Landing page hook. Read `_screenshots/landing-copy.txt` and look at `landing.png` / `landing-full.png`. The reviewer's bar: "does it do a good job with like landing page copy? ... does it have a, a good hook basically" — the example he called out as beautiful reads "The form that fills itself in while you talk." FAIL if the headline has no hook: it names the category or the technology instead of promising the reader something ("AI Voice Form Builder", "Voice-powered forms with GPT-4", "Welcome to VoiceForm", a feature list where the headline should be). PASS if the headline states, in the reader's terms, what changes for them. The gold example is a bar, not a required phrase — do not reward imitation of it.
Q2Distinctive design
Judge's reasoning
Warm cream/copper editorial palette with a serif display face, considered spacing, and a rendered orb motif carried through auth and interview — no purple-on-black gradient slop or emoji cards.
▸Rubric
Design is not slop. Look at `landing.png`, `landing-full.png`, `builder.png`, `interview.png`. The reviewer's words: "design-wise, it comes out as like purple slop like this." FAIL if the interface is that default AI look — purple/violet/indigo gradients or glow on a near-black background, generic hero-plus-three-cards with emoji icons, unconsidered spacing and type. PASS if the design reads as deliberately made, in any palette, at a standard someone could put in front of users ("you could launch this as a product tomorrow").
Q3Complete user journey
Judge's reasoning
Builder defines typed Typeform fields with refs/required flags (app.js TYPES, models.FIELD_TYPES), the interview is driven by that specific form's schema (interviewer.field_brief + run_turn), and extracted values are written back as typed Typeform answers — confirmed in data/talkform.db with text/email/boolean answer objects keyed by field id and ref.
▸Rubric
The loop is coherent. The prompt asks for a backend "identical to typeform with structured questions and answers" and a frontend that is "purely an AI voice interview, with the AI interviewer aware of what structured data it needs to fill in." Look at `builder.png` and `interview.png`, then read the schema and the interview code to confirm what the screenshots imply. FAIL if any link in the chain is missing: the builder does not let a creator define typed structured questions, or the interview is not driven by a specific form's questions, or the answers are not written back to those questions as structured fields (a free transcript saved with no extraction counts as missing). PASS if all three links exist and connect.





