AI fluency interview platform. Candidates direct an AI agent to fix bugs in a real codebase. Token consumption and tool call count are tracked as first-class metrics alongside test results.
For a full description of the product and its design decisions (MVP only), see docs/REQUIREMENTS.md.
An interviewer creates a session, supplies an OpenAI API key, and sends a candidate invite link. The candidate opens the link and is dropped directly into the interview — no account needed. The candidate types natural-language prompts that instruct an AI agent to read, edit, and test the codebase. When the candidate submits, the agent runs the test suite and the session is finalized. The interviewer sees full metrics: tokens used, tool calls made, and per-test pass/fail results.
See docs/architecture/DESIGN.md for the full system architecture and docs/architecture/VIEWS.md for the UI layout.
- Python 3.11+
- Node.js 18+ and npm
- Docker (must be running — one container is spun up per interview session)
- A Supabase project (for interviewer authentication only; candidates do not need a Supabase account)
git clone <repo-url>
cd LeapCodeCreate backend/.env with the following values:
SUPABASE_URL=https://<your-project-ref>.supabase.co
SUPABASE_KEY=<your-supabase-service-role-key>
JWT_SECRET=<a-long-random-secret-string>SUPABASE_URLandSUPABASE_KEYcome from your Supabase project's Settings → API page. Use the service role key (not the anon key). Reach out to Deniz Kirca (kircad20@gmail.com) for these credentials.JWT_SECRETis an arbitrary secret used to sign candidate JWTs. Set it to any long random string (e.g. the output ofopenssl rand -hex 32).
Interviewers must be created manually in Supabase — there is no self-serve signup. Go to your Supabase project's Authentication → Users page and create an account with email/password.
cd backend
pip install -r requirements.txtUsing a virtual environment is recommended:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtcd frontend
npm installStart both servers. Each needs its own terminal.
Backend (runs on http://localhost:8000):
cd backend
python src/run.pyFrontend (runs on http://localhost:5173):
cd frontend
npm run devOpen http://localhost:5173 in your browser.
- Log in with your Supabase email/password.
- Select a problem and create a session — you will be prompted for the candidate's email and your OpenAI API key. The API key is held in server memory only and is never stored to disk or a database.
- Copy the invite URL from the session page and send it to the candidate (e.g. via email or Slack). Currently, no email is sent automatically.
- Observe the session live: the right panel shows tokens used, tool calls made, and test results as they update.
- Click End Session when the interview is complete.
- Open the invite URL you received from the interviewer.
- You are dropped directly into the session — no login or account creation required.
- Type prompts in the chat panel to instruct the agent. The agent can read files, write files, list directories, and run the test suite.
- The Monaco editor shows the current state of the codebase. It is read-only — all edits must go through the agent.
- Click Submit when you are ready to finalize. The test suite runs and your results are displayed immediately.
cd backend
pytestbackend/src/leapcode_app/ # FastAPI backend
frontend/src/ # React + Vite frontend
docs/architecture/ # Design documents
DESIGN.md # System architecture and data models
API.md # Backend endpoint reference
VIEWS.md # Frontend component and layout spec
docs/REQUIREMENTS.md # Product spec and constraints
| Topic | Document |
|---|---|
| System architecture, data models, security | docs/architecture/DESIGN.md |
| All API endpoints, request/response shapes | docs/architecture/API.md |
| Frontend layout and component spec | docs/architecture/VIEWS.md |
| Full product requirements and constraints | docs/REQUIREMENTS.md |