The problem and who it helps

A headline percentage can fall even when every group improves. For a student reading a research table, reporting only that headline hides the difference between changing group outcomes and changing group composition. MixShift is a small Scientific Research learning tool for making that distinction inspectable.

In the synthetic OCR example, Returning improves from 90/100 to 19/20 and First-time improves from 1/10 to 16/80. Yet the total falls from 91/110 (82.73%) to 35/100 (35%). MixShift shows the resulting -47.73 percentage-point change and lets the reader trace its decomposition back to the original counts. This is a worked example, not a claim of measured classroom impact.

What it does

MixShift lets a learner read a small count-table image, inspect the transcription, and explain why an aggregate rate can move against every group rate. Neural OCR proposes text; the user corrects and confirms it. The arithmetic engine then separates within-group change from composition change, exposing both replacement orders and an exact fraction identity.

Why the review step matters

An OCR mistake can reverse a statistical conclusion. The app displays the source image, rejects ambiguous or invalid counts, and invalidates approval whenever the transcription changes. Applying counts clears the previous analysis and disables export until recalculation. Recognition is not data verification.

How it works

Tesseract.js 7 performs English OCR in a browser worker. The image is processed locally after versioned runtime/model downloads from jsDelivr. There is no paid inference API. The analysis uses reduced BigInt fractions and established symmetric rate-decomposition mathematics, with Das Gupta and Kitagawa credited in the README. It does not estimate causation, statistical significance or uncertainty.

Validation

Fourteen engine and import tests pass, including 6,561 synthetic arithmetic profiles. An unchanged exact-arithmetic engine was previously cross-checked against a separate Python Fraction reference on 15,735 profiles. Current browser testing recognized one clean synthetic two-row image exactly, then reviewed, applied and analyzed it to obtain -47.73pp with zero exact residual. Browser checks also rejected 9O and disabled application after a text edit. These bounded checks do not establish general OCR accuracy or measured educational benefit.

Engineering lessons demonstrated by the build

The development evidence exposed two separate reliability problems: correct arithmetic does not guarantee correct transcription, and a previously valid result can become misleading after its inputs change. The implemented response is a visible original-image preview, editable OCR text, strict count validation, approval tied to the exact reviewed text, and automatic invalidation of stale analysis. The browser integration also required the Tesseract.js default export rather than an assumed named export; this was corrected and exercised on the deployed app.

A next evaluation would compare manual entry with OCR-assisted entry on a fixed set of varied synthetic tables, measuring transcription errors and correction time separately from arithmetic correctness. A learner study would then test interpretation of rate reversals. Neither evaluation has been completed, so no speedup, general recognition accuracy or learning gain is claimed.

Limits and next steps

OCR accepts small English count tables with a single-word group label and four integer counts. It does not infer arbitrary columns or repair numbers. First-use downloads can fail; manual entry remains available. Use consistently defined matched groups and synthetic data. The planned prerecorded Demo Day presentation remains a separate delivery obligation.

AI contribution

Codex assisted implementation, tests, explanations and design prompting. Built-in Image Gen produced a visual concept; actual application captures demonstrate the working interface. The entrant supplied contest goals and constraints. No unaided-authorship, new-statistical-method or user-study claim is made.

Built With

Share this project:

Updates

Submission history