Skip to content

Repository files navigation

πŸ”₯ PhoenixCV β€” Stop Applying. Start Matching.

An ATS CV Optimization Platform that gives you a brutally honest score in 10 seconds. Upload your CV, paste the job description, and PhoenixCV runs a multi-dimensional analysis β€” keyword matching, formatting safety, impact scoring, and structural audit β€” all client-side, zero data leaves your browser.

Vue TypeScript Vite Pinia Tailwind CSS License


✨ Features

Feature Description
PDF Auto-Parse Extracts text from uploaded PDFs via pdfjs-dist β€” with manual paste fallback for scanned/image PDFs
ATS Scoring Engine Weighted multi-factor score: keywords (40%), impact (25%), formatting (20%), structure (15%)
Keyword Gap Analysis TF-IDF-style comparison of CV vs. job description β€” single words + bigram phrase matching
Formatting Safety Check Detects ATS-unsafe patterns: box-drawing chars, non-standard bullets, table HTML, encoding corruption
Impact Analysis Identifies strong (quantified) vs. weak (vague) bullet points using regex pattern matching
Structure Audit Validates presence of essential sections (experience, education, skills) and word count/page estimates
Fix Suggestions Actionable, prioritized suggestions β€” free tier shows critical fixes, premium unlocks full rewrite hints
100% Client-Side Zero backend. All analysis runs in-browser. Your CV never leaves your machine.

πŸ—οΈ Project Structure

src/
β”œβ”€β”€ assets/
β”‚   β”œβ”€β”€ main.css              # Global stylesheet + Tailwind import
β”‚   └── theme.css             # Design tokens: colors, fonts, animations
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ cv-analyzer/
β”‚   β”‚   β”œβ”€β”€ CVUploader.vue    # File upload + manual paste input
β”‚   β”‚   β”œβ”€β”€ KeywordMatch.vue  # Keyword gap visualization
β”‚   β”‚   └── ScoreCard.vue     # Animated ATS score display
β”‚   β”œβ”€β”€ landing/
β”‚   β”‚   β”œβ”€β”€ HeroSection.vue   # Above-the-fold CTA
β”‚   β”‚   β”œβ”€β”€ PainSection.vue   # Problem framing section
β”‚   β”‚   β”œβ”€β”€ HowItWorks.vue    # 3-step process explainer
β”‚   β”‚   β”œβ”€β”€ ScorePreview.vue  # Live score preview mockup
β”‚   β”‚   β”œβ”€β”€ ComparisonGrid.vue# Before/after comparison
β”‚   β”‚   └── Testimonials.vue  # Social proof section
β”‚   β”œβ”€β”€ shared/               # Reusable UI components (empty β€” ready for extraction)
β”‚   └── suggestions/
β”‚       └── FixSuggestions.vue # Prioritized fix recommendations
β”œβ”€β”€ router/
β”‚   └── index.ts              # Route definitions with scroll behavior
β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ api.ts                # Axios instance with auth interceptors
β”‚   β”œβ”€β”€ atsScorer.ts          # Core ATS scoring engine (335 lines)
β”‚   β”œβ”€β”€ keywordExtractor.ts   # TF-IDF keyword extraction + comparison
β”‚   └── pdfParser.ts          # PDF.js text extraction + fallback
β”œβ”€β”€ stores/
β”‚   β”œβ”€β”€ analysis.ts           # CV analysis state, file upload, scoring pipeline
β”‚   β”œβ”€β”€ auth.ts               # Authentication state (mock β€” ready for real API)
β”‚   └── job.ts                # Job description + saved jobs management
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ constants.ts          # Stop words, ATS patterns, score weights, verdicts
β”‚   └── helpers.ts            # Text processing: tokenize, frequency, clean, clamp
β”œβ”€β”€ views/
β”‚   β”œβ”€β”€ Landing.vue           # Marketing landing page
β”‚   β”œβ”€β”€ Analyzer.vue          # CV upload + job description input flow
β”‚   β”œβ”€β”€ Results.vue           # Score dashboard + keyword matches + suggestions
β”‚   β”œβ”€β”€ Pricing.vue           # Tier comparison (Free / Premium / Enterprise)
β”‚   └── Waitlist.vue          # Early access signup
β”œβ”€β”€ App.vue                   # Root component
└── main.ts                   # Application entry (Pinia + Router mount)

πŸš€ Getting Started

Prerequisites

  • Node.js β‰₯ 20.x
  • npm β‰₯ 10.x (or pnpm / yarn)

Installation

# Clone the repository
git clone https://github.com/FullstackRakibul/calcifer.phoenixCV.git
cd calcifer.phoenixCV

# Install dependencies
npm install

Development

# Start dev server with hot-reload (default: http://localhost:5173)
npm run dev

Production Build

# Type-check and build for production
npm run build

# Preview the production build locally
npm run preview

πŸ›£οΈ Route Map

Path View Description
/ Landing Marketing page with hero, pain points, how-it-works, and CTA
/analyze Analyzer Upload CV (PDF/text) + paste job description
/results Results ATS score dashboard, keyword gaps, fix suggestions
/pricing Pricing Free / Premium / Enterprise tier comparison
/waitlist Waitlist Early access signup form
/* β€” Catch-all redirect to Landing

πŸ”¬ How the Scoring Engine Works

PhoenixCV runs a 4-factor weighted analysis:

Factor Weight What It Measures
Keywords 40% TF-IDF keyword match between CV and job description (top 30 words + 15 bigrams)
Impact 25% Ratio of strong (quantified) vs. weak (vague) bullet points
Formatting 20% ATS-unsafe patterns: box-drawing, non-standard bullets, table HTML, encoding issues
Structure 15% Presence of essential sections, word count, page estimate

Verdict Scale

Score Verdict Meaning
90–100 🟒 Excellent ATS-optimized. Likely to pass most filters.
75–89 🟒 Good Minor improvements needed. Competitive.
60–74 🟑 Fair Gaps that ATS systems will flag.
40–59 🟠 Weak Significant improvements needed. Many ATS will reject.
0–39 πŸ”΄ Critical Will likely be rejected by most ATS systems.

🧩 Tech Stack

Layer Technology Version
Framework Vue 3 (Composition API + <script setup>) ^3.5
Language TypeScript ~6.0
Build Tool Vite ^6.4
State Pinia ^3.0
Router Vue Router ^5.0
CSS Tailwind CSS ^4.2
PDF Parsing pdfjs-dist ^4.0
HTTP Axios ^1.15
Charts Chart.js ^4.5
Icons Lucide Vue Next ^1.0

πŸ“œ Available Scripts

Command Description
npm run dev Start development server
npm run build Type-check + production build
npm run build-only Production build (skip type-check)
npm run type-check Run TypeScript type checking
npm run preview Preview production build locally

πŸ”’ Privacy & Security

  • Zero data transmission β€” all analysis runs 100% client-side in the browser
  • No CV storage β€” uploaded files are processed in-memory and never persisted
  • No tracking β€” no analytics, cookies, or third-party scripts in the core app
  • Mock auth β€” the included auth store is a mock for development. Replace with a real provider (OAuth2, JWT) before deploying to production

⚠️ See SECURITY.md for full security policy and vulnerability reporting.


🀝 Contributing

Contributions are welcome! Please read the Contributing Guidelines before submitting a pull request.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.


πŸ’‘ Recommended IDE Setup


Made with ❀️ by FullstackRakibul

Releases

Packages

Used by

Contributors

Languages