Multi-agent AI application that generates complete educational + career roadmaps for Miami Dade College students.
CareerPilot AI helps MDC students navigate their path from community college to career by:
β Analyzing career goals, budget, timeline, and academic profile β Researching MDC programs and transfer universities β Identifying licensing requirements and certifications β Calculating costs and ROI β Generating visual roadmaps with 3 paths: Cheapest, Fastest, Prestige
- Frontend: Next.js + Tailwind CSS + React Flow
- Backend: Cloudflare Worker (BFF API)
- Agents: Python + Google ADK + Vertex AI (Gemini)
- Database: Cloudflare KV / D1
- APIs: Google Custom Search, College Scorecard, BLS Public Data
careerpilot/
βββ apps/
β βββ web/ # Next.js quiz + roadmap UI
β βββ worker/ # Cloudflare Worker API
β βββ agents/ # Python multi-agent system
β βββ agents/ # Agent implementations
β βββ tools/ # API wrappers (Search, Scorecard, BLS)
β βββ prompts/ # System prompts for each agent
β βββ schemas/ # Pydantic data models
β βββ tests/ # Unit, integration, E2E tests
βββ packages/
β βββ shared-types/ # TypeScript/Python type definitions
β βββ prompts/ # Centralized prompts
βββ data/seed/ # Fallback data (MDC programs, BLS codes)
βββ infra/
β βββ cloudflare/ # D1 schema, wrangler config
β βββ gcp/ # Cloud Run deployment scripts
βββ .env.example # Environment variables template
βββ .gitignore # Security: excludes .env, keys
βββ README.md # This file
- Node.js 18+ and npm 9+
- Python 3.10+
- Google Cloud Platform account (for Vertex AI)
- API Keys:
- Google Custom Search API key + Engine ID
- College Scorecard API key
- BLS API key (optional, increases rate limits)
git clone <your-repo-url> careerpilot
cd careerpilot
# Install Node dependencies (monorepo)
npm install
# Install Python dependencies
cd apps/agents
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt# Copy template
cp .env.example .env
# Edit .env and fill in your API keys:
# - GCP_PROJECT_ID, GCP_LOCATION
# - GOOGLE_APPLICATION_CREDENTIALS (path to service-account.json)
# - GOOGLE_SEARCH_API_KEY, GOOGLE_SEARCH_ENGINE_ID
# - SCORECARD_API_KEY (optional - fallback data available)
# - BLS_API_KEY (optional - fallback data available)IMPORTANT: Download your Google Cloud service account JSON key and save it as service-account.json in the apps/agents/ directory (never commit this file!).
NOTE: The College Scorecard and BLS API keys are optional. If not provided, the system will use realistic fallback data for common Florida institutions and occupations. This allows you to test the application without registering for all APIs immediately.
cd apps/agents
python main.py
# Server starts on http://localhost:8000cd apps/worker
npm run dev
# Worker starts on http://localhost:8787cd apps/web
npm run dev
# Web app starts on http://localhost:3000- Coordinates all sub-agents
- Synthesizes final roadmap with 3 paths
- Resolves conflicts and validates outputs
- Analyzes quiz responses
- Extracts structured profile (career category, constraints, flags)
- Provides personalized recommendations
- Searches MDC programs (AS.EGR, AS.NUR, etc.)
- Finds transfer universities with articulation agreements
- Identifies licensing requirements (FE, PE, NCLEX, etc.)
- Uses Google Custom Search (restricted to .edu domains)
- Queries College Scorecard API for tuition data
- Calculates 3 paths: cheapest, fastest, prestige
- Estimates financial aid (Pell Grant, Bright Futures)
- Maps career to BLS occupation code
- Retrieves salary trends from BLS API
- Calculates ROI (years to break even)
- Create a Custom Search Engine at https://programmablesearchengine.google.com/
- Restrict to:
mdc.edu, fiu.edu, fau.edu, floridashines.org, ed.gov - Get API key: https://developers.google.com/custom-search/v1/overview
- Add to
.env:GOOGLE_SEARCH_API_KEY=your-key GOOGLE_SEARCH_ENGINE_ID=your-engine-id
- Register at https://api.data.gov/signup/
- Add to
.env:SCORECARD_API_KEY=your-key
- (Optional) Register at https://data.bls.gov/registrationEngine/
- Increases rate limit from 25/day to 500/day
- Add to
.env:BLS_API_KEY=your-key
- Create GCP project at https://console.cloud.google.com/
- Enable Vertex AI API
- Create service account with "Vertex AI User" role
- Download JSON key β save as
apps/agents/service-account.json - Add to
.env:GCP_PROJECT_ID=your-project-id GCP_LOCATION=us-central1 GOOGLE_APPLICATION_CREDENTIALS=./service-account.json
# Python agents
cd apps/agents
pytest tests/ -v
# Next.js (if tests are configured)
cd apps/web
npm test
# End-to-end tests
cd apps/web
npx playwright testMechanical Engineer Pathway Test:
pytest tests/integration/test_orchestrator.py::test_full_mechanical_engineer_roadmap -vElectrical Engineer with AA Test:
pytest tests/integration/test_orchestrator.py::test_full_electrical_engineer_roadmap -vSoftware Developer (No License) Test:
pytest tests/integration/test_orchestrator.py::test_full_software_developer_roadmap -vSee Enhanced Testing Strategy section for complete test coverage.
| API | Purpose | Rate Limit |
|---|---|---|
| Google Custom Search | MDC programs, transfer agreements | 100 queries/day (free) |
| College Scorecard | Tuition, completion rates | 1000 requests/hour |
| BLS Public Data | Salary, job outlook | 25/day (500/day with key) |
| Vertex AI (Gemini) | Agent intelligence | Pay-per-use |
β
Never commit .env, .env.local, or service-account.json
β
All credentials loaded from environment variables
β
.gitignore configured to exclude secrets
β
Cloudflare Workers use encrypted environment variables
cd apps/agents
gcloud run deploy careerpilot-agents \
--source . \
--region us-central1 \
--allow-unauthenticatedcd apps/worker
npm run deploy
# Update .env with worker URLcd apps/web
npm run build
# Connect repo to Cloudflare Pages dashboard{
"paths": {
"cheapest": {
"id": "cheapest",
"name": "Most Affordable Path",
"total_cost": 28000,
"duration": "4 years",
"steps": [
{
"type": "program",
"institution": "Miami Dade College",
"description": "AS in Engineering (AS.EGR)",
"duration": "2 years",
"cost": 6800
},
{
"type": "program",
"institution": "FIU",
"description": "BS Mechanical Engineering",
"duration": "2 years",
"cost": 13130
},
{
"type": "certification",
"institution": "NCEES",
"description": "FE Exam",
"cost": 175
}
],
"roi": 6.2
},
"fastest": {...},
"prestige": {...}
},
"nodes": [...], // React Flow nodes
"edges": [...], // React Flow edges
"citations": [...]
}- Follow the agent design patterns in
apps/agents/agents/base.py - Add tests for all new features
- Update prompts in
apps/agents/prompts/when modifying agent logic - Run
pytestbefore committing
[Your License Here]
β Download service account JSON from GCP and save as service-account.json
β College Scorecard uses exact names. Try "Florida International University" not "FIU"
β Daily quota exceeded. Upgrade Google Custom Search plan or wait 24 hours.
β Increase AGENT_TIMEOUT in .env (default: 30 seconds)
- Google ADK Documentation
- College Scorecard API Docs
- BLS API Guide
- React Flow Docs
- Cloudflare Workers Docs
All API tool wrappers have unit tests with mocked responses:
test_search_mdc_engineering_programs()- Verify MDC program searchtest_get_fiu_engineering_tuition()- College Scorecard APItest_get_mechanical_engineer_salary()- BLS API for occupation code 17-2141
Each agent has tests verifying correct reasoning:
- IntakeProfilerAgent: Flags setting (bright_futures_eligible, license_required)
- PathwayResearchAgent: ABET accreditation checks, FE/PE exam requirements
- CostEstimatorAgent: Cheapest path < 2x prestige path
- SalaryOutlookAgent: ROI calculations, salary ranges
End-to-end tests for complete roadmap generation:
# Mechanical Engineer: HS β MDC AS.EGR β FIU BS ME β FE β PE
test_full_mechanical_engineer_roadmap()
# Electrical Engineer with AA: Direct to university (skip MDC)
test_full_electrical_engineer_roadmap()
# Software Developer: No required license
test_full_software_developer_roadmap()test_orchestrator_completes_under_30_seconds()- First requesttest_cache_hit_under_1_second()- Cached roadmap
// Fill quiz for ME β Submit β Verify roadmap has FE Exam node
test('Mechanical Engineer roadmap generation')
// EE with AA β Verify no MDC nodes (direct to university)
test('Electrical Engineer with transfer credits')
// Software Dev β Verify no required license nodes
test('Software Developer roadmap - no license required')Run specific engineering tests:
pytest tests/agents/test_pathway_research.py::test_mechanical_engineer_pathway -v
pytest tests/agents/test_pathway_research.py::test_electrical_engineer_pathway -v
pytest tests/agents/test_pathway_research.py::test_software_developer_pathway -vBuilt with β€οΈ for Miami Dade College students