Verified statistical research on tabular datasets. Point it at a CSV or Kaggle slug and it runs a full research loop — with the constraint that every number the LLM reports is independently recomputed by a deterministic verifier before it reaches the report.
- Profile — deterministic dataset profile + data-quality scan (no LLM involved)
- Plan — an LLM proposes research questions against the profile; you approve/edit them at a gate (CLI or app)
- Explore — analysis code runs in a live Jupyter kernel
- Verify — every reported statistic is recomputed from canonical formulas by
verifier.py(Welch, ANOVA, Pearson/Spearman, chi², Mann-Whitney, Kruskal, linear/logistic regression, grouped variants) and marked confirmed / discrepancy / unverifiable. Benjamini-Hochberg correction is applied once across all rounds, with an effect-size floor. - Follow up — a findings-informed second round, gated again
- Publish — journal-style report (95% CIs, robustness lines, data-quality section, house-style charts) + a cold-run-verified notebook that re-runs on Kaggle as-is, with optional gated Kaggle publishing (private by default) and portfolio export
- CLI:
python run.py <csv-or-kaggle-slug> - App: Electron + React three-panel UI over a stdio JSON protocol — gates pause the session for review, reports are editable in-place, old runs can be re-rendered
Nothing is hardcoded. Kaggle credentials come from KAGGLE_USERNAME/KAGGLE_KEY env vars (or kaggle.json); the LLM key loads via env var. Publishing to Kaggle requires an explicit identity confirmation gate.
~220 across the Python engine and UI. The verifier is exercised against known-answer statistical fixtures.
Working and in active use — reports and figures from real runs feed the research section of my portfolio. No license; all rights reserved.