Skip to main content
SaaSResume & job tracker

PrismCV

Year2025–present
RoleSolo
StatusLive

A paid resume builder and job tracker with ATS checks, assisted tailoring, job aggregation, and a 34-tool MCP server.

200+
API Routes
50+
Database Models
34
MCP Tools
View Live Site
PrismCV resume builder and job tracker
ATS check landing at prismcv.com

Overview

I built PrismCV to manage one canonical resume, create job-specific versions, and track applications in one place. The product combines a 13-point ATS checker with Claude-assisted tailoring, collects jobs from remote boards plus Greenhouse and Lever feeds, and exposes the same core actions through its web app and a 34-tool MCP server.

Result

Solo product operation

I manage the architecture, billing, infrastructure, support, and releases.

Assisted resume work

Claude supports tailoring, scoring, and connected MCP workflows.

Subscription billing

Stripe webhooks, deduplication, retries, partial payments, and three pricing tiers run in production.

Job aggregation

Seven job sources feed a deduplicated catalog scored for each user.

Resume Engine

A multi-version resume system that treats every tailored variant as a branch off a canonical profile:

Branch & TailorCreate job-specific variants of a single source resume without losing the original
AI TailoringClaude rewrites bullets and summaries against a pasted job description in one click
LinkedIn ImportParse LinkedIn ZIP exports or pull profiles via URL with a Playwright-backed scraper
Document Parsingmammoth and unpdf import existing DOCX and PDF resumes into the structured editor
PDF ExportGenerates ATS-friendly PDFs with deterministic layout

ATS Scoring & Job Aggregation

A scoring engine plus a backend job pipeline so users can score-and-apply in one place:

13-Point ATS ScoringContact info, sections, content quality, formatting. Every check returns explicit, fixable feedback.
Keyword MatchDiff a resume against a target job description and surface missing keywords
Multi-Source CatalogServer-side crons crawl Remotive, RemoteOK, WeWorkRemotely, Himalayas, BuiltIn, Greenhouse, and Lever boards
Personalized MatchEach user sees jobs scored against their own keywords, location, and salary preferences
Kanban TrackerDrag applications through Applied / Phone Screen / Interview / Offer with full status history

Subscriptions & MCP Server

Stripe handles billing, and Model Context Protocol exposes the same core actions to connected tools:

Stripe TiersFree / Pro / Enterprise with idempotent webhook reconciliation and dedup table
34-Tool MCP ServerSix modules (Resumes, Jobs, Applications, Cover Letters, Profile Bank, Dashboard), usable from Claude Desktop, Cursor, or Claude Code.
Scoped API TokensSHA-256 hashed personal tokens with 90-day expiry for MCP and CLI access
Daily Job DigestResend-powered email digest of newly-matched jobs scored against user preferences
Browser ExtensionChrome/Firefox extension captures jobs from arbitrary sites into the catalog

Technical Architecture

The app, database, cache, and MCP server run on a self-managed Hetzner VPS.

FrontendNext.js 16 App Router, React 19, MUI 9, MUI X DataGrid
Backend200+ Next.js API routes plus a separate MCP server package
DatabasePostgreSQL with Prisma 7 (50+ models, automated migrations on deploy)
AIAnthropic Claude API for tailoring, cover letters, and job-resume scoring
Cache & Rate LimitingUpstash Redis with ioredis for fair-use throttling
AuthNextAuth with Google OAuth, credentials, and TOTP 2FA via otplib
PaymentsStripe subscriptions with webhook idempotency
EmailResend for transactional and digest emails
ObservabilitySentry for errors, server-side analytics in Postgres
HostingSelf-managed Hetzner VPS via Coolify, auto-deploy from staging and main

Lessons

Prioritize as a solo operatorOwning product, design, engineering, billing, support, and infrastructure keeps the feature list tied to customer use.
Share authorization across interfacesThe dashboard and 34 MCP tools use the same authorization model, so connected tools do not create a separate access path.
Know the self-hosting tradeoffPostgres, Redis, the MCP server, and the Next.js app share one Hetzner VPS. This keeps costs predictable and leaves maintenance with me.
Treat model calls as an external dependencyTailoring, scoring, and MCP workflows have separate retries, prompt versions, and cost controls.

More Projects

Planning a customer-facing software product?

I can help shape the smallest useful release, build the product, and connect the subscriptions, data, and operations around it.