A resume tailoring engine, keyword overlap analyzer, and application pipeline tracker.
- Repository: https://github.com/foverse/joby
- Author: Fouad (@foverse)
- Project Hub: growthmaker.fr
Joby adapts a structured Base CV to specific job postings while preserving data integrity. Instead of rewriting experience from scratch, it evaluates keyword coverage, surfaces skill gaps, and generates targeted, single-page outputs without modifying the original baseline.
The application includes an integrated job application CRM to log outreach, set follow-up dates, and maintain application records.
- Immutable Base CV: Keeps your master profile intact while versioning role-specific customizations.
- Versioned Job Snapshots: Captures job description text and hashes to compare iterations over time.
- Literal Keyword Analysis: Flags exact keyword matches, missing terminology, and language requirements.
- Single-page layout enforcement with real-time visual height limits.
- Server-side headless export powered by Puppeteer for exact print rendering.
- Native browser print stylesheet fallback.
- Kanban and list view for active applications, interviews, offers, and rejections.
- Follow-up date reminders and contact history logging.
- One-click JSON backup export to protect application data.
- Local Mode: Operates completely offline using browser
localStoragewith zero setup required. - PostgreSQL Mode: Connects to any standard PostgreSQL database (e.g. Aiven, Supabase, Neon) to persist snapshots and tailoring runs across devices.
- Frontend: Vanilla JavaScript, Vite, Modern CSS
- Backend: Node.js, Express 5
- Export Engine: Puppeteer (Headless Chrome)
- Database: PostgreSQL (
pgpool with TLS support)
git clone https://github.com/foverse/joby.git
cd joby
npm installOpen two terminal tabs:
Terminal 1 (Vite Dev Server):
npm run devTerminal 2 (API & PDF Export Server):
# Linux/macOS
PORT=3017 npm start
# Windows PowerShell
$env:PORT = "3017"; npm startOpen the Vite local address (e.g. http://localhost:5173) in your browser.
Configuration is optional. By default, Joby runs with zero configuration in local browser storage mode.
| Variable | Description | Default |
|---|---|---|
PORT |
API server listening port | 3016 |
DATABASE_URL |
PostgreSQL connection string with SSL | None (uses localStorage) |
AIVEN_DATABASE_URL |
Alternative alias for PostgreSQL connection | None |
When a database connection string is provided, Joby automatically creates the required tables (joby_base_cv, joby_job_snapshots, and joby_tailoring_runs).
joby/
├── index.html # Main application interface
├── app.js # Core state management and tailoring engine
├── applications.js # Application pipeline CRM and follow-up tracker
├── server.js # Express server, Puppeteer PDF generator, and DB layer
├── style.css # Core styling and print media rules
├── joby-design.css # Component styling
├── public/ # Static assets and icons
└── package.json # Project dependencies and run scripts
Developed by Fouad.
Explore more tools, case studies, and experiments at growthmaker.fr.