Athena — mahmoud-consultancy/archive/old-docs/CV_BUILDER_FEATURE_PLAN.md

CV Builder Feature - Implementation Plan

Date: October 17, 2025 Priority: HIGH Status: Planned Backend: ✅ Ready (API exists) Frontend: ⏳ To be built


🎯 Feature Overview

A multi-step CV builder that allows users to create professional CVs from scratch without uploading a file. Users fill in their details step-by-step, preview in real-time, and generate a professional PDF.


✅ Backend Status: READY

Existing API Endpoints

All required endpoints already exist:

  • ✅ POST /api/v1/cv-profiles - Create new CV
  • ✅ PUT /api/v1/cv-profiles/{id} - Update CV
  • ✅ GET /api/v1/cv-profiles/{id}/full - Get full CV data
  • ✅ GET /api/v1/cv-profiles/{id}/generate-pdf - Generate PDF

CV Data Model Supports:

  • ✅ Personal Information (name, email, phone, social links)
  • ✅ Professional Summary & Objective
  • ✅ Work Experience (multiple entries)
  • ✅ Education (multiple degrees)
  • ✅ Skills (with proficiency levels)
  • ✅ Languages (with proficiency)
  • ✅ Certifications
  • ✅ Projects
  • ✅ Publications
  • ✅ Interests
  • ✅ References
  • ✅ Templates (modern, classic, minimal, creative)
  • ✅ Color Schemes (blue, green, red, purple, black)
  • ✅ Photo upload

🚧 Frontend: To Be Built

Component Structure

src/app/components/cv-builder/
├── cv-builder.component.ts           # Main container
├── cv-builder.component.html
├── cv-builder.component.scss
├── cv-builder.component.spec.ts
│
├── steps/
│   ├── personal-info-step/          # Step 1: Personal details
│   ├── summary-step/                # Step 2: Professional summary
│   ├── experience-step/             # Step 3: Work experience
│   ├── education-step/              # Step 4: Education
│   ├── skills-step/                 # Step 5: Skills & languages
│   ├── additional-step/             # Step 6: Certs, projects, etc.
│   └── preview-step/                # Step 7: Preview & generate
│
├── shared/
│   ├── cv-preview/                  # Live preview component
│   ├── experience-form/             # Reusable experience form
│   ├── education-form/              # Reusable education form
│   ├── skill-selector/              # Skills selection widget
│   └── template-selector/           # Template chooser
│
└── models/
    └── cv-builder.model.ts          # TypeScript interfaces

📋 Implementation Plan - 7 Steps

Step 1: Personal Information

Fields:

  • First Name, Last Name *
  • Professional Title
  • Email *, Phone
  • LinkedIn, GitHub, Website
  • Photo (optional upload)
  • Address (street, city, postal code, region, country)

UI:

  • Clean form with validation
  • Optional fields clearly marked
  • Profile photo upload with preview
  • Auto-save draft

Step 2: Professional Summary

Fields:

  • Professional Summary (500 chars)
  • Career Objective (300 chars)

UI:

  • Rich text editor or textarea
  • Character counter
  • Suggestions/examples
  • "Skip this step" option

Step 3: Work Experience

Fields (per entry):

  • Company Name *
  • Job Title *
  • Start Date *, End Date (or "Current")
  • Description
  • Achievements (bullet points)

UI:

  • Add multiple experiences
  • Drag-to-reorder
  • Duplicate entry
  • Delete confirmation
  • "Add Experience" button
  • Collapsible entries

Step 4: Education

Fields (per entry):

  • Institution *
  • Degree/Program *
  • Field of Study
  • Start Date *, End Date
  • GPA/Grade (optional)
  • Description

UI:

  • Similar to experience step
  • Add/edit/delete/reorder
  • Auto-suggest for common degrees

Step 5: Skills & Languages

Skills Section:

  • Skill name
  • Proficiency level (Beginner/Intermediate/Advanced/Expert)
  • Category (Technical/Soft/Language)

