An AI-powered career guidance platform that helps students and professionals explore career paths, assess skills, find jobs, and receive personalized AI-driven recommendations.
Live demo: Deployed on Vercel — dark-themed, fully navigable, no account required.
| Feature | Status | Notes |
|---|---|---|
| Career Explorer (300+ O*NET careers) | Working | Static O*NET data, searchable |
| AI Career Assistant | Working | Powered by Claude via Vercel serverless API |
| Skills Analysis & Gap Identification | Working | Based on user profile |
| Job Search & Listings | Working | Curated job data |
| Career Pathways (structured roadmaps) | Working | Frontend → Full Stack → Data Science |
| Application Tracker | Working | Track applications through the hiring pipeline |
| Learning Hub | Working | Curated courses from top providers |
| Achievements System | Working | Gamified milestone tracking |
| Career Analytics | Working | Charts, metrics, skill progress |
| Profile Management | Working | Edit skills, title, location, education |
| Settings | Working | Theme, notifications, privacy, job preferences |
| Help Center | Working | FAQ + quick navigation |
| User Authentication | Not Implemented | Profile stored in localStorage |
| Real-time Job Scraping | Not Implemented | Backend not deployed to production |
| Persistent Cloud Storage | Not Implemented | localStorage only |
- React 18.3 + TypeScript 5.8 + Vite 5.4
- Tailwind CSS 3.4 + shadcn/ui — component system
- Zustand 5 — state management
- React Query 5 — data fetching
- Framer Motion — animations
- Recharts — analytics charts
- React Router v6 — client-side routing
- Claude (claude-opus-4-6) via Vercel Edge Function at
/api/chat - Full user profile sent as system context on every request
- API key stored as Vercel environment variable (never exposed to browser)
- FastAPI — REST API (
api_bridge.py) - Gradio — parallel web UI (
main_integrated.py) - OpenAI GPT-4 + LangChain — AI modules
- SQLite — local data persistence
- Scikit-learn — TF-IDF and collaborative filtering
- BeautifulSoup4 + Selenium — O*NET scraping
The Python backend runs locally but is not deployed to production. The frontend uses static O*NET data and the Claude serverless function.
cd frontend
npm install
npm run dev
# Open http://localhost:8080For the AI Assistant to work, create a .env.local file:
ANTHROPIC_API_KEY=your_key_hereGet your API key at console.anthropic.com.
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # Add your OPENAI_API_KEY
python api_bridge.py # Starts FastAPI on port 8000- Push this repo to GitHub
- Connect the
frontend/directory to Vercel (or configurerootDirectory: frontendin Vercel project settings) - Add
ANTHROPIC_API_KEYas an Environment Variable in the Vercel dashboard - Deploy — the
/api/chatserverless function is picked up automatically
The vercel.json in frontend/ handles SPA routing and API route exclusion.
AI-assistant-CSharpCorner/
├── frontend/ # React/TypeScript frontend (main product)
│ ├── api/
│ │ └── chat.ts # Vercel Edge Function — Claude AI proxy
│ ├── src/
│ │ ├── pages/ # All page components
│ │ │ ├── Dashboard.tsx
│ │ │ ├── AIAssistant.tsx # Real Claude integration
│ │ │ ├── CareerExplorer.tsx
│ │ │ ├── JobSearch.tsx
│ │ │ ├── SkillsAnalysis.tsx
│ │ │ ├── Pathways.tsx
│ │ │ ├── Applications.tsx
│ │ │ ├── Learning.tsx
│ │ │ ├── Achievements.tsx
│ │ │ ├── Analytics.tsx
│ │ │ ├── Settings.tsx
│ │ │ ├── Profile.tsx
│ │ │ └── Help.tsx
│ │ ├── components/
│ │ │ ├── ErrorBoundary.tsx
│ │ │ ├── layout/ # Header, Sidebar, Layout
│ │ │ ├── careers/
│ │ │ ├── dashboard/
│ │ │ └── ui/ # shadcn/ui components
│ │ ├── services/
│ │ │ ├── api.ts # API service (static data mode)
│ │ │ └── staticApi.ts # O*NET static data service
│ │ ├── store/
│ │ │ └── useUserStore.ts # Zustand user state
│ │ ├── data/
│ │ │ └── onetCareers.ts # 300+ O*NET careers (static)
│ │ └── types/ # TypeScript type definitions
│ ├── vercel.json
│ └── package.json
│
├── modules/ # Python backend modules
│ ├── career_roadmap_engine.py
│ ├── job_scraper.py
│ ├── skills_matcher.py
│ ├── recommendation_engine.py
│ ├── student_pathways.py
│ └── application_assistant.py
├── api_bridge.py # FastAPI backend
├── main_integrated.py # Gradio web UI
├── requirements.txt
└── config/system_config.yaml
The AI Assistant uses a Vercel Edge Function (/api/chat) that:
- Receives the conversation history and the user's full profile from the browser
- Builds a personalized system prompt with the user's skills, title, experience, and interests
- Calls the Anthropic Claude API (
claude-opus-4-6) - Returns the response to the browser
The API key never touches the browser — it lives only in Vercel's environment variables.
Browser → POST /api/chat → Vercel Edge Function → Claude API → Response
- No real authentication — user profile lives in
localStorage. Data doesn't sync across devices. - Job listings are curated mock data — not scraped live in production (backend not deployed).
- O*NET career data has quality gaps — skills/tasks fields are empty for most careers (scraper limitation).
- No code splitting for the 6,000-line career data file — impacts initial load time.
- SQLite backend not production-ready — would need PostgreSQL for concurrent users.
- Deploy FastAPI backend to Railway/Render
- Real-time job scraping via the Python backend
- User accounts and cross-device sync (Supabase or Firebase)
- Fix O*NET skills data quality (re-run scraper with corrected field extraction)
- Resume and cover letter generation (connect to Python
ApplicationAssistant) - Split
onetCareers.tsinto lazy-loaded chunks - Migrate SQLite to PostgreSQL for backend persistence
Rahul Mehta — GitHub
Originally developed for C# Corner. Powered by Claude (Anthropic) and O*NET data from the US Department of Labor.