Sales CRM

macOSweb appElectronReactSupabaseClaudeMEDDICmobile

Sales CRM is the app my sales team uses to run new business — selling to education publishers and language schools. It’s the sister app to our Fundraise CRM: the same shared, live-syncing foundation, retargeted from raising money to closing deals, with the MEDDIC qualification framework built into every account.

What it does

  • One shared pipeline. The whole team works the same set of accounts and every edit syncs in real time. Deals move Lead → Discovery → Demo → Evaluation → Proposal → Negotiation → Closed, and the dashboard rolls up what’s won, what’s in negotiation, and what’s still live.
  • MEDDIC on every deal. Each account captures Metrics, Economic Buyer, Decision Criteria, Decision Process, Identify Pain, and Champion, with an at-a-glance score so reps can see which deals are actually qualified and which are wishful thinking.
  • People, not just companies. Every account holds multiple contacts with their own details, and the full communication trail — calls, emails, LinkedIn, meetings — is logged per person, so it stays readable even with several stakeholders in the same deal.
  • Pricing proposals. Quotes are stored as volume tiers — a license fee per user per month at each band — with status and history, so the latest pricing always lives with the account.
  • Knows where it’s leaking. When a deal is lost, the CRM records the stage it died at, then shows where in the funnel we’re weakest — so we fix the stage that’s actually costing us, not the one we assume.
  • Anywhere, any device. A native macOS app at your desk, or the same CRM in a browser on your phone — same database, always in sync, so you can update a deal walking out of a meeting.
  • Auto-fill from transcripts. Paste a call transcript and Claude extracts the MEDDIC fields and next steps, and can save the transcript straight into the account’s activity log.

How it’s built

  • One codebase, two surfaces — a Vite + React renderer that ships both ways: packaged by Electron into a double-clickable macOS app, and deployed as a web app on Cloudflare Pages that runs in any browser, desktop or mobile.
  • Data & auth — a shared Supabase Postgres database with row-level security and realtime; accounts, contacts, communications, and proposals are separate tables that stay live across every client. Sign-in is invite-only, so removing a teammate revokes access immediately.
  • Extraction — transcript parsing runs in the Electron main process using each user’s own Anthropic key, stored encrypted in their Mac’s Keychain and never sent anywhere but Anthropic’s API.
  • Security — context isolation, sandboxing, no Node integration in the renderer, and a content-security policy that only allows outbound traffic to Supabase. No secrets in the build.

Why I made it

We already had the Fundraise CRM for raising capital, and the sales team wanted the same thing for selling — but a pipeline is only as good as its qualification. Bolting MEDDIC onto every account, logging conversations per person, and recording where deals die turns the CRM from a list of names into something that tells us, honestly, where the business is strong and where it’s weak.