Skip to content
First Place

PivotPath

Your career isn't ending. It's pivoting. Free tools, real paths, built for the people who need it most.

Core trick

Claude parses a user's skills, work history, and time and money constraints into a skills-gap map linked to free training resources.

Tags

Built with

bright-outlookcors-middlewarecreate-react-app-(react-scripts-5)css3-frameworks-&-libraries-react-18express.jsgithub-(version-control-and-open-source)-other-dotenv-(environment-config)html5imagelanguages-javascript-(es2022-with-es-modules)libreoffice-(pdf-conversion-for-the-deck-qa)mammothmulternpm-cloud-&-deployment-railway-(backend-+-frontend-serving)o*net-web-services-rest-api-(occupation-datapdf-parsepdftoppmpopplerpptxgenjs-ai-&-apis-anthropic-claude-api-(claude-sonnet-4-20250514)rechartsriasec-profiler)-runtime-&-tooling-node.jswages

Description

PivotPath AI: Project Story Your career isn't ending. It's pivoting. Free tools, real paths, built for the people who need it most. Inspiration The starting point was a single line from Anthropic CEO Dario Amodei's essay, Machines of Loving Grace : "I want to describe a world where powerful AI systems exist and are widely deployed... where all of this is accomplished through empowerment rather than replacement ." That word, empowerment , stuck. Because the uncomfortable truth about AI's economic impact is that it is not evenly distributed. The people losing work to automation are not, by and large, software engineers or knowledge workers with the capital to retrain. They are retail clerks, truck drivers, data entry operators, junior accountants: people for whom a $3,000 bootcamp is not a speed bump but a wall. The World Economic Forum estimates that AI and automation will displace roughly 85 million jobs by 2025. Oxford's Martin School puts 47% of US occupations at high automation risk. And yet the market response to this crisis has been to build tools for people who are already doing fine. We wanted to build for everyone else. What We Built PivotPath is a free, AI-powered career transition platform with two distinct tracks: Professional Track: for workers facing displacement, focused on AI resilience, upskilling, and protecting income during a transition Student Track: for students entering a workforce already shaped by AI, focused on building careers that grow with AI rather than against it Users complete a short assessment, optionally upload a resume, and receive five personalised career paths ranked by: Match score to existing skills Automation risk (grounded in O*NET labour market data) Realistic salary range Time to job-readiness Demand trend (growing / stable / declining) Every path includes a month-by-month milestone plan with free courses, live job board links, and an AI coaching chat for follow-up questions. How We Built It Architecture The application is a full-stack JavaScript project: Frontend: React 18 with Recharts for data visualisation Backend: Node.js + Express (ES Modules) serving the React build as static files AI: Anthropic Claude ( claude-sonnet-4-20250514 ) via the official SDK Labour market data: O*NET Web Services REST API (Basic Auth) Resume parsing: multer for uploads, pdf-parse for PDFs, mammoth for DOCX Claude Integration Claude is not a peripheral feature. It sits at the centre of every meaningful action in the app. 1. Resume and profile extraction When a user uploads a resume, Claude reads the raw text and returns structured JSON: current role, years of experience, skills list, education, and inferred strengths the user may not have thought to mention. 2. Stream-aware dual prompting Rather than a single generic system prompt, we wrote two detailed prompts ( SYSTEM_PROMPT_PROFESSIONAL and SYSTEM_PROMPT_STUDENT ), each with a different analytical lens. A getSystemPrompt(userType) function selects the correct one at request time. Both prompts append a shared RESPONSE_SCHEMA that enforces a strict JSON structure for the response. 3. O*NET-enriched path generation Before sending the user profile to Claude, the server queries the O*NET API for occupation data, wage statistics, and bright-outlook indicators. This real-world data is injected into the Claude prompt, so every salary range and demand trend is grounded rather than hallucinated. Claude is instructed to return exactly five paths and target the upper range of realistic salaries, because we are not building a tool for pessimism. 4. AI coaching chat After results are delivered, users can ask follow-up questions. A key engineering decision here was context compression : rather than dumping the full results JSON (five paths, milestones, resources) into the system prompt (which consistently exceeded token limits and caused the endpoint to fail), we extract a compact summary object containing only the fields the coach actually needs. This reduced the system prompt size by roughly $60\text{--}70\%$ and made the chat endpoint reliable. 5. Interest and goal suggestions On the goals step of the assessment, Claude pre-generates personalised chip options ( interestOptions[] and concernOptions[] ) based on the user's background, so the form feels tailored rather than generic. Users can pick up to three chips per category: $$|\text{selected}| \leq 3, \quad \text{selected} \subseteq \text{options}$$ O*NET Holland RIASEC Profiler The app includes an embedded interest profiler based on the Holland RIASEC model. Users score themselves across six dimensions: $$\text{RIASEC} = (R, I, A, S, E, C), \quad R, I, A, S, E, C \in [0, 10]$$ The top two codes (e.g. $\arg\max_2(\text{RIASEC})$) are fed back into Claude's path generation, adding a psychological fit dimension to the career recommendations alongside the skills and labour market data. Automation Risk Every career path includes an automation risk score. We display this honestly, even when the number is uncomfortable, because users deserve accurate information, not reassurance. The visual encoding is: $$\text{risk colour} = \begin{cases} \text{green} & \text{if risk} \leq 30\% \ \text{amber} & \text{if } 30\% < \text{risk} \leq 60\% \ \text{red} & \text{if risk} > 60\% \end{cases}$$ Challenges We Faced 1. Token limits in the chat endpoint The first version of /api/chat injected the full results object into the system prompt using JSON.stringify(context) . With five paths, each containing milestones, resources, and rich metadata, the payload was enormous. Claude would consistently fail with a context overflow error, and the UI would surface the unhelpful message: "Sorry, I couldn't process that question. Please try again." The fix was to build a compactContext object on the server, extracting only the fields the coaching conversation actually needs, before constructing the system prompt. This was a good reminder that what you send to the model matters as much as what you ask it . 2. Keeping labour market data honest Early prompts asked Claude to generate salary ranges freely. The results were plausible-sounding but not grounded. We solved this by querying the O*NET API first and injecting the actual wage percentiles into the prompt, then instructing Claude to treat this data as a constraint rather than a suggestion. The difference in output quality was immediate. 3. Designing for two very different users A professional who has worked in logistics for 15 years and a 20-year-old computer science student have almost nothing in common except the anxiety of an AI-transformed workforce. Getting the tone, framing, and recommendations right for both, without building two separate products, required careful prompt engineering. The dual system prompt architecture took several iterations to feel genuinely differentiated rather than superficially relabelled. 4. The ethics of career advice at scale We spent real time on a question that most AI tools skip: what happens when our advice is wrong? A misguided career pivot is not a minor inconvenience for someone who has already been displaced. We built in explicit uncertainty: automation risk scores are presented as estimates, not facts; timelines are described as realistic targets, not guarantees; and the AI coach is positioned as a guide, not an authority. The whyAIResilient field on each career path explains specifically why human elements in that role resist automation, so users understand the reasoning rather than just trusting a number. What We Learned Context compression is a first-class engineering concern when building LLM-powered features. What you don't send matters as much as what you do. Real data transforms trust. The moment we grounded salary ranges in O*NET statistics, the recommendations went from feeling like AI guesses to feeling like research. Empowerment and replacement are design choices. Every feature decision in PivotPath (free always, no account required, honest risk scores, coach not oracle) was a deliberate choice to put agency in the user's hands. The people most affected by AI are the least represented in AI product conversations. Building for them requires actively resisting the temptation to optimise for the users who are easiest to build for. What's Next Deploy: Live on Railway at a public URL, one environment variable ( ANTHROPIC_API_KEY ) away from running anywhere Open source: github.com/G-I-Dev-P/pivotpath , contributions welcome Near-term: Multilingual support, local job market data by city, resume builder aligned to chosen path Vision: Community college API partnerships, employer-side matching, progress tracking and credential verification Built at UVICHacks 2026 — Track 3: Economic Empowerment and Education Inspired by Dario Amodei's "Machines of Loving Grace"
G-I-Dev-P/pivotpath★ 00 forksJavaScriptCreated Mar 22, 2026 · last push Mar 22, 2026

README excerpt

# PivotPath — AI-Powered Career Transition Coach

> **Track 3: Economic Empowerment & Education** | Claude Hackathon x UVICHacks 2026

## The Problem

Automation is displacing millions of workers, and those most affected are often least equipped to navigate retraining on their own. Career transition is overwhelming — where do you start when your job no longer exists?

## Our Solution

PivotPath is an AI-powered career transition coach that takes your existing skills, work history, and real-life constraints (time, money, location) and maps out realistic upskilling paths with **free resources**, **timelines**, and **job targets**.

### Features

- **Skills Assessment** — Multi-step intake form that captures your background, skills, constraints, and goals
- **AI-Powered Analysis** — Claude AI identifies your transferable skills and generates 3 personalized career paths
- **Visual Career Pathways** — Interactive charts comparing automation risk, salary, demand, and match scores
- **Free Resource Curation** — Every milestone comes with real, free courses from Coursera, edX, Google Certificates, and more
- **Job Market Insights** — Automation risk scores, salary ranges, and demand trends for each path
- **AI Follow-Up Coach** — Ask questions about your plan and get real-time personalized guidance

## Tech Stack

- **Frontend**: React, Recharts (data visualization)
- **Backend**: Node.js, Express
- **AI**: Anthropic Claude API (claude-sonnet-4-20250514)

## Quick Start

```bash
# 1.

Team