How this works
The whole thing is one Cloudflare Worker. There is no backend server, no account system, and no database of interviews.
What happens during a turn
The adaptive part
Each question has a written rubric and a list of signals — specific ideas a good answer contains. After you answer, a model does one narrow job: tick off which signals you actually hit and give a coarse verdict. It produces no scores and never sees the rubric.
What happens next is ordinary code, not a model: cover the ground well and the level goes up, miss it and the level drops, answer partially and you get pushed on the specific gap. Level moves are capped at one step, no topic can eat the whole interview, and follow-ups cannot spiral. Keeping the judgement in code is what makes a cheap model good enough to run every turn.
Grading
At the end nothing happens until you press Grade my answers. That sends the transcript your browser is holding to a model that scores each answer against that question’s own written anchors, and has to quote you as evidence for every score. Combining those into a level is arithmetic, done in code.
It is a machine grading you against a rubric I wrote. Treat it as a prompt for your own judgement — and if a score has no quote behind it, ignore it.
Privacy
Your answers are never stored. Not in a database, not in object storage, not in logs.
- Audio never leaves your machine except as the body of one transcription request, and those bytes are discarded when the request ends.
- The transcript lives in your browser tab (
sessionStorage, which dies with the tab). Download it if you want to keep it. - The server keeps only routing state — which questions were asked and what level you are at, with no text — in an object that deletes itself when the session ends.
- Grading is a single stateless request. Nothing is written as a result of it.
The honest caveat: your answers do travel to Cloudflare Workers AI to be processed, because the models run there and not in your browser. They are not retained by this application. If that is not acceptable for something you are about to say, do not say it here.
What it is built on
- Cloudflare Workers — the whole application.
- Workers AI —
whisper-large-v3-turbofor speech to text,aura-1for the voice,gpt-oss-120bfor reading answers and grading. - D1 — holds the question bank and rubrics. Nothing you produce.
- Durable Objects — one per live interview, holding routing state only, deleted when you finish.
- Cloudflare Access — in front of everything.
A note on the questions
The bank is hand-written: 28 questions across web, cloud, code review, cryptography, threat modelling and AI security, each at four levels, each with rubric anchors describing what a 0 through a 4 actually looks like. That authoring is the real work here; the code is comparatively simple.