Skip to main content

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
PrismCV resume builder and job tracker
An earlier version of the landing page. The methodology page describes how the current resume diagnostic works.

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
Email
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.

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.