CRM App Starter · Industry version
A CRM where deals are proposals and won work becomes engagements — generated into code your consultancy owns.
Selling services isn't selling a product: the deal is a scoped proposal, the close is a signed engagement, and next year's best pipeline is this year's client list. This starter builds the CRM around that loop and hands your firm the code.
01 · The problem
In a services firm the deal is a proposal, and proposals have a life a generic deal record can't hold: three versions, a scope that grew and shrank, options priced separately, a validity date. Flatten that into one amount field and you lose the negotiation history — and with it, any honest read on which scopes win and which get haggled down.
Selling and delivering are one system. Winning work the team can't staff next month is a failure that looks like success in a conquest-style pipeline, and the engagement you just finished is the most likely source of the next one. A CRM that forgets a client the moment the deal closes hides both the capacity risk and the renewal.
Then there's inbound. Agencies drown in inquiries that were never going to fit — wrong budget, wrong service, wrong timeline — and every hour spent scoping them is unbillable. Without structured fit signals in the schema, triage lives in one person's head and leaves with them.
02 · Data model
Everything in the base CRM starter —
companiescontactsleadsdealspipelinesactivities— plus the entities this industry actually runs on:
| table | what it holds |
|---|---|
proposals | Scoped, priced documents with version history and validity dates — the services shape of a deal, linked to company and deal. |
engagements | Won work with type (project or retainer), team, and start and end dates — the bridge from sale to delivery, and the source of renewals. |
03 · Screens
Stages mirror how services actually sell — inquiry, discovery, scoping, proposal out, negotiation, signed — and cards show the current proposal version and its expiry. A proposal aging past its validity date is the follow-up nobody should have to remember.
Scoring triages inbound on budget signals, service match, and source quality before anyone books a scoping call. Poor fits get a fast, polite no; strong fits get the senior person — and the rules for both are readable code in your repo.
Reports answer the partner-meeting questions: win rate by service line and source, proposal-to-signature time, pipeline weighed against delivery capacity, and every engagement end date surfaced as a renewal opportunity with a countdown.
04 · In practice
Discovery notes shape proposal v1; revisions accrue as versions instead of overwriting each other. Signature converts the proposal into an engagement carrying the final scope — delivery starts from a record, not a re-explanation.
Engagements approaching their end date populate a renewal pipeline automatically. The timeline shows the relationship's health — delivered work, escalations, expansion conversations — so the renewal call is prepared, not improvised.
Closed engagements with strong outcomes trigger a referral ask as a queued activity. Source tracking then shows which clients actually send work — so the thank-you dinners go to the right people.
Proposals are the selling document — scope, price, versions. Once work starts, billing belongs in an invoicing system; the invoicing app starter covers that, and since both generate code you own, an engagement can hand its line items straight to your invoice builder.
Yes — engagements carry a type, and reporting treats them differently: retainers drive the renewal calendar and recurring-revenue views, projects drive one-off pipeline and utilization. Firms running both see them in one place.
No — it ends where delivery begins. The engagement record is the handoff: scope, team, dates. For running the work itself there's a dedicated project management starter, and owning both codebases means the handoff can be a shared table instead of copy-paste.
The starter is smallest-viable by design: companies, contacts, proposals, engagements. A solo practice runs the same loop at lower volume — and because there's no per-seat pricing, the tool never has to justify a subscription against irregular income.
Dual7 App Starters
A CRM where deals are proposals and won work becomes engagements — generated into code your consultancy owns. Describe your version to start — the output is a project you own.