Languages Section:

  • Language name
  • Proficiency (Basic/Conversational/Fluent/Native)

UI:

  • Skill tags with proficiency bars
  • Auto-complete from common skills
  • Visual proficiency selector
  • Categorized display

Step 6: Additional Information

Sections:

  • Certifications (name, issuer, date)
  • Projects (name, description, technologies, URL)
  • Publications (title, publisher, date)
  • Interests/Hobbies (tags)
  • References (name, title, company, contact)

UI:

  • Tabbed interface for each section
  • All optional
  • "Add More" buttons
  • Expandable sections

Step 7: Preview & Generate

Features:

  • Live preview of CV
  • Template selector (4 templates)
  • Color scheme picker (5 colors)
  • Download as PDF
  • Save profile
  • Set as default

UI:

  • Split screen: form on left, preview on right
  • Template thumbnails
  • Color swatches
  • "Generate PDF" button
  • "Save & Exit" button

🎨 User Experience Flow

1. Click "Create New CV"
   ↓
2. Choose starting method:
   - Build from scratch → CV Builder
   - Upload existing CV → CV Upload Modal (existing)
   ↓
3. [If Build from scratch]
   Multi-step wizard (7 steps)
   ↓
4. Each step:
   - Fill in information
   - See live preview
   - Save draft automatically
   - Next/Previous/Skip buttons
   ↓
5. Final step:
   - Review complete CV
   - Choose template & colors
   - Generate PDF
   - Save to profile
   ↓
6. Success:
   - CV added to "My CVs" list
   - Ready to use for applications
   - Can edit anytime

🛠️ Technical Implementation

Frontend (Angular 18)

Services:

cv-builder.service.ts
- saveDraft()
- loadDraft()
- submitCV()
- generatePreview()
- validateStep()

Models:

cv-builder.model.ts
- CVBuilderData interface
- ExperienceEntry interface
- EducationEntry interface
- etc.

State Management:

cv-builder.state.ts
- Current step
- Form data
- Validation errors
- Draft status

Routing

{
  path: 'cv-builder',
  component: CVBuilderComponent,
  canActivate: [AuthGuard],
  children: [
    { path: '', redirectTo: 'personal', pathMatch: 'full' },
    { path: 'personal', component: PersonalInfoStepComponent },
    { path: 'summary', component: SummaryStepComponent },
    { path: 'experience', component: ExperienceStepComponent },
    { path: 'education', component: EducationStepComponent },
    { path: 'skills', component: SkillsStepComponent },
    { path: 'additional', component: AdditionalStepComponent },
    { path: 'preview', component: PreviewStepComponent }
  ]
}

API Integration

// Use existing backend endpoints
POST /api/v1/cv-profiles
PUT /api/v1/cv-profiles/{id}
GET /api/v1/cv-profiles/{id}/generate-pdf

📊 Estimation

Development Time

| Component | Time | Priority | |-----------|------|----------| | CV Builder Container | 2 hours | HIGH | | Step 1: Personal Info | 2 hours | HIGH | | Step 2: Summary | 1 hour | MEDIUM | | Step 3: Experience | 3 hours | HIGH | | Step 4: Education | 2 hours | HIGH | | Step 5: Skills & Languages | 3 hours | HIGH | | Step 6: Additional | 2 hours | LOW | | Step 7: Preview & Generate | 3 hours | HIGH | | CV Preview Component | 4 hours | HIGH | | Template System | 3 hours | MEDIUM | | Styling & Responsive | 3 hours | HIGH | | Testing | 4 hours | HIGH | | Total | 32 hours | - |

Sprint Breakdown

  • Sprint 1 (Week 1): Steps 1-3 + Container (10 hours)
  • Sprint 2 (Week 2): Steps 4-5 + Preview (10 hours)
  • Sprint 3 (Week 3): Step 6 + Templates + Testing (12 hours)

