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.
| 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. |
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)
- Node.js β₯ 20.x
- npm β₯ 10.x (or pnpm / yarn)
# Clone the repository
git clone https://github.com/FullstackRakibul/calcifer.phoenixCV.git
cd calcifer.phoenixCV
# Install dependencies
npm install# Start dev server with hot-reload (default: http://localhost:5173)
npm run dev# Type-check and build for production
npm run build
# Preview the production build locally
npm run preview| 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 |
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 |
| 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. |
| 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 |
| 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 |
- 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.
Contributions are welcome! Please read the Contributing Guidelines before submitting a pull request.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License β see the LICENSE file for details.
- VS Code
- Vue - Official Extension (formerly Volar)
- TypeScript Vue Plugin
Made with β€οΈ by FullstackRakibul