The Inspiration
As a newcomer to the world of Machine Learning, I quickly realized that training a model often feels like navigating a "black box." You tweak a learning rate, change a batch size, or add a layer, then wait—only to find out the loss hasn't moved or the model is overfitting. For many new engineers, the trial-and-error cycle is the biggest barrier to entry. I was inspired to build GemiTune because I believed that if AI can write code and solve complex math, it should be able to look at my training metrics and act as a senior mentor, telling me exactly why my model is failing and how to fix it.
How I Built It GemiTune is built with a modern frontend stack using React and Tailwind CSS, designed to be a "Zero-Config" environment. The "brain" of the application is a dual-integration of the Gemini 3 API:
- Gemini 3 Flash handles the real-time diagnostic logic. It consumes the training logs and dataset schema to provide immediate hyperparameter recommendations via structured JSON outputs.
- Gemini 3 Pro is used for the "Data Remediation" phase. When the analysis detects a gap in the training data, Pro generates high-quality, schema-adherent synthetic rows to balance the dataset.
- The UI features interactive Recharts visualizations that allow users to see the direct impact of Gemini's suggestions on the loss and accuracy curves.
The Challenges
The biggest challenge was "Prompt Orchestration"—ensuring that the model didn't just give vague advice like "reduce your learning rate," but instead returned valid, parsable JSON that could be directly injected into the application's state. I had to carefully design the responseSchema to handle various dataset structures dynamically. Another hurdle was simulating a realistic training environment in the browser to ensure that the "mentor" (Gemini) had meaningful data to analyze. What I Learned
Through this project, I learned that the true power of Gemini 3 isn't just in its chat interface, but in its ability to act as a structured logic engine. By using responseMimeType: "application/json", I was able to treat the LLM as a sophisticated backend function. I also gained a much deeper understanding of how hyperparameters interact—ironically, building a tool to teach ML ended up being the best ML teacher I could have asked for.
Log in or sign up for Devpost to join the conversation.