Independent product
PrismCV
A resume workbench I built for my own job search, with a versioned resume diagnostic, assisted tailoring, job aggregation, and application tracking.
- Year
- 2025–present
- Role
- Solo
- Status
- Live

At a glance
- 200+API Routes
- 50+Database Models
- WebPlatform
Overview
I built PrismCV to manage one canonical resume, create job-specific versions, and track applications in one place. It combines a versioned resume diagnostic with Claude-assisted tailoring and collects jobs from seven sources: Remotive, RemoteOK, We Work Remotely, Himalayas, BuiltIn, and Greenhouse and Lever job boards.
Result
Solo product operation
I manage the architecture, billing, infrastructure, support, and releases.
Assisted resume work
Claude supports tailoring and scoring.
Subscription billing
Stripe checkout and webhook handling with deduplication and retries.
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 ImportImport a LinkedIn data export ZIP into the structured editor
- Document Parsingmammoth and unpdf import existing DOCX and PDF resumes into the structured editor
- PDF ExportGenerates ATS-friendly PDFs with deterministic layout
Resume Diagnostic & Job Aggregation
A scoring engine plus a backend job pipeline so users can score-and-apply in one place:
- Versioned resume diagnosticChecks return explicit, fixable feedback; the public methodology explains the current evaluation model.
- Keyword MatchDiff a resume against a target job description and surface missing keywords
- Seven-source catalogScheduled jobs collect listings from Remotive, RemoteOK, We Work Remotely, Himalayas, BuiltIn, Greenhouse, and Lever
- 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
Product Operations
The product includes billing, account access, email, and browser-capture operations:
- Stripe billingPaid plans with idempotent webhook handling and a deduplication table
- 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 and database run on a self-managed Hetzner VPS.
- Frontend
- Next.js 16 App Router, React 19, MUI 9, MUI X DataGrid
- Backend
- 200+ Next.js API routes for the web application
- Database
- PostgreSQL with Prisma 7 (50+ models, automated migrations on deploy)
- AI
- Anthropic Claude API for tailoring, cover letters, and job-resume scoring
- Rate limiting
- Redis-backed fair-use throttling
- Auth
- NextAuth with Google OAuth, credentials, and TOTP 2FA via otplib
- Payments
- Stripe subscriptions with webhook idempotency
- Resend for transactional and digest emails
- Observability
- Sentry for errors, server-side analytics in Postgres
- Hosting
- Self-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 product surfacesThe dashboard, billing, and account actions use one authorization model so product operations do not create a separate access path.
- Know the self-hosting tradeoffThe Next.js app and Postgres share one Hetzner VPS. This keeps costs predictable and leaves maintenance with me.
- Treat model calls as an external dependencyTailoring and scoring have separate retries, prompt versions, and cost controls.
More work
Let's talk.
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.


