COMPUTER SCIENCE · DUKE UNIVERSITY

Mohith Gajjela Builds tools that check results.

A benchmark hands you a number. I spend most of my time on the thing that checks whether the number means anything: a simulator you can re-run yourself, an exact answer to compare it against, and tests that fail when a claim stops being true.

MOVE THE CURSOR · SCROLL
01FIELD 01–09 · RUNS IN YOUR BROWSER

Nine studies you can
run yourself.

Each one re-runs its experiment right here in the page, on the same data the original study used, next to the original implementation. Nothing on this page is a recording of a result I got earlier.

FIELD / 01

Moving ambulances around
bought 1.4 seconds.

DISCRETE-EVENT SIM14,230 REAL DISPATCHESSELF-TESTING

Two identical fleets work through a year of real Seattle medic calls on the same clock. When the page loads, the browser engine re-runs the whole year and compares itself to the Python version I ported it from. Right now they disagree by 0.05 seconds.

OPEN IT
FIELD / 02

Reward went up.
The puzzles got easier.

EXACT DIFFICULTYLIVE POLICY GRADIENT108 PATHS

Type in any puzzle and the page counts all 108 ways to combine the numbers, so the difficulty is known exactly rather than estimated. Then two optimisers train on the same reward and you can watch one of them hit a gradient of exactly zero and stop being able to move.

OPEN IT
FIELD / 03

Play me the three seconds
that justify that sentence.

10,239 ORAL-ARGUMENT TURNS8 ERROR CLASSESAUDIO-LINKED EVIDENCE

A model writes up a Supreme Court argument, and every sentence it produces gets traced back to who said it and when, down to the second of audio. Plant a specific error yourself and see whether the detector catches it.

OPEN IT
FIELD / 04

Prompt defenses kept losing.
Runtime checks didn't.

REINFORCE ON CPU9,000 ATTACK SPACERULES CHECKED IN CODE

An RL attacker hunts for ways to make a sandboxed tool-using agent break rules that are checked in code rather than judged by another model. Every time it finds one, I upgrade the defense and it starts hunting again.

OPEN IT
FIELD / 05

Same providers, same calendar.
23 more people seen.

MIN-COST FLOWDUAL CERTIFICATEONLINE PRIMAL-DUAL

A marketplace where a provider can only see you if they hold a licence in your state, a contract with your insurer and an opening before you give up. Taking the first slot that fits is what most systems do, and it leaves people unseen. Press run and watch the solver take bookings apart and put them back together.

OPEN IT
FIELD / 06

It never asks you a question
about right and wrong.

MILLISECOND REACTION TIMED-SCORE + EZ-DIFFUSIONLIVE RELIABILITY

Fifty-six cards, each carrying a phrase about something a person did. You are told to ignore the words and drag by colour. Three minutes later it tells you how much slower you were at pulling the bad ones toward yourself. Built from a Duke lab's public preregistrations, and it shows you its own reliability rather than hiding it. This one looks different on purpose.

TAKE IT
FIELD / 07

Version 1.4.1 started reading
your AWS credentials.

SANDBOXED INSTALL SCRIPTS86 REAL INSTALLS0 SPURIOUS BLOCKS

Nobody gets compromised by an obviously malicious package. They get compromised by a patch release of something they already trust. Both versions of an install script actually execute in the page, and the diff shows which powers the new one picked up. The right-hand script is editable, so you can try to sneak something past it.

RUN THE DIFF
FIELD / 08

Which one of these
do I rotate first?

READ-ONLY PROBES15 DECLARED ENDPOINTS1 JUSTIFIED POST

A scanner tells you a string looks like a key. It never tells you that the key publishes to four million installs a week, or that IAM would let it make itself administrator. Move a credential between a keychain, a committed repo and a synced folder and watch the blast radius and the rotation order recompute underneath you.

REARRANGE IT
FIELD / 09

Cars don't vanish between sensors.
That rule is enough to find the jam.

