SysCodeLab

AI writes code. Engineers solve problems.

LeetCode is over.
Can you solve what actually breaks?

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.

checkout-api · pool.go21:04:12
  1. 21:04:09infopool: acquire wait=2ms in_use=18/24
  2. 21:04:11warnpool: acquire wait=1.9s in_use=24/24 queued=61
  3. 21:04:12errorpool: context deadline exceeded after 5s
  4. 21:04:12errorcheckout: 503 upstream_timeout order=8f21c4

p99 latency

340ms→8.2s

The problem

Nobody gets paged at 3am to invert a binary tree.

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.

LeetCode

Invert a binary tree.

You study it, you recognise the pattern, you pass. A model does it in two seconds.

SysCodeLab

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

What counts is how you got there.

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.

LeetCode

Input → Algorithm → Output

SysCodeLab

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

  1. 01Symptom
  2. 02Investigation
  3. 03Hypothesis
  4. 04Root cause
  5. 05Trade-offs
  6. 06Fix
  7. 07Validation

Sample

This is how a challenge arrives.

No mockup: what follows is a published challenge, with the material it hands you and the first questions it asks.

The N+1 That Shipped

A two-line change to the response mapping turns one query into eleven thousand.

The change
 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 log
  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)
The shape of the page for that merchant
orders on the page               250
order_items across the page      10,542

What it asks

  1. Two lines produced 11,043 queries. Do the arithmetic on where each one comes from, using the numbers under "the shape of the page".
  2. Each of those queries takes about 0.3ms and the database is at 22% CPU. So where do the four seconds actually come from?
Read this challenge in fullNo account, no credit.

Coverage

Where production usually breaks.

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.

  • 01

    Debugging

    Follow the symptom back to the cause through logs, traces and code.

  • 02

    Performance

    Find what got slow, why it got slow, and what it costs to fix.

  • 03

    Database

    Query plans, indexes, locks, connections and the surprises in between.

  • 04

    Architecture

    Decide what to build and defend the trade-offs you accepted.

  • 05

    Distributed Systems

    Retries, idempotency, consistency and partial failure.

  • 06

    API Design

    Contracts, versioning, timeouts and resilient boundaries.

The library

Broken systems, the way you would find them.

Each one takes 30 to 60 minutes: you read the material, write your diagnosis, and only then see the written solution.

DebuggingJunior

The search that ignores the filter

The cache hands the person who filtered by one city the list somebody else asked for.

CachingCache keysTTL5 min
DebuggingSenior

The Connection Storm

Under load the service exhausts its database connections. The pool config looks right.

Connection poolingResource lifecycleCapacity planning20 min

FAQ

Questions

Do I write and run real code?

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.

Who grades my answer?

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.

Is there one right answer?

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.

What does it cost?

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.

Who is this for?

People walking into a senior or staff interview, and people who want the production scars without waiting for the next outage.

I hire engineers. Can I use this to evaluate candidates?

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.

Is it available in Portuguese?

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.

None of this works by reading it.

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.