Skip to content

CRM

CRM keeps the Contacts and Organizations a Startup knows, every Lead, and the Deals it pursues with them.

CRM is the record of every Contact, Organization, Lead, Deal and Customer a Startup knows. Every Message, Meeting, Invoice and Conversation lands in the same database, so each record's timeline is complete with no logging.

Summary

PartThis System
GroupSales
StatusLive
ShelfFront: offered from a Startup’s first days

You can ask:

  • “Who are my best leads?”
  • “Add this person as a lead”
  • “Move the Harbor deal to proposal”
  • “Merge these two contacts”
  • “Which deals are stuck?”

What you get

PartThis System
StartsOn for every Startup at creation, with nothing to install.
Built fromDatabase, Search, Integrations, AI gateway, Event streams, Enrichment

Nouns it owns

NounDefinition
ContactA Contact is a person or Agent a Startup knows by at least one address, where Consent to message them is recorded.
OrganizationAn Organization is an outside party as one Startup knows it, keyed by its domain, such as an employer or a vendor.
LeadA Lead is a Contact who raised a hand, by joining a Waitlist, filling a Form, or replying, without accepting an Offer.
DealA Deal is a Startup’s pursuit of one buyer’s acceptance of one or more Offers, ending won or lost.
CustomerA Customer is a party that has accepted an Offer from a Startup at any price, including zero.

Verbs

Events

DirectionEventHow
EmitsContact.createdBy Contact.create
EmitsContact.enrichedBy Contact.enrich
EmitsOrganization.createdBy Organization.create
EmitsLead.qualifiedBy Lead.qualify
EmitsDeal.proposedBy Deal.propose
EmitsDeal.wonBy Deal.win
EmitsDeal.lostBy Deal.lose
EmitsLead.convertedBy Lead.convert
EmitsContact.mergedBy Contact.merge
EmitsOrganization.mergedBy Organization.merge
EmitsLead.assignedBy Lead.assign
EmitsDeal.assignedBy Deal.assign
EmitsDeal.advancedBy Deal.advance
ConsumesOffer.acceptedMoves Lead to converted
ConsumesCustomer.activatedMoves Customer to activated
ConsumesSubscription.unsubscribedMoves Customer to churned
ConsumesSubscription.pastDueMoves Customer to atRisk
ConsumesDispute.openedMoves Customer to atRisk
ConsumesInvoice.collectedMoves Customer to activated
ConsumesOffer.subscribedMoves Customer to wonBack
ConsumesOrder.placedMoves Customer to wonBack

States

The lifecycle of a Lead:

Lead lifecycle: new, working, nurture, converted (ends), disqualified (ends)new → working: Lead.assignnew → nurture: Lead.nurturenew → disqualified: Lead.disqualifynew → converted: on Offer.acceptedworking → converted: Lead.qualifyworking → converted: Lead.convertworking → nurture: Lead.nurtureworking → disqualified: Lead.disqualifynurture → working: Lead.assignnurture → disqualified: Lead.disqualifynewworkingnurtureconverteddisqualified
StateMeaningMoves to
new (first)It raised a hand, and no Worker works it yet.working by Lead.assign; nurture by Lead.nurture; disqualified by Lead.disqualify; converted on Offer.accepted when the Lead buys on its own
workingIts owner is in touch and owes the next step.converted by Lead.qualify; converted by Lead.convert; nurture by Lead.nurture; disqualified by Lead.disqualify
nurtureNot ready to buy: it is off its owner’s queue and hears from a Sequence until it raises a hand again.working by Lead.assign; disqualified by Lead.disqualify
convertedIt fits an Offer: a Deal is open for it, or it bought on its own; the Customer record carries on.None: it ends here.
disqualifiedIt fits no Offer, for the reason recorded; its Contact record stays.None: it ends here.

Its other Nouns with a lifecycle: Customer.

Who operates it

PartThis System
AccountableSales Lead
TeamSales Team
SeatA role agent holds it until a Human is seated.
Autonomysupervised
Also calls its VerbsSales Engineer, Prospector

Approvals and limits

VerbRuleDetail
Deal.proposeA person says yes firstWaits 1 business hour
Contact.mergeA person says yes firstWaits 1 business hour
Organization.mergeA person says yes firstWaits 1 business hour
Deal.proposeLimit for the Sales Lead$25,000 per call
Deal.winMandate close-out for the Sales LeadMarks a Deal won or lost when the buyer signs or says no.
Deal.loseMandate close-out for the Sales LeadMarks a Deal won or lost when the buyer signs or says no.

Processes that use it

ProcessHow it uses it
Inbound salesA step calls Lead.qualify
OutboundA step calls Lead.assign

Rail underneath

NounStripe objectSource of truth
CustomerCustomer (customer)The source of truth is db.sb, and Stripe holds a copy written from it.

Views and dashboards

ViewShowsMetrics
PipelineOpen Deals by stage, with the owner and the next step on each.Outside paid Orders
The Sales Lead’s viewThe Metrics its accountable Role answers for.Paid listing conversion

Access

What each Access level may call here.

Access levelMay call
ownerEvery Verb (36)
adminAll but 3 of 36: Contact.merge, Deal.propose, Organization.merge
memberAll but 3 of 36: Contact.merge, Deal.propose, Organization.merge
viewerRead only (10 of 36)

Import and export

None.

Fees and pricing

None.

Availability and limits

PartThis System
StatusLive

Compliance notes

Every Contact keeps where it came from and its Consent; deciding who to contact stays the founder’s.

Controls it carries:

Example

TypeScript
// A clinic-software Startup gets a demo request from a six-clinic group.
import { $ } from 'startup-builder'

// The routing Policy picks the owner by ICP fit; no owner is named.
await $.Lead.assign({ lead: 'lead_8Kq2' })

// An assisted sale: the Lead becomes a Deal and keeps its Acquisition.
const { deal } = await $.Lead.convert({ lead: 'lead_8Kq2', offer: 'offer_clinic_annual', route: 'deal' })

// Refused, naming each empty field, until the proposal stage's required fields are filled.
await $.Deal.advance({ deal: deal!.$id, stage: 'proposal' })

// The same buyer wrote in from a second address; the merge keeps every Message and Event.
await $.Contact.merge({ contact: 'contact_dup_41', into: 'contact_7Hn3' })