PHYSICS-INFORMED NETTRAINS IN THE PAGE269 DAYS OF CALTRANS DATA

A two-mile highway loop with cars that follow a real car-following model and four pavement sensors you can drag around. Drop cars, stall one between two sensors, and a small neural network trained live in a background thread, with vehicle conservation built into its loss, works out where the jam is in the blind spots. The same model was then run 187 times on real freeway data; the numbers, including where it loses, are on the page.

MAKE A JAM
02SYSTEMS · TOO BIG FOR A BROWSER TAB

And seven that won't fit
inside a page.

The nine above run inside this page. These seven can't. The first is six deployed services and two Postgres databases, so instead of a demo I'll just give you a login and let you settle a real match on it. The second only proves anything when real processes crash, flood and get redeployed on real sockets, so you get the recorded runs instead, every 100 milliseconds of them. The third needs Quantinuum's quantum emulator, which is a Rust program, so it gets the same treatment. The fourth is a replicated control plane whose real numbers only exist when processes crash on real sockets, so its page replays a recorded run and also runs the same Go code in your tab as WebAssembly. The fifth is an image index built by a Node pipeline around a 150 MB vision model, so the page ships the finished index and only pulls the model into your tab when you type your own search. The sixth is 47 tumor-segmentation models trained over two and a half hours of CPU time, so its page shows their real predictions instead of training anything in your tab. The seventh needs a local language model and PyTorch, so you get a recorded session plus every benchmark output to browse.

SYSTEM / 01

A score doesn't count
until both teams agree.

IMMUTABLE LEDGER7 INVARIANTS960 TESTS2 LIVE TENANTS

A charity beach volleyball app, plus the competition platform underneath it. Both teams submit the score from their own phones and the system compares hashes instead of trusting either side. Payouts come out of a pure function, and a human has to close the contest behind a frozen preview before any of it moves. The ledger is append-only because the database role it runs as genuinely cannot update or delete a row.

OPEN THE WRITE-UP
Sideout, live
SYSTEM / 02

The origin recovered.
Its own retries kept it down.

PAGE IS A RECORDED DEMOWORKING GO REPO6 A/B EXPERIMENTSREAL WIKIPEDIA TRAFFIC0 REQUESTS DROPPED ON DEPLOY

An edge gateway: a proxy, five cache nodes and three origins, with the parts a CDN leans on. Consistent hashing, request coalescing, retry budgets, circuit breakers, load shedding and restarts that hand the open socket to the new process. Every experiment runs twice on identical traffic with one mechanism switched off, so you can watch a cache node die, a page go viral and an origin get buried by retries nobody is waiting for, side by side. The page replays recorded runs. The gateway itself is on GitHub, and it runs on Linux and macOS in front of any plain-HTTP server.

WATCH THE REPLAYS
Switchyard, recorded A/B replay
SYSTEM / 03

The test passed.
The program was wrong.

PAGE IS A RECORDED DEMOWORKING PYTHON PACKAGEGUPPY + SELENE11 PLANTED BUGS0 FALSE ALARMS IN 4,800 RUNS

A CI gate for quantum programs. Their right answer is random, so each test checks the shape of thousands of outputs with statistics that cap both flaky failures and missed bugs at 1 in 1,000, and stops spending shots once the answer is clear. Three of the eleven bugs I planted pass every normal measurement every time, and one extra check in a different basis catches each of them in 250 shots.

WATCH A BUG GET CAUGHT
Shotgate, recorded replay of a phase bug
SYSTEM / 04

The leader died mid-rollout.
Every region still landed once.

PAGE RUNS THE REAL CODE IN WASMWORKING GO REPORAFT + FSYNC'D WAL196 MS MEDIAN FAILOVER0 DOUBLE INSTALLS IN 10,000 JOBS

A deployment control plane for cloud regions that drop off the network, or never had one. Three replicas keep one Raft log of what every region should run. Connected regions pull from it, and an air-gapped one only accepts signed packages carried in by hand. Kill the leader, cut a region off, crash a worker between installing and reporting back, or tamper with a package in transit, and every region still ends up on the right version exactly once. The page replays a recorded run and runs the Go code in your tab, compiled to WebAssembly. The failover times come from real processes on real sockets.

