CareerTrip

Inspiration

The idea started from a frustration a lot of us have felt firsthand: wanting to pivot or grow in a tech career, and drowning in advice that's either too generic or flat-out wrong. Ask a generic chatbot which certification to get, and it might invent one that doesn't exist. Ask it what a course costs, and the number is a guess dressed up as a fact.

We kept coming back to one persona while designing: Sarah, a developer with four solid years of experience who wants to move toward Cloud/DevOps but has no idea where to start. Not because she lacks drive — because the noise around her (a thousand tutorials, opaque certification pricing, job postings with impossible requirement lists) makes it nearly impossible to find a first real step. We didn't want to build another chatbot that talks confidently about things it doesn't actually know. We wanted an agent that only tells you something is true once it has actually checked.

What it does

CareerTrip runs a full career-transition pipeline, end to end:

  1. Adaptive diagnostic — Gemini generates follow-up questions dynamically based on the user's answers, instead of a static quiz.
  2. Skills gap heatmap — a visual matrix comparing current skills against the target role.
  3. Verified roadmap — a milestone-based learning plan where every suggested certification and resource is checked against a live web search before being shown, never left to the model's imagination.
  4. Real opportunity radar — actual job listings matched against the user's profile, not generated text pretending to be listings.
  5. CV tailoring — resume bullet points rewritten for a specific role using the STAR method, aligned with what recruiters and ATS filters actually look for.

How we built it

  • Frontend: React 18 (TypeScript) + Vite, styled with Tailwind CSS, with motion handling transitions and Recharts/D3 powering the skills heatmap and progress visualizations.
  • Backend: Node.js + Express (TypeScript) as the orchestration layer between the frontend and Gemini, keeping API keys server-side.
  • AI engine: Google Gemini via the @google/genai SDK, handling the diagnostic, gap analysis, roadmap generation, and CV tailoring.
  • Grounding: Google Search Grounding is the piece we're proudest of architecturally. The LLM is only ever allowed to propose a certification name or a resource title — it never gets to assert a price or a URL. Every such claim is resolved through a real search afterward and tagged as verified (or explicitly marked as unverified/mock), so the UI never quietly passes off a guess as a fact.
  • Persistence: Firestore on Firebase's free Spark tier, with anonymous authentication so a user can start using the app instantly — no signup screen, no friction — while still getting real, working cloud persistence.
  • Testing: Vitest and Testing Library, with 22+ automated tests covering both UI components and backend endpoints.

Challenges we ran into

The biggest one was architectural, not technical: deciding how much to trust the LLM. Our first instinct was to let Gemini generate the entire roadmap — including certifications and resource links — in one shot. It looked great in the demo and fell apart the moment we checked a certification name against reality. That's what pushed us toward the draft → resolved pattern: separate what the model is good at (structuring a plan, understanding a skill gap) from what it's bad at (knowing today's actual prices and URLs), and hand the second part off to real search every time.

The second challenge was more mundane and, honestly, more stressful under deadline: getting a Google Cloud service running without a personal credit card on hand. Standard GCP billing accounts require a payment method even for the free trial. We solved it by leaning on Firebase's Spark plan, which is genuinely free with no card required, and building our persistence layer around Firestore with anonymous auth instead of a traditional Cloud Run deployment. It ended up being a better fit for the demo anyway — zero login friction for anyone testing the project.

Accomplishments that we're proud of

  • A working pipeline that goes from a cold diagnostic to a tailored resume, not just a single-turn chat response.
  • A concrete answer to LLM hallucination that's architectural, not a prompt trick — every fact that can be checked, is checked.
  • 22+ automated tests passing in mock mode, meaning the project's reliability doesn't depend on having a live API key at judging time.

What we learned

The most valuable lesson was realizing that "trustworthy AI" isn't a prompt-engineering problem — it's a data-flow design problem. Once we drew a hard line between LLM-generated drafts and search-verified facts, a whole category of bugs (and a whole category of user distrust) disappeared at once.

What's next for CareerTrip

  • Moving from anonymous Firebase auth to full account linking, so a user's progress can follow them across devices.
  • Deeper integration with additional Google AI models (Gemma for lightweight on-device tasks, Veo for richer onboarding content).
  • Expanding the opportunity radar to more job sources and refining the match-score algorithm with real user feedback.

Built With

Share this project:

Updates

Submission history