Mike's Checks
Checks

Mike's Checks/gpt-5.6-luna/10 talkform

10 talkform

gpt-5.6-lunaCodex CLIhigh effortrun 22 Aug 2026

Compare models
6/7
checks passed
86%
▸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

_screenshots_auth-after.png
ANSWER.md the model's output · 1.46 KBdownload

Sonora deliverable

Built a runnable Typeform competitor prototype with a voice-first respondent experience.

Start here

npm install
npm run dev

Then open http://localhost:5173 and click “Continue with demo workspace”. The demo credentials are maya@northstar.design / demo1234.

Service keys

No paid key is required for the included browser voice demo. To enable server-side natural-language extraction and more natural replies, provide:

OPENAI_API_KEY=...
OPENAI_MODEL=gpt-4o-mini
SONORA_AUTH_SECRET=...

These are documented in .env.example. I assumed OpenAI for the optional AI layer because the brief did not specify a provider; the browser Web Speech fallback keeps the app usable while keys are pending.

What is included

  • Auth: register, login, logout, signed httpOnly cookie session, bcrypt password hashing.
  • Backend: structured forms, ordered questions, required/type metadata, responses, and answer maps keyed by question ID.
  • Frontend: overview dashboard, forms list, form builder, responses, response detail drawer, settings, auth, and a public-style voice interview.
  • Seeded data: one live “Customer discovery call” form and three example responses.
  • Verification: npm run build passes; auth → current user → forms API smoke test returns 200.

Local persistence uses data.json, created automatically by the server. For production, replace that adapter with a durable database and rotate SONORA_AUTH_SECRET.

Checks

6/7
Script checks 3/4answered by a program
fail

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.

not exercised — reached an interview but could not submit a turn; its own model-call endpoint rejected our payload (POST /api/interview/message -> 400 (payload rejected), POST /api/interview/message -> 400 (payload rejected)), so the model-call branch was never entered

pass

App startsboots

the app installs, starts, and serves HTTP on a port

pass

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.

pass

Screenshots capturedscreenshots

all three of landing.png, builder.png and interview.png were captured. FAIL without a browser.

Judge checks 3/3judged by Claude
pass

Q1Clear landing page pitch

Judge's reasoning

Headline "Let people tell you." plus "Structured insights, captured in the flow of a real conversation" states the reader-facing promise 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.

pass

Q2Distinctive design

Judge's reasoning

Deliberate ink-navy/lime palette with split-screen auth, considered serif-italic display type, real icon set and clean dashboard/builder spacing — no purple-on-black gradient slop or emoji card grid.

▸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").

pass

Q3Complete user journey

Judge's reasoning

Builder defines typed required questions (short_text/long_text/email/yes_no) saved via POST /api/forms, Interview iterates that form's questions and sends each with the full field schema to /api/interview/message for extraction, and answers are persisted as an object keyed by question id.

▸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.