Free, 60 minutes each, Python standard library only

Three practice rounds for AI allowed interviews

Download a round, set a timer, work it with your own AI agent, then run the checks and review your session.

Round 1 · Extend existing code

Rate limits for a small API

Extend a small currency conversion service with per key rate limiting.

9 files of existing code, 12 visible tests, 8 extra checks. Reading a service you did not write, settling the open questions in a brief, and testing behaviour over time.

Download the zip 13.3 KB

Round 2 · Debug existing code

The March billing report

Debug an invoice totals module that finance says does not match the ledger.

9 files of existing code, 7 visible tests, 7 extra checks. Finding the real cause of a bug report, using the rules the code is meant to follow, and proving the fix.

Download the zip 12.1 KB

Round 3 · Add a feature

Note sharing for a notes app

Add sharing, read only or with edit rights, to the API behind a team's notes app.

8 files of existing code, 13 visible tests, 8 extra checks. Designing access rules, keeping existing routes working, and thinking like a security reviewer.

Download the zip 12.4 KB

What is in each round?

  • A README.md with the brief, deliberately a little ambiguous, and a 60 minute limit.
  • Six to twelve files of realistic existing code, in Python 3.10 or newer with the standard library only, so it runs anywhere with nothing to install.
  • Visible tests written with unittest, some failing until the work is done.
  • A checks folder with the extra checks a reviewer would run, including one production trap the brief does not mention. Run them only after your timer stops.
  • A REVIEW.md with the rubric, a prompt to paste into your own agent so it reviews your session transcript with quotes as evidence, and where to find the transcript for Claude Code, Codex and Cursor.

How do you run one?

Unzip it, open a terminal in the folder, set a 60 minute timer and start your agent there. python -m unittest runs the visible tests. When the timer stops, run python -m unittest discover -s checks -p "check_*.py" -t . for the extra checks, then follow REVIEW.md.

Are there answers?

Each round has a reference solution that we use to prove the checks are fair: the starter code fails them and the solution passes them all. The solutions are not published, because the point is the session, not the code.