Build idea · Intermediate
A personal CRM
Your network, minus the guilt of forgetting people.
A private CRM for the humans in your life, not sales leads: contacts, notes, and a log of every interaction. The core feature is a per-person "keep-in-touch cadence" — you tell it you want to talk to a close friend every month and a loose contact every six, and a scheduled job surfaces exactly who you're overdue to reach out to and emails you the list. It turns "I should really call them" into a queue you actually work through.
What you'll learn
- →Modeling relational data properly — contacts, interactions, and cadence rules as separate tables with foreign keys, using Drizzle ORM against Postgres instead of stuffing everything in one JSON blob
- →Running scheduled background work with cron: a daily job that computes who's overdue and triggers side effects, which is a pattern you'll reuse in almost every real app
- →Enforcing per-user data isolation so one account can never read another's contacts — the auth boundary that separates a toy from something you'd trust with private data
- →Sending transactional email that doesn't land in spam, with Resend and a real sending domain
Take it further
- +Natural-language quick capture: an input where you type 'coffee with Priya, she just started at Stripe and is house-hunting in Lisbon' and the Claude API parses it into the right contact, a dated interaction, and tags — no forms
- +Birthday and important-date reminders that draft a message for you, so the nudge comes with a ready-to-send opener instead of a blank text box
- +Read-only Gmail/Google Calendar sync that auto-logs when you last actually talked to someone, so cadences stay accurate without manual entry