Inspiration

One of the biggest problems in the data and machine learning community is not just building models. It is knowing whether the data and results behind those models are actually valid. Data teams can spend almost half of their time just getting data ready before they can even build models, and reproducibility is still a major concern across research. In a Nature survey, more than 70 percent of researchers said they had tried and failed to reproduce another scientist’s experiments, and more than half had even failed to reproduce their own.

That problem gets even more dangerous in machine learning because results are often judged by a single number. A model with 99 percent accuracy looks impressive, but that number can hide a lot. It may come from the wrong data split, only one random seed, missing dataset versioning, incomplete experiment logs, or test results that are not truly independent. In those cases, the model is not necessarily better. The result is just not trustworthy.

ReproPilot was inspired by that trust gap. I wanted to build an agent that checks whether ML results deserve to be believed before they are published, submitted, or shipped. Instead of only looking at final accuracy, ReproPilot looks at the statistical and experimental context around that accuracy, including seed diversity, validation accuracy, test accuracy, metadata completeness, metric jumps, and possible leakage.

What it does

ReproPilot is an AI audit agent for ML experiment validity. Users upload a CSV of experiment runs, and ReproPilot audits whether the results are reproducible, trustworthy, and ready to publish.

The system checks for missing metadata, low random seed diversity, suspiciously high accuracy, test accuracy that is much higher than validation accuracy, large unexplained metric jumps, duplicate run IDs, missing dataset versions, and validation results being reported as test results. These are common ways that a model result can look impressive while still being unreliable.

ReproPilot produces a reproducibility score, a publication ready verdict, a detailed audit summary, a live Gemini reasoning trace, and a prioritized rerun queue. For failed runs, it explains the specific issue and gives a suggested fix. It also includes a chat interface where users can ask questions like “Why did run_004 fail?” or “Is this experiment ready to publish?” and Gemini answers using the audit results as context.

How we built it

I built ReproPilot with a Python and Flask backend, a custom HTML, CSS, and JavaScript frontend, and Gemini running through Vertex AI. The backend loads experiment data with pandas and runs deterministic audit checks for reproducibility and result integrity.

The audit logic combines rule based statistics with agent reasoning. For example, ReproPilot checks whether each model has at least three random seeds, whether test accuracy exceeds validation accuracy by more than 5 percent, whether any test accuracy is suspiciously close to 100 percent, and whether there are large jumps in accuracy between runs. It also checks whether required fields such as dataset version, random seed, code commit, and timestamp are present.

Gemini is used as the agent layer on top of these checks. Through Vertex AI, Gemini decides which audit tools to call, reviews the tool outputs, generates the audit narrative, explains failed runs, and powers the chat interface. I also added a reasoning trace panel so users can see what the agent investigated instead of only seeing the final answer.

Challenges we ran into

The hardest challenge was making the project behave like a real agent instead of a basic dashboard. I did not want Gemini to invent results, so I separated the system into two layers. Python performs the reliable audit checks and scoring, while Gemini decides what to investigate and explains the results in natural language.

Another challenge was moving from the Gemini API key setup to Vertex AI. I had to configure Google Cloud authentication, set the correct project, set the quota project, update the model version, and rewrite the Gemini calls so they used the Vertex AI client properly. I also had to fix data formatting issues so pandas and NumPy values could safely move through the backend, the Gemini calls, and the frontend.

Accomplishments that we're proud of

I am proud that ReproPilot can audit both failing and passing experiment datasets correctly. On a flawed dataset, it catches issues like suspicious accuracy, validation being reported as test results, missing dataset versions, missing random seeds, and weak seed diversity. On a clean dataset, it gives a 100 percent reproducibility score, a publication-ready verdict, and zero required reruns.

I am also proud that the project explains its reasoning clearly. The live reasoning trace shows Gemini calling tools, reviewing outputs, and forming an audit. The rerun queue turns abstract problems into practical next steps, so the user knows exactly which runs need attention and why.

What we learned

I learned that trustworthy AI systems need more than good model outputs. They need good data, good experiment tracking, and clear validation logic. A high accuracy score is only meaningful when the experiment behind it is reproducible.

I also learned how to build a more realistic agent workflow using Vertex AI, Gemini tool calling, Flask APIs, pandas based audit logic, and frontend state management. The biggest lesson was that AI is most useful when it is grounded in reliable checks. ReproPilot uses Gemini for reasoning and explanation, but the core audit results come from transparent logic that users can inspect.

What's next for ReproPilot

Next, I would expand ReproPilot beyond CSV uploads into real experiment tracking pipelines. I want it to connect directly to tools like BigQuery, Fivetran, MLflow, Weights and Biases, and cloud storage so teams can audit experiment validity continuously.

I would also add deeper statistical checks, including confidence intervals, variance across seeds, model drift detection, dataset shift detection, and fairness checks across subgroups. The long term goal is for ReproPilot to become a trust layer for machine learning teams, helping them decide not just whether a model performs well, but whether the result is valid enough to rely on.

Built With

Share this project:

Updates