Apps
CRM
Leads, opportunities, and one timeline per relationship — with email and SMS that actually send, and sequences that run on their own.
The CRM is a full sales workspace built on the shared schema. A lead is one or more people (and an optional organization) tied to a single timeline — not a parallel copy of a contact that drifts out of sync with the rest of your operation.
Pipelines and opportunities
Opportunities flow through editable pipelines. The default runs Lead → Qualified → Proposal → Negotiation → Won/Lost, and you can reshape the stages to match how you actually sell. Every move is recorded as an activity, so the pipeline is also an audit trail.
One timeline per relationship
Calls, emails, SMS, and meetings all land on the same timeline for a lead. Because the person behind that lead is the same canonical record used everywhere else in Excellent, a synced email, a logged call, and a payment can all sit against one relationship.
It actually sends
The CRM isn't a system of record you have to keep in sync by hand — it operates:
- Email and SMS send for real through pluggable transports (log-only by default, or Resend / Twilio / your own HTTP endpoint). Secrets live in environment variables, never in the database.
- Sequences run on a cadence — enroll a lead and the runner fires due steps and advances them. It can dispatch automatically on each autopilot tick.
- Delivery is tracked. Bounce and open webhooks flow back in, and a bounce auto-pauses that lead's cadence.
Sync out, and export
Changes write back bidirectionally to Salesforce (contacts, accounts, opportunities), Google Calendar (meetings), and any PostgREST/Supabase database — see Integrations. And because it's your data, you can export the whole thing to CSV or JSON at any time.
Every state change — a stage move, a sent email, an enrollment — writes an activity row you own.