A self-serve hiring planner inspired by Dover's marketplace.
The app helps a founder answer four questions before opening a search:
- what will this hire likely cost on Dover's marketplace
- what comparable searches look like
- who should help first
- whether Dover marketplace is the right route
The demo is built from Dover's public 901-row cost-per-hire dataset and deployed as a working full-stack app.
- Frontend: React + Vite
- Backend: Django + Django REST Framework
- Database: Postgres
- Deployment: Vercel + Neon
- Data: normalized benchmark seed data derived from Dover's public Airtable export
Install dependencies:
./venv/bin/pip install -r requirements.txt
npm installStart the Django API:
./venv/bin/python backend/manage.py migrate
./venv/bin/python backend/manage.py bootstrap_planner
./venv/bin/python backend/manage.py runserver 127.0.0.1:8000Start the frontend:
npm run devThe repo ships with a normalized benchmark seed at backend/planner/data/benchmark_hires.json.
Re-export the frontend fallback data artifacts from that backend seed:
./venv/bin/python scripts/export_planner_data.pyCopy .env.example and provide:
DJANGO_SECRET_KEYDJANGO_DEBUGDJANGO_ALLOWED_HOSTSDJANGO_CSRF_TRUSTED_ORIGINSCORS_ALLOWED_ORIGINSDATABASE_URLDATABASE_SSLMODEVITE_API_BASE_URL
Frontend project:
- root directory:
. - framework: Vite
- uses vercel.json
- env:
VITE_API_BASE_URL=https://your-backend-project.vercel.app
Backend project:
- root directory:
backend - zero-config Django deployment on Vercel
- uses backend/vercel.json
- envs:
DJANGO_SECRET_KEYDJANGO_DEBUG=falseDJANGO_ALLOWED_HOSTS=.vercel.appDJANGO_CSRF_TRUSTED_ORIGINS=https://your-frontend-project.vercel.appCORS_ALLOWED_ORIGINS=https://your-frontend-project.vercel.appDATABASE_URL=postgresql://...DATABASE_SSLMODE=require
The backend deploy runs migrations and imports the bundled dataset automatically via backend/vercel.json:
"buildCommand": "python manage.py migrate && python manage.py bootstrap_planner"That means Neon is populated on deploy without a separate manual import step.
.gitignoreexcludes local databases, virtualenvs, build output, and.envfiles.- Raw source exports are intentionally not tracked in git.
- The shipped app is Django-backed. The frontend JSON planner remains as a fallback path if the API is unavailable.