Inspiration The job market is tougher than ever, and for many candidates, the most nerve-wracking part isn't the skill test—it's the actual interview conversation.I realized that while there are plenty of resources to learn coding or marketing, there are very few ways to practice the soft skills of an interview without paying for an expensive coach or awkwardly roleplaying with a friend. Most "AI interview" tools are just static question generators.I wanted to build something dynamic. I wanted to leverage Gemini 3.0 to create a simulator that doesn't just ask questions, but listens, analyzes, and digs deeper—exactly like a real hiring manager would. The goal was to democratize access to high-quality career prep by turning any Job Description (JD) into a personalized training session.🛠️ How I Built ItThe application is built as a responsive Single Page Application (SPA) using React and Tailwind CSS, deployed on Vercel for global accessibility.The core intelligence is powered entirely by the Google Gemini 3.0 API. The architecture follows a three-stage pipeline:Context Injection: When a user pastes a Job Description, the app constructs a sophisticated "System Instruction." This prompts Gemini to adopt a specific persona: professional, inquisitive, and strict about digging into vague answers.The Conversation Loop: We maintain the state of the conversation client-side. Every time the user replies, we send the updated history to Gemini. This utilizes Gemini's long-context window to ensure the AI remembers details you mentioned 5 minutes ago (e.g., "You mentioned managing a team earlier... tell me more about that").Structured Evaluation: The technical highlight is the "Feedback Mode." We use a specialized prompt to force Gemini to switch from "Interviewer" to "Evaluator" mode. It processes the entire transcript and outputs a valid JSON object containing: A numerical score ($Score \in [0, 10]$)Arrays for Strengths and ImprovementsA Hiring RecommendationThis JSON data drives the visual dashboard at the end, turning text into actionable insights.
🧱 Challenges I FacedThe biggest challenge was Prompt Engineering for Behavior Control.The "Nice Guy" Problem: LLMs are trained to be helpful assistants. Initially, Gemini wanted to say "Great job!" after every answer. I had to rigorously tune the system prompts to force it to be neutral and inquisitive—to ask follow-up questions instead of giving validation.JSON Consistency: In the feedback phase, the frontend relies on receiving perfect JSON to render the charts. Early versions would sometimes include conversational filler ("Here is your JSON..."). I learned to use specific strict instructions to ensure the output was purely machine-readable code.Vercel Deployment: Moving from a local dev environment to a production build required configuring environment variables securely and handling client-side routing rewrites, which was a great learning experience in DevOps.
🧠 What I Learned Building this project taught me that Prompt Engineering is effectively a new form of coding.I learned that Gemini 3.0 excels at Persona Adoption. It didn't just "read" the text; it understood the intent of the Job Description. If I pasted a JD for a Senior Developer, it asked about architecture. If I pasted one for a Sales Lead, it asked about quotas.Most importantly, I learned the power of Structured Output. By constraining the AI to output JSON, we can transform a "chatbot" into a full-fledged "software application" with UI components driven by AI logic. This project proved to me that the future of UI is dynamic, generated on the fly by the intelligence behind the API.