Overview
The Resume Analysis feature uses AI to evaluate uploaded resumes across multiple dimensions, providing detailed scoring, strengths identification, and actionable improvement suggestions. The system supports multiple file formats and processes analysis asynchronously using Redis Streams for optimal performance.All resume analysis operations are processed asynchronously to ensure fast response times and handle large files efficiently.
Supported File Formats
The system accepts the following resume formats:PDF Documents
Native PDF parsing with text extraction support
Word Documents
DOCX and DOC format support
Text Files
Plain text (TXT) and Markdown (MD) files
Max File Size
Up to 10MB per resume file
Upload and Analysis Workflow
The resume analysis follows an asynchronous processing pattern for reliability and scalability:Upload Resume
Users upload a resume file through the web interface. The system validates:
- File size (max 10MB)
- File type (PDF, DOCX, DOC, TXT, MD)
- File content integrity
Duplicate Detection
The system calculates a SHA-256 hash of the file content to detect duplicates:If an identical resume was previously uploaded, the system returns the existing analysis immediately.
Async Analysis Queue
An analysis task is sent to Redis Stream:The API returns immediately with status PENDING.
Status Flow
The analysis progresses through the following states:Status Definitions
Status Definitions
- PENDING: Resume uploaded, awaiting analysis worker
- PROCESSING: AI model is analyzing the resume
- COMPLETED: Analysis finished successfully
- FAILED: Analysis encountered an error (automatic retry up to 3 times)
Analysis Dimensions
The AI evaluates resumes across five key dimensions, with a total score out of 100:Content Completeness
0-25 pointsEvaluates completeness of work experience, education, projects, and personal information.
Structure Clarity
0-20 pointsAssesses logical organization, section hierarchy, and readability.
Skill Matching
0-25 pointsAnalyzes relevance of technical skills, certifications, and domain expertise.
Professional Expression
0-15 pointsReviews language quality, grammar, conciseness, and professionalism.
Project Experience
0-15 pointsEvaluates project descriptions, technical depth, and measurable achievements.
Analysis Entity Structure
Viewing Analysis Results
Resume List
Access all uploaded resumes via the Resume History page:- Resume ID and filename
- Upload timestamp
- Current analysis status
- Overall score (when completed)
Resume Detail
View comprehensive analysis for a specific resume:- Response Structure
- Frontend Display
PDF Export
Generate a professional PDF report of the analysis:PDF Generation Details
PDF Generation Details
The system uses iText 8 to generate structured PDF reports:The PDF includes:
- Cover page with resume metadata
- Score summary with visual charts
- Detailed analysis for each dimension
- Strengths and suggestions sections
- Chinese font support (ZhuqueFangsong-Regular.ttf)
Manual Reanalysis
If analysis fails, users can manually trigger a retry:This endpoint is rate-limited to 2 requests per IP to prevent abuse.
- Resets status to PENDING
- Clears previous error message
- Retrieves cached resume text (or re-downloads from storage)
- Sends new analysis task to Redis Stream
Deleting Resumes
Remove a resume and all associated analysis data:- Deletes the resume entity from the database
- Removes all analysis records
- Does not delete the file from object storage (for audit trail)
Rate Limiting
The upload endpoint is protected by rate limiting:Error Handling
Common error scenarios:Resume Parse Failed
Resume Parse Failed
Error:
无法从文件中提取文本内容Causes:- Scanned PDF without text layer
- Corrupted or password-protected file
- Unsupported file encoding
Analysis Failed
Analysis Failed
Error: Analysis status stuck at
FAILEDCauses:- AI API key invalid or expired
- AI model timeout or rate limit
- Resume text too long (exceeds token limit)
analyzeError field for details and use manual reanalysis.File Too Large
File Too Large
Error:
文件大小超过限制Limit: 10MBSolution: Compress or optimize the resume file.Best Practices
Optimize File Size
Keep resumes under 5MB for faster processing. Use PDF compression tools if needed.
Use Text-Based PDFs
Avoid scanned images. Ensure PDF text is selectable before upload.
Monitor Status
Implement polling (every 3-5 seconds) to check analysis status until completion.
Handle Failures Gracefully
Display error messages clearly and provide a retry button for failed analyses.
