How attahdev/resume works
Resume Analyzer is a web application that compares an uploaded resume with a job description and returns a match score, skill gaps, and coaching suggestions. The main workflow runs from the React app through upload and analysis endpoints, then through document parsing, local NLP/scoring, and optional Groq-generated feedback; users can view results, compare analyses, and revisit history. Authentication and guest tracking support different access tiers. README capabilities inform the analysis stages, while unsampled router and service implementations limit certainty about their exact wiring.
Main entry points: main.py FastAPI app · models Persisted records · analyze.py Analysis endpoint · AppPage.jsx Analysis workspace
Components 26
Web client
- React app
frontend/src/App.jsx - Analysis workspace
frontend/src/pages/AppPage.jsx - Resume upload
frontend/src/components/UploadZone.jsx - Job description
frontend/src/components/JobInput.jsx - Score dashboard
frontend/src/components/ScoreDashboard.jsx - Analysis details
frontend/src/components/SectionBreakdown.jsx - Comparison view
frontend/src/components/DeltaView.jsx - Analysis history
frontend/src/pages/HistoryPage.jsx - API client
frontend/src/api/client.js - Auth state
frontend/src/auth/useAuth.jsx
API and access
- FastAPI app
backend/main.py - Upload endpoint
backend/routers/upload.py - Analysis endpoint
backend/routers/analyze.py - Results endpoint
backend/routers/results.py - Compare endpoint
backend/routers/compare.py - History endpoint
backend/routers/history.py - Auth endpoints
backend/routers/auth.py
Resume analysis
- Document parser
backend/services/parser.py - Local NLP
backend/services/nlp.py - Match scorer
backend/services/scorer.py - Coaching feedback
backend/services/llm.py
Identity and state
- Guest tracking
backend/services/guest.py - Persisted records
backend/models - SQL database
backend/database.py
Other components
- Candidate
- Groq LLM
Connections 33
- Candidate → React app: uses
- React app → Analysis workspace: routes
- React app → Auth state: provides auth
- Analysis workspace → Resume upload: accepts resume
- Analysis workspace → Job description: accepts job
- Analysis workspace → API client: sends requests
- API client → FastAPI app: calls API
- FastAPI app → Upload endpoint: dispatches
- FastAPI app → Analysis endpoint: dispatches
- FastAPI app → Results endpoint: dispatches
- FastAPI app → Compare endpoint: dispatches
- FastAPI app → History endpoint: dispatches
- FastAPI app → Auth endpoints: dispatches
- Upload endpoint → Document parser: parses files
- Analysis endpoint → Document parser: extracts text
- Analysis endpoint → Local NLP: analyzes text
- Analysis endpoint → Match scorer: scores match
- Analysis endpoint → Coaching feedback: requests feedback
- Coaching feedback → Groq LLM: requests generation
- Match scorer → Local NLP: uses NLP
- Results endpoint → Score dashboard: returns scores
- Results endpoint → Analysis details: returns findings
- Compare endpoint → Comparison view: returns differences
- History endpoint → Analysis history: returns history
- Auth state → API client: manages tokens
- Auth endpoints → Persisted records: reads/writes users
- Upload endpoint → Persisted records: stores resume data
- Analysis endpoint → Persisted records: stores analyses
- Results endpoint → Persisted records: reads analyses
- Compare endpoint → Persisted records: reads analyses
- History endpoint → Persisted records: reads history
- Persisted records → SQL database: persists records
- FastAPI app → Guest tracking: tracks guests