The search that ignores the filter
The cache hands the person who filtered by one city the list somebody else asked for.
AI writes code. Engineers solve problems.
A platform of real engineering and system design challenges. Practice for the technical interview, and for the day the system actually breaks.
Free to start: read any challenge without creating an account.
Answering and opening the solution uses one of the 3 credits that come with an account. No card.
p99 latency
340ms→8.2s
The problem
Worth knowing, genuinely: data structures and complexity show up the day you choose between an index and a cache. And a model inverts the tree faster than you can type the signature. Reading a latency graph and deciding where to start, it does not.
Invert a binary tree.
You study it, you recognise the pattern, you pass. A model does it in two seconds.
Thursday, 9pm: payments started going out twice. Here are the logs.
No pattern to recognise. You investigate, decide, and defend the call.
How it works
Every challenge hands you the system as you would find it: architecture, the code that matters, logs, metrics and config. Then it asks what you would do about it.
Input → Algorithm → Output
SysCodeLabEach step is a question in the challenge. You answer in writing and, when you submit, the solution written by an engineer opens next to it. Nobody scores you — the comparison is yours.
Sample
No mockup: what follows is a published challenge, with the material it hands you and the first questions it asks.
A two-line change to the response mapping turns one query into eleven thousand.
export function toOrderResponse(order: Order) {
return {
id: order.id,
reference: order.reference,
totalCents: order.totalCents,
+ customerTier: order.customer.tier,
+ itemNames: order.items.map((item) => item.product.name),
};
} query 3.1ms select * from orders where merchant_id = $1 and placed_on = $2 limit $3
query 0.4ms select * from customers where id = $1 limit 1
query 0.5ms select * from order_items where order_id = $1
query 0.3ms select * from products where id = $1 limit 1
query 0.3ms select * from products where id = $1 limit 1
query 0.4ms select * from customers where id = $1 limit 1
... 11,037 more
200 OK in 4312ms (db 4021.7ms)orders on the page 250
order_items across the page 10,542What it asks
Coverage
Writing a good one takes a while: the logs have to match the story, and the solution has to survive an argument. The next ones land in these categories.
Follow the symptom back to the cause through logs, traces and code.
Find what got slow, why it got slow, and what it costs to fix.
Query plans, indexes, locks, connections and the surprises in between.
Decide what to build and defend the trade-offs you accepted.
Retries, idempotency, consistency and partial failure.
Contracts, versioning, timeouts and resilient boundaries.
The library
Each one takes 30 to 60 minutes: you read the material, write your diagnosis, and only then see the written solution.
The cache hands the person who filtered by one city the list somebody else asked for.
Under load the service exhausts its database connections. The pool config looks right.
FAQ
Not yet. Today you get the system (context, architecture, code, logs, metrics) and you answer in writing: what is causing this, what you would change, what that choice costs, and how you would know it worked. Running the broken system yourself is on the roadmap.
Nobody — there is no AI scoring you and no human reviewer waiting on the other side. You submit, your answers lock, and the solution written by an engineer opens next to them. Seeing where your reasoning diverges from it is the work, and it is the part that teaches.
Almost never. A solution different from ours can be right when the trade-off holds up. Every challenge opens with the root cause, the fix we would pick, the alternatives and how to validate it. It is there to compare reasoning, not to mark you against a key.
Reading any challenge is free and does not even ask for an account. The credit comes in when you want to answer and open the solution: one per challenge, and a new account comes with three. Buying more credits does not exist yet.
People walking into a senior or staff interview, and people who want the production scars without waiting for the next outage.
Not yet. That is the next step for the product, and there is a page about it, with a waiting list, linked in the footer.
Yes. The interface is fully translated. Challenges are written in Portuguese and translated to English as they go — when one has not been translated yet, the card says so before you open it. Code, logs, commands and technology names stay as they are.
Open one and read it through — that asks for no account — and if it gets you, write down what you would do. It takes 30 to 60 minutes, and nobody is timing you.
Reading asks for no account. Answering uses one of the 3 credits that come with it, no card.