Saikiran Andey
All projects

Eigen-Rho

Built and deployed a live SQL interview platform that grades each answer by running it on Postgres (PGlite), with its own schema and read-only role per case; load-tested at 20 concurrent distinct cases with 0 errors, a 14 ms p95 and about 1.2 GB of memory.

The sample case console from eigen-rho.com: a dark SQL editor with the question for one step of a case called The Vanishing SKU and the query that answers it.
The sample case on the public site. Captured from eigen-rho.com.

The problem

A data interview should grade the query a candidate writes, not a model’s opinion of it. I wanted every SQL answer run on a real Postgres engine and compared with the right answer, with each case fenced off from the others.

How it is built

A candidate’s query runs on the server against a seeded database and is compared with the right answer. The model never decides a grade.

One shared Postgres engine (PGlite) hosts every case as its own schema with its own no-login role, so memory grows with the number of distinct cases, not the number of sessions.

  1. Candidate’s queryWritten in the interview.
  2. SQL workerQueues the query for the shared engine.Fixed here
  3. One shared PGliteEvery case lives in the same engine.
  4. Schema and role per caseA case can only read its own schema.
  5. Compare result setsThe answer’s rows against the right answer’s rows.

Lesson

Pushed is not live. Nothing merges to main without an end-to-end test.

What broke, and the fix

In the step SQL worker

Before the fix

every session waiting on one shared engine build counted as a build, so 30 cold starts on one case tripped the recycle limit: 0/240 OK

After the fix

count one build per engine actually created: 240/240 OK, 0 recycles, p95 30ms

Caught by my load test. Fixed and shipped. 5d3f8d9, 2026, private repo

Run it here

A stand-in written for this page with made-up cases. Eigen-Rho’s code is private.

Running it needs JavaScript. Everything above reads without it.

Loading the bench