A full-stack SaaS platform that helps Nigerian professionals build, score, and deliver standout CVs — with AI enhancement, job matching, and Paystack payments.
CVPadi is a SaaS CV builder built specifically for the Nigerian job market. Users go through a conversational build wizard, get an AI score on their CV, pay via Paystack to unlock their final PDF, and receive AI-enhanced delivery assets by email — all in one flow.
It solves a real problem: most Nigerian job seekers submit generic, unoptimised CVs. CVPadi gives them a professional, AI-improved CV matched to real job opportunities scraped from the Nigerian market.
- Conversational wizard with local backup and Supabase sync
- Real-time CV score suggestions as you build
- Watermarked free preview before payment
- CV version timeline with forking — iterate without losing history
- Paystack integration with HMAC SHA-512 webhook verification
- Server-side price validation before unlocking
- Referral system with account credits applied at checkout
- Background queue worker powered by Claude Haiku
- Rewrites CV objective, suggests missing skills
- Regenerates PDF + WhatsApp JPG delivery assets post-payment
- Runs every 15 minutes via Supabase Edge Function + pg_cron
- PDF and WhatsApp JPG delivered via 2-hour signed URLs
- Abandoned draft email sequences
- Post-download follow-up sequences
- User preference centre at
/email-preferences
- Supabase Edge Function job scraper from legal Nigerian sources
- Auto-disables sources after 3 consecutive failures
- Weighted matching: industry 30% · location 25% · experience 25% · skills 20%
- Only serves matches scoring ≥ 40
- Authenticated job detail route — matched jobs only
- Daily digest at 8:00 AM WAT via pg_cron
- FingerprintJS soft signal
- Disposable email blocking
- Edge preview rate limiting
- Atomic SQL free-preview counter
- reCAPTCHA (enforced in production)
- Application tracker (Applied / Interview / Rejected / Offer)
- Authenticated job matches feed
- CV version history and fork flow
- Referral landing with attribution tracking
/check— public CV score checker (paste text or upload PDF)/salary— community salary database with magic-link verification/cv-tips/[industry]— static industry-specific CV guides/nysc— NYSC CV guide, PPA company directory, after-NYSC advice
| Layer | Technology |
|---|---|
| Framework | Next.js 14 App Router + TypeScript |
| Styling | Tailwind CSS |
| Database | Supabase (PostgreSQL + RLS + pg_cron) |
| Auth | Supabase Auth (email, magic link, Google) |
| Payments | Paystack (webhooks + HMAC verification) |
| AI | Claude API (Haiku — queued enhancement) |
| Resend | |
| Storage | Supabase private bucket + signed URLs |
| PDF Generation | Server-side PDF + WhatsApp JPG |
| Job Scraping | Supabase Edge Functions |
| Error Monitoring | Sentry (app, server, edge) |
| Deployment | Vercel |
git clone https://github.com/Eldren-cmd/CVpadi.git
cd CVpadi
npm install
cp .env.example .env.local
# Fill in your env vars (see below)
npm run devSee .env.example for the full list. Key variables:
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anon key |
SUPABASE_SERVICE_ROLE_KEY |
Server-side Supabase access |
PAYSTACK_SECRET_KEY |
Paystack server key (never expose to client) |
NEXT_PUBLIC_PAYSTACK_PUBLIC_KEY |
Paystack public key |
ANTHROPIC_API_KEY |
Claude API key for AI enhancement |
RESEND_API_KEY |
Email delivery |
EMAIL_SEQUENCE_CRON_SECRET |
Shared secret for cron processors |
SENTRY_DSN |
Error monitoring |
| Route | Description |
|---|---|
/ |
Landing / milestone status |
/login |
Auth (email, magic link, Google) |
/build |
Protected CV builder wizard |
/check |
Public CV score checker |
/salary |
Community salary database |
/dashboard |
Authenticated dashboard home |
/dashboard/tracker |
Job application tracker |
/dashboard/versions |
CV version history + fork |
/jobs/[jobId] |
Authenticated matched job detail |
/cv-tips/[industry] |
Static industry CV guides |
/nysc |
NYSC guide hub |
/ref/[code] |
Referral landing |
/email-preferences |
Email cadence controls |
Run in order before testing each feature:
# Core schema
supabase/migrations/202603030001_checkpoint1_schema.sql
# CV versioning
supabase/migrations/202603030004_cv_versioning.sql
# Referral system
supabase/migrations/202603030005_referral_system.sql
# Job scraper
supabase/migrations/202603030006_job_scraper_source_index.sql
supabase/migrations/202603030007_job_sources_table.sql
supabase/seed.sql
# Scheduled jobs (pg_cron)
supabase/migrations/202603030008_schedule_scrape_jobs.sql
supabase/migrations/202603030010_schedule_process_ai_queue.sql
supabase/migrations/202603030011_schedule_process_job_matches.sql
# Phase 2 fixes
supabase/migrations/202603030012_phase2_loophole_fixes.sql- Full SaaS architecture with Next.js 14 App Router
- Supabase RLS policies, Edge Functions, and pg_cron scheduling
- Paystack webhook security with HMAC SHA-512 signature verification
- AI integration with Claude API in a queued background worker pattern
- PDF and image asset generation and delivery via signed storage URLs
- Email sequences and preference management with Resend
- Multi-signal anti-abuse stack combining fingerprinting, rate limiting, and atomic SQL
- Weighted job-matching algorithm with automated scraping pipeline
Gabriel Adenrele Adegboyega — Full Stack Developer
MIT © 2026 Gabriel Adenrele Adegboyega