96-Well Plate Analyzer
Browser-only analysis for 96-well plate experiments.
Map the wells, add the readings, and get results you can follow back to the samples.
Jennifer Naomi Nguyen · browser tool · Public research prototype · May 2026 · built with Claude Code and Codex
Open the interactive demo · GitHub repository
README · ARCHITECTURE · TECHNICAL · source
Why I built it
I spent years working with plate data in the lab. The repetitive part was familiar: copy the reader output, match the wells to samples, apply corrections, and check that the spreadsheet still pointed at the right cells.
This started as a small prototype, built in about a day. Coming back to it gave me a chance to turn that first workflow into something more useful: separate plate maps and readings, clearer calculations, and graphs that keep the individual samples visible.
Two ways through a plate
Group comparison combines technical repeats by sample ID, then shows group means as bars with optional sample circles and SD or SEM error bars.
ELISA quantification adds standard concentrations, a four-parameter logistic curve, sample dilution factors, and flags for readings outside the calibration range. The resulting sample concentrations can feed into the same group charts.
Both workflows keep the underlying wells available. One sample measured three times still counts as one sample in the group comparison, not three independent observations.
Try the example
Choose an analysis mode and select Load example. The ELISA example includes technical repeats, a diluted sample, and an out-of-range sample. All example readings are synthetic.
Follow the demo or open the app full screen for more room. The embedded demo runs separately from the portfolio assistant. Its analysis stays in the browser, and it makes no model calls.
What changed during the rebuild
The first parser tried to accommodate inconsistent reader exports. In this version, it preserves empty cells and rejects incomplete numeric grids instead of guessing where a reading belongs. Editing an input clears the old result.
I also wanted the graph to show both the summary and the variation. Bars give me the quick comparison; the circles show the sample values underneath. Statistical tests are optional and operate on samples, not repeated wells.
Built together, checked explicitly
Claude was a development collaborator on the original prototype. Codex helped with this revision, including the ELISA workflow, calculation checks, exports, and responsive interface. I supplied the workflow decisions and assay context, and we refined it together.
The current source includes calculation tests and desktop/mobile production browser checks. The numerical checks use known synthetic curves and expected values calculated outside the JavaScript implementation with SciPy. The next useful comparison is a real, de-identified plate analyzed with matching settings in an established tool. This is a research prototype, not a validated assay-analysis package.
Architecture follows the data through the app. Technical notes explain the calculations, and source links directly to the implementation.