Demo mode. Sample data, Gmail sends are dry runs (the exact API request is recorded, nothing leaves), no login. The sample data resets once a day, or now with the button.

Handoff checklist

The engagement ends when every line below is true and you have confirmed it yourself.

Deliverables

  • [ ] Complete source code in a git repository you own (GitHub, GitLab, or a private server). The developer's copies are deleted after transfer.
  • [ ] Database and schema: docs/SCHEMA.md, the SQLAlchemy models in deanreach/models.py, and your live data/deanreach.db (or Postgres database).
  • [ ] Deployment and configuration files: Dockerfile, docker-compose.yml, .env.example, the systemd unit and Caddy snippet in docs/INSTALL.md.
  • [ ] Administrator access: the ADMIN_USER / ADMIN_PASSWORD in your .env; change the password at handoff.
  • [ ] Installation and deployment documentation: docs/INSTALL.md.
  • [ ] User documentation: docs/USER-GUIDE.md (also under Docs inside the app).
  • [ ] Gmail and API configuration instructions: docs/GMAIL-SETUP.md.
  • [ ] Backup and recovery instructions: docs/BACKUP-RECOVERY.md, scripts/backup.sh, scripts/restore.sh.
  • [ ] Third-party services and recurring costs: docs/COSTS.md.

Independence from the developer

  • [ ] The Google Cloud project, the OAuth client and the Gmail account are yours (created under your Google account, or ownership transferred in the Cloud console).
  • [ ] The server (or hosting account) is yours; the developer's SSH keys are removed.
  • [ ] The ANTHROPIC_API_KEY in .env, if used, was created in your Anthropic account.
  • [ ] SECRET_KEY and ADMIN_PASSWORD were regenerated by you after handoff.
  • [ ] The git remote points at your repository and the developer's access is revoked.
  • [ ] A backup was taken and restored once on another machine while the developer was still available.

Acceptance walk-through

  1. Discovery run on your real source pages: the trace names the extractor per page and the people found; misses are in the review queue with reasons.
  2. Outreach run with TRANSPORT=dryrun: the recorded emails read correctly for each template and salutation; the CV is attached.
  3. Switch to TRANSPORT=gmail, send to your own test address by adding yourself as a source contact, and confirm the email arrives with the attachment and appears in the Sent folder of the dedicated account.
  4. Pause, add an exclusion, change a cap: each takes effect on the next send check.
  5. Export contacts and history to Excel.