🎯 Success Criteria

Functional Requirements

  • [ ] User can create CV without uploading file
  • [ ] All CV sections can be filled in
  • [ ] Live preview shows changes in real-time
  • [ ] Can save draft and resume later
  • [ ] Can generate professional PDF
  • [ ] Can choose from 4 templates
  • [ ] Can customize colors
  • [ ] Works on mobile devices
  • [ ] Validation prevents incomplete submissions
  • [ ] Auto-save every 30 seconds

Non-Functional Requirements

  • [ ] Page load < 2 seconds
  • [ ] Smooth step transitions
  • [ ] Accessible (WCAG 2.1 AA)
  • [ ] Works offline (drafts in localStorage)
  • [ ] Clean, intuitive UI
  • [ ] No data loss on refresh

🚀 Quick Start Implementation

Session 1: Basic CV Builder (8 hours)

Goal: Get a working prototype with core steps

// 1. Generate components
ng generate component components/cv-builder
ng generate component components/cv-builder/steps/personal-info-step
ng generate component components/cv-builder/steps/experience-step
ng generate component components/cv-builder/shared/cv-preview

// 2. Add routing
// 3. Create basic step navigation
// 4. Implement personal info form
// 5. Implement experience form (dynamic array)
// 6. Create simple preview
// 7. Wire up to backend API
// 8. Test end-to-end

📝 User Story

As a candidate without a CV I want to build a professional CV using a step-by-step builder So that I can apply for jobs even if I don't have an existing CV file

Acceptance Criteria:

  • [ ] Can access CV Builder from dashboard
  • [ ] Step-by-step wizard with 7 steps
  • [ ] Each section has clear instructions
  • [ ] Live preview updates as I type
  • [ ] Can save draft and continue later
  • [ ] Can generate PDF with chosen template
  • [ ] PDF looks professional and is ATS-friendly
  • [ ] Can edit CV after creation
  • [ ] Mobile-friendly for on-the-go editing

🎨 UI/UX Design Notes

Design Inspiration

  • Canva CV Builder - Template selection
  • LinkedIn Profile - Section organization
  • Novoresume - Live preview
  • Resume.io - Clean, modern interface

Key UX Principles

  1. Progressive Disclosure - Show what's needed, hide complexity
  2. Visual Feedback - Show progress, validation, saves
  3. Flexibility - Skip optional sections, reorder entries
  4. Guidance - Examples, tips, suggestions
  5. Preview - Always show what CV will look like

📦 Deliverables

Code

  • 15+ new Angular components
  • CV builder service
  • State management
  • Form validation
  • API integration
  • Responsive styling

Documentation

  • User guide for CV builder
  • Developer documentation
  • Component storybook
  • API integration guide

Tests

  • Unit tests for all components
  • Integration tests for API calls
  • E2E tests for complete flow
  • Mobile testing

🔗 Integration Points

With Existing Features

  • Job Application Flow - Select CV when applying
  • Profile Page - Link to "Build/Edit CV"
  • Dashboard - "Create CV" CTA if no CV exists
  • CV Upload - "Or build from scratch" option

Future Enhancements

  • AI-powered content suggestions
  • Import from LinkedIn
  • Skills recommendations based on job descriptions
  • ATS optimization score
  • Cover letter generator
  • Multiple language support (EN/NL)

💡 Recommendation

Add to roadmap as:

  • Priority: HIGH (enhances user experience significantly)
  • Timeline: 3 weeks (32 hours)
  • Dependencies: Backend startup fix (Session 14)
  • Value: Huge - allows users without CVs to still use platform

Should be implemented:

  • After Session 14 (backend fixes)
  • Before or alongside DAS integrations
  • As part of Sprint 6 or standalone project

Next Action: Approve feature and schedule for implementation Estimated Completion: 3 weeks from start Expected Impact: 50%+ increase in user signups (users without CVs can now join)

Reacties

Nog geen reacties