A CRM for one person is a small database: contacts and companies, a pipeline of deals, tasks with due dates and a timeline of notes per record. An agent builds that in a sitting. The weekend goes on what makes a CRM get used: logging email without typing, a phone in your pocket and moving your history over, since Capsule's export packs notes and email history into the last column of each CSV. A team that needs permissions, workflows and hundreds of connectors is better off self-hosting Twenty or EspoCRM than building.
Before you buildCheck Capsule Free first: two users, 250 contacts, one pipeline and 5 custom fields cost nothing and cover most solo use. You outgrow it at 250 contacts or a second pipeline.
Build me a personal sales CRM to replace Capsule. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React front end built with Vite. `npm start` serves everything on http://localhost:4750. - Storage: better-sqlite3 in ./data/crm.db. Parties (a kind of person or organisation, with an optional employer link), typed custom fields, opportunities (title, party, value, currency, stage, expected close date, open/won/lost), tasks (due date, category, linked record) and one notes table (body, timestamp, linked record). Migrations run on start. - Pipeline: a board whose stages live in a table (default Lead, Qualified, Proposal, Won, Lost); dragging a card moves it and writes the change as a note. Show open value by expected close month. - Record page: a reverse-chronological timeline of notes, emails and tasks for a party or an opportunity, plus full-text search over names, notes and fields with SQLite FTS5. - Tasks: Overdue / Today / Upcoming across every record; completing one can create the next. - Email log: read a folder called CRM over IMAP (`imapflow`, IMAP_HOST, IMAP_USER and IMAP_PASSWORD in .env) and attach each message to the party whose address matches the sender or a recipient. Unmatched messages go to an inbox to sort by hand. - Import: `crm import-capsule <zip>` reads the Contacts, Opportunities and Projects CSVs from Capsule's Account Settings > Export Data. Map columns by header, split the note and email history in the last column into note rows, print a dry-run summary first, and make a second run a no-op. Export every table back to CSV. - Single user behind one password in .env (signed cookie). No accounts, no telemetry, local-first. The only outbound connection is your IMAP server. - Out of scope: teams and permissions, workflow automation, sending email, calendar sync, project boards, marketing campaigns, a mobile app. - README: setup, the .env keys, an app password for Gmail or Outlook IMAP, and a note that Capsule's export leaves out file attachments, so download those from the records first.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Capsule.
Add a morning digest to the CRM in this folder. Requirements: - A command `crm digest` that sends one email through nodemailer SMTP (SMTP_URL and DIGEST_TO in .env) listing overdue and due-today tasks, with the party name, the task text and a link to the record. - Group by overdue first, then today; skip the email when there is nothing to send. - Add a deals section: open opportunities whose expected close date passed, with value and stage. - Provide a launchd plist and a cron line in the README to run it at 07:30. - Update the README.
Make the CRM in this folder usable on a phone. Requirements: - Add a web app manifest and a service worker (`vite-plugin-pwa`) so it installs to the home screen; cache the shell only, never record data. - A mobile layout for the record page and the task list: one column, large tap targets, and a quick-add button that creates a note or a task in two taps. - Serve over HTTPS on a Tailscale address (`tailscale serve`), keep the password login, and never expose the port to the public internet. - Update the README with the Tailscale setup.
Add calendar logging to the CRM in this folder. Requirements: - Read events from one CalDAV calendar (`tsdav`, CALDAV_URL, CALDAV_USER and CALDAV_PASSWORD in .env) for the last 30 days and the next 7, every 15 minutes. - Match attendees to parties by email address; create one note per matched event with title, time and attendees, linked to each matched party. Never create the same note twice. - Events with no match go to a review list with a button that creates the party. - Update the README.
Add project boards to the CRM in this folder. Requirements: - A projects table linked to a party and, optionally, to the won opportunity that created it, with stages stored in a table (default To do, In progress, Review, Done). - A board page where cards move between stages by drag and drop, each card with a due date and notes; tasks can be linked to a project as well. - A button on a won opportunity that creates a project with the same party and value. - Import the Projects CSV from the Capsule export when `crm import-capsule` runs. - Update the README.
Teams pay for shared history: everyone sees the notes and emails on a customer, the follow-up reminders land on the right person, and the accounting and mail tools they already use plug in. Per-seat pricing stays small next to a lost deal. That value shrinks to nearly nothing if you are the only user, which is where a local copy makes sense.
Estimate · Runs on your machine, or on a $5 VPS if you want it on your phone. IMAP and SQLite add nothing. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 2 users, 250 contacts, 5 custom fields, 1 sales pipeline, custom sales milestones and task categories, Gmail or Outlook mail connection. |
| Starter | $22 | $18 | 30,000 contacts, email templates, shared mailbox, basic reporting, premium integrations (Xero, Zendesk, Import2), goals, custom activity types, AI pipeline generator. |
| Growth | $40 | $36 | 60,000 contacts plus workflow automations, advanced sales reporting and dashboards, multiple pipelines and project boards, email sync, team and access controls, AI summaries, enrichment and meeting prep (beta). |
| Advanced | $60 | $54 | 120,000 contacts, 50 project boards and 50 sales pipelines on top of Growth. |
| Ultimate | $75 | $72 | 240,000 contacts, a dedicated account manager, custom training and priority support. |
Free covers up to 2 users, 250 contacts, one sales pipeline and 5 custom fields, with Gmail or Outlook connected for sending mail.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Email sync on Growth and up, which files messages against the right contact for you, The mobile app for logging a call from the road.
About $22 a month on the Starter plan per seat, $264 a year (checked 2026-10-19).
Email sync on Growth and up, which files messages against the right contact for you; The mobile app for logging a call from the road; 100+ ready integrations, including Xero, QuickBooks, Slack and Zapier; Shared use: teams, access controls and workflow automations; AI summaries of a contact's last 50 activities, contact enrichment and meeting prep. If any of those matter to you, keep paying.
Yes: Twenty (open source), EspoCRM (open source), Atomic CRM (open source).