Skip to main content
The CV optimization feature analyzes your resume against the target job description and provides specific, actionable recommendations to strengthen your application.

How it works

After completing your mock interview, the AI analyzes how well your CV aligns with the job requirements and identifies opportunities to better highlight relevant experience.
1

Upload your CV

The system accepts multiple file formats:
  • PDF documents
  • Word documents (.docx)
  • Plain text files (.txt)
Your CV is parsed and the text content is extracted for analysis.
CVs must contain at least 50 characters to be accepted. This ensures enough content for meaningful analysis.
2

Provide the job description

Paste the complete job posting (minimum 50 characters, maximum 10,000 characters) to give the AI context about:
  • Required skills and qualifications
  • Responsibilities of the role
  • Company expectations
  • Keywords and terminology used by the employer
3

Complete your interview

The AI observes how you discuss your experience during the interview and compares it against what’s written in your CV.
4

Review optimization suggestions

After the interview, receive detailed CV improvement recommendations tailored specifically to the target role.

What you’ll receive

The CV optimization section provides:

Targeted modifications

Specific suggestions on how to modify your CV for the role, including:
  • Which experiences should be highlighted more prominently
  • What’s missing that the job requires
  • How to better align your skills with job requirements
  • Specific wording or section suggestions

Role-specific recommendations

The AI considers:
  • The job title and company you’re targeting
  • Your actual CV content (up to 2000 characters analyzed)
  • The complete job description
  • How you presented your experience during the interview

Actionable insights

Suggestions are presented in a clear, bulleted format for easy implementation:
{
  "cv_improvements": "• Add specific metrics to your project management experience (e.g., team size, budget, timeline)\n• Highlight your Python and Flask experience more prominently in the skills section\n• Include examples of stakeholder communication in your work history\n• Add a brief summary statement that emphasizes your 5+ years of backend development\n• Consider adding certifications or courses related to cloud technologies mentioned in the job description"
}

Optimization analysis

The AI analyzes multiple dimensions when generating CV suggestions:

Skills alignment

Compares skills listed in your CV against those required in the job description to identify:
  • Missing technical skills that should be added
  • Relevant skills that are underemphasized
  • Transferable skills from other experiences

Experience relevance

Evaluates how your work history matches the role:
  • Projects that should be featured more prominently
  • Achievements that align with job responsibilities
  • Gaps that need to be addressed or explained

Keyword optimization

Identifies important terminology from the job posting that should appear in your CV to:
  • Pass applicant tracking systems (ATS)
  • Demonstrate familiarity with industry standards
  • Use language that resonates with hiring managers

Presentation improvements

Suggests formatting and structural enhancements:
  • How to organize sections for maximum impact
  • Which details to expand or condense
  • Ways to quantify achievements with metrics
The AI bases suggestions on both your CV content and how you discussed your experience during the interview, catching discrepancies and opportunities to better showcase your skills.

Viewing your recommendations

CV optimization suggestions appear on the feedback page in a dedicated section:
  • Location: Bottom of the feedback page after strengths and improvement areas
  • Format: Bulleted list with 3-7 specific recommendations
  • Style: Highlighted in a purple-themed card for easy visibility
  • Export: Can be saved as PDF using the “Print/Save as PDF” button

Document processing

The platform uses specialized parsers to extract text from different file formats:

PDF files

Processed using pdfplumber for accurate text extraction while preserving:
  • Paragraph structure
  • Bullet points
  • Section headings

Word documents

Processed using python-docx to extract:
  • Text content from all paragraphs
  • Tables (if present)
  • Text formatting context

Text files

Directly read with UTF-8 encoding for plain text CVs.
Files are temporarily stored during processing and automatically deleted after text extraction for security.

Best practices

No! Each job application should have a tailored CV. Use the optimization suggestions to create customized versions that emphasize relevant experience for each specific role.
Include the complete job posting with:
  • Full list of responsibilities
  • All required and preferred qualifications
  • Company information and role context
  • Any specific technologies or methodologies mentioned
More context leads to more targeted suggestions.
That’s exactly why this feature exists! The AI helps you identify:
  • Transferable skills you can emphasize
  • Ways to reframe your experience
  • Gaps you can address through courses or projects
  • How to present your background in the most relevant light
Absolutely! The recommendations are equally applicable to:
  • LinkedIn profiles
  • Portfolio websites
  • Cover letters
  • Job application forms

Implementation tips

After receiving your CV optimization suggestions:
  1. Prioritize changes - Focus first on missing required skills and major gaps
  2. Add metrics - Quantify achievements wherever suggested (team size, revenue impact, efficiency gains)
  3. Reorder sections - Put most relevant experience first
  4. Update keywords - Incorporate job-specific terminology naturally
  5. Get feedback - Have someone review your updated CV before submitting

Technical validation

The document service ensures quality inputs:
class DocumentService:
    def upload_cv(self, session_id: int, file) -> Session:
        cv_text = DocumentParser.extract_text(file_path)
        if not cv_text or len(cv_text.strip()) < 50:
            raise ValidationError(
                "CV seems too short. Please upload a complete CV "
                "(at least 50 characters)"
            )
        return updated_session
    
    def upload_job_description(self, session_id: int, text: str) -> Session:
        if len(text) < 50:
            raise ValidationError(
                "Job description seems too short. "
                "Please provide a complete job description (at least 50 characters)"
            )
        if len(text) > 10000:
            raise ValidationError(
                "Job description too long (max 10,000 characters)"
            )
        return updated_session
These validations ensure the AI has sufficient context to generate meaningful recommendations.

Build docs developers (and LLMs) love