All Work

PathPilot

An AI career tool that turns a CV and a 10-question intake into three realistic career paths and a 7-day action plan.

Full-stack · UX · SoloVisit live site
Career paths
3
Questions
10
Plan
7-day
Builder
1
02(Context)

PathPilot turns a CV and a short intake into three strengths with evidence, three career paths with fit scores, and a 7-day plan for early-career job seekers facing choice overload. It isn't a resume builder: the thesis (cut cognitive load, stay specific) lives in the model's system prompt, biased toward entry-level, reachable paths over aspirational ones.

03(Design)

The AI output is constrained, not open-ended. A Zod schema fixes the shape exactly: three strengths with evidence, three career paths with fit scores, five example titles each, and a 7-day plan. That same constraint keeps the result calm to read and the model reliable to render, so the product thesis lives in the type system, not just the prompt.

The 10-question intake is a one-question-at-a-time wizard, not a wall of fields. Each step validates on its own, a progress bar shows the end, and steps slide rather than jump, so a long intake never feels like one.

A no-login demo renders fixed sample data through the same result components as a real analysis. Prospects see the true output before signing up, and the demo can never drift from production: it's production with different input.

04(Engineering)

A Next.js App Router front end over Supabase, which provides auth, Postgres, and file storage. Access is enforced twice: row-level security scoped to the user on every table, and middleware gating the authenticated routes. An analysis runs in a single server route that reads the CV (a PDF from a private bucket or pasted text), calls GPT-4o through the AI SDK against the Zod schema, and writes the validated result back to the row, which the result page reads under RLS.

Capture
Client wizard
CV upload or paste + 10 answers
Persist
Postgres + RLS
Validated result, owner-only reads
stack   Next.js · TypeScript · Supabase · OpenAI gpt-4o · Zod
05(Why end-to-end)
Because I owned both the result UI and the model's contract, I could make one Zod schema the single source of truth, shaping what the model must return, typing the React sections that render it, and backing the demo so the sample and the live result run through identical components.
The case for one person, end to end
06(Outcome)

Public and live at pathpilot.javiertpadilla.com. Shipped end to end: account auth, the full intake wizard, PDF and pasted-CV ingestion with a scanned-PDF fallback, the schema-validated GPT-4o analysis rendered as seven sections, a dashboard history, and a no-login demo.

3
Tables, all RLS-scoped
17
Automated tests
07(What I'd do differently)

The analysis still blocks: the route awaits the full model call inline, even though the schema and a polling loader were built for a background job I never finished wiring. Next time I'd commit to the async pattern up front and add the rate limiting and visible long-CV cap the MVP skipped. The decision I'd keep is making one Zod schema the contract for the model, the UI, and the demo at once.

Next project
AXIS
Personal OS · Full-stack / Next.js · Supabase · Recharts
Back to selected work