TRY TO BREAK IT
Airlock, leader crashed and eu-west partitioned
SYSTEM / 05

CLIP matched the look.
The board matched the taste.

PAGE IS A DEMOREAL CLIP, IN YOUR BROWSER100 LICENSED IMAGESRECALL@10 0.70 TO 0.84

Visual search the way Pinterest does it, small enough to inspect. Every image and query goes through a real CLIP model, then a graph of visual neighbors and board-mates re-ranks the results with a personalized PageRank walk. Flip one switch to compare against CLIP alone: for a brand-new pin with its board hidden, the graph puts 84% of its board-mates in the top ten, against 70% for CLIP. Drag a box around any object to search with just that region.

COMPARE THE RANKINGS
Mosaic comparing CLIP-only and graph-aware rankings
SYSTEM / 06

Two labeled scans
did the work of about six.

PAGE IS A RECORDED DEMOWORKING PYTORCH REPO452 MOUSE CT SCANS47 TRAINING RUNSDICE 0.32 TO 0.49

A generator that paints realistic fake tumors into real mouse micro-CT scans, so a tumor-finding model can learn from a handful of hand-outlined ones. With two labeled scans, adding the fakes did about as well as six real ones and cut tumor-volume error from 75% to 35%. Simple spheres are the control: they help a little at first, then make the model worse once there are eight labeled scans. By then the fakes stop helping too, so it's a cold-start tool.

CHANGE THE LABEL BUDGET
Fauxgraft: real-labels-only model vs model trained with fake tumors, same held-out mouse
SYSTEM / 07

Forcing valid JSON
made the answers worse.

PAGE IS A RECORDED DEMOWORKING PYTHON REPO5 LOCAL MODELS96 REQUESTS89% TO 96% WITH A 30-LINE REPAIR

Type plain English at a mouse CT scan, and a 3-billion-parameter model on a laptop drives the viewer through tool calls while the tools produce every number. I benchmarked five ways of getting structured output from small local models. Grammar-constrained decoding made every call valid and still came out 11 points behind the models' built-in tool calling, because they padded their answers with actions nobody asked for. A schema repair took the 8B model from 89% to 96%.

REPLAY THE SESSION
ScanSpeak replay: tool calls and viewer state for a recorded session
SYSTEM / 08

One prompt caught 43%.
The pipeline caught 99%.

LIVE APPSYNTHETIC PATIENTS ONLYVOICE CHECK-IN140 HELD-OUT VISITS99.4% RECALL, 99.1% PRECISION

A doctor's visit conversation becomes proposed changes to the patient's medication list, each linked to the sentence that justifies it, and nothing is filed until the clinician signs. Before the visit, the patient reads their pill bottles to a voice assistant that only asks about what the chart can't settle. The language model only pulls out what was said; a rules engine decides. On 140 held-out synthetic visits the pipeline found 99.4% of the medication changes; one big prompt found 43%. Speech recognition and voices run on CPU.

TRY THE LIVE DEMO
Reconcile clinician view: proposed medication changes with evidence quotes from the visit and the pre-visit check-in
03APPROACH

I'd rather find out
I'm wrong early.

Most of what I build is really a way of testing something I already assumed was true. The ambulance project started as "relocating units helps, let's measure how much" and ended with the opposite answer: just parking the same eight units in better spots beat moving them around all year. The self-play project started as "the generator will learn to sit right at the edge of what the solver can do" and ended with me taking back three of my own claims, each time because of a test I wrote to try to break the previous one.

That's why I care more about the checks than the results. Knowing the exact answer to compare against, having a control matched on difficulty, writing tests that fail when a claim stops being true: that's the part still worth something a year later.

04WHAT I ACTUALLY FOUND
05CONTACT

Email me something
specific.