AI-powered career pathways for student-athletes. Explore non-playing careers tailored to your strengths and interests, generated with LLMs.
Pathlete helps college athletes discover realistic, high-potential career paths beyond playing professionally. The app collects a short survey of interests, major, and preferences; a backend Cloud Function synthesizes this context with an LLM to produce three prioritized career pathways with salary and education guidance. Results are displayed in a clean, mobile-friendly UI with follow-on curriculum suggestions.
- Personalized survey using SurveyJS
- AI-generated, structured recommendations (3 ranked pathways)
- Salary and minimum education guidance per pathway
- Persisted quiz data and recommendations in Firestore
- React SPA with results and lesson plan views
- Frontend: React (Create React App) in
website/ - Backend: Firebase Cloud Functions (Node 18) in
backend/functions/ - Database: Cloud Firestore
- LLM: OpenAI Chat Completions API
Data model (collections):
quiz-data/{userId}: Raw survey submissionrecommendations/{userId}: AI output{ pathways: [{ rank, name, avgSalary, minEduRequired }] }users/{userId}: Optional user profile (read bygetUserInfo)
Cloud Functions (Callable):
uploadQuizData: Stores quiz data for auserId, then triggers processingprocessQuizData: Calls OpenAI with context and saves recommendationsgetRecommendations: Fetches saved recommendations for auserIdgetUserInfo: Fetches user profile (if present)
Note: Frontend calls callable functions via raw HTTPS using Axios and the callable wire format. No Firebase client SDK is required in the browser for these calls.
upskilling/
backend/
firebase.json # Functions codebase config
functions/
index.js # Cloud Functions (callable)
package.json # Node 18; axios, firebase-admin, firebase-functions
website/
package.json # CRA scripts
public/ # Static assets
src/ # React app, Survey + Results views
- Node.js 18.x
- npm 9+ (or pnpm/yarn)
- Firebase CLI (
npm i -g firebase-tools) with access to a Firebase project - OpenAI API key
- Install dependencies
cd backend/functions && npm ci
cd ../../website && npm ci
- Deploy or emulate the backend
- Fastest path: deploy callable functions and use them from local React
cd backend/functions
# Ensure your Firebase project is set
firebase use <your-project-id>
# Provide the OpenAI key to the runtime environment (see Environment for options)
# Deploy functions
npm run deploy
- Configure frontend environment
Create website/.env.local with:
REACT_APP_UPLOAD_QUIZ_DATA_URL=https://<location>-<project-id>.cloudfunctions.net/uploadQuizData
REACT_APP_GET_RECOMMENDATIONS_URL=https://<location>-<project-id>.cloudfunctions.net/getRecommendations
REACT_APP_USER_ID=<a-stable-test-user-id>
- Run the React app
cd website
npm start
The app will open at http://localhost:3000. Submitting the survey will hit your deployed callable functions.
The code reads the OpenAI key from process.env.OPENAI_API_KEY.
You have two common options:
- Google Cloud Console: After first deploy, open your function > Edit > Runtime, build, connections > Runtime environment variables, add
OPENAI_API_KEY. - Local emulation: export the var before starting emulators.
export OPENAI_API_KEY=sk-...
cd backend/functions
npm run serve
Tip: If you prefer Firebase Config (
functions.config()), update the code accordingly and set viafirebase functions:config:set openai.api_key=....
The React app expects these variables at build/runtime:
REACT_APP_UPLOAD_QUIZ_DATA_URL: Callable endpoint foruploadQuizDataREACT_APP_GET_RECOMMENDATIONS_URL: Callable endpoint forgetRecommendationsREACT_APP_USER_ID: A user identifier string to associate survey data and results
Callable endpoint format:
- URL:
https://<location>-<project-id>.cloudfunctions.net/<functionName> - Method:
POST - Headers:
Content-Type: application/json - Body shape:
{ "data": { ... } }
Examples used in-app:
// Upload quiz data
POST <UPLOAD_QUIZ_DATA_URL>
{
"data": {
"userId": "<USER_ID>",
"quizData": { /* survey payload */ }
}
}
// Get recommendations
POST <GET_RECOMMENDATIONS_URL>
{
"data": {
"userId": "<USER_ID>"
}
}
cd backend/functions
firebase use <your-project-id>
npm run deploy
After deploy, copy callable URLs from the Firebase Console and place them in website/.env (or hosting provider env settings).
Build and deploy to your hosting provider of choice (Vercel, Netlify, Firebase Hosting, etc.).
cd website
npm run build
# Deploy the contents of website/build using your platform's CLI/UI
Firebase Hosting is not configured in this repo by default. You can add it via
firebase init hostingin the repo root if you prefer a single Firebase deployment.
- JSON parsing errors when reading LLM output: reduce
temperature, increasemax_tokens, or enable JSON-formatted responses. The current backend prompts the model to return strict JSON and strips risky formatting, but vendor changes can still cause drift. - 401/403 calling functions: ensure your callable endpoints are correct and that the function is deployed. If you later add auth/App Check enforcement, the Axios calls must include the appropriate tokens.
OPENAI_API_KEYundefined: set it in the function runtime environment or export it before emulation.
- React 18, Create React App
- SurveyJS (
survey-core,survey-react-ui) - Firebase Cloud Functions v2, Node 18
- Cloud Firestore
- Axios
- OpenAI Chat Completions API
Texas Convergent EdTech Build Team
- Tech: Aastha Agrawal, Akshat Shah, Samuel Jacob
- Product: Ashley Chen, Aadit Jha, Tina Luo
- Design: Aashna Mangal