Opportunities
The Opportunities module is where marketing and intake live. Every potential job — whether from a brand-new lead or a returning customer asking about a second project — enters here as an opportunity card and moves through a defined pipeline. The pipeline ends when an appointment lands on the schedule. That's the only finish line. Nothing else matters until a time is on the calendar.
Pipeline Stages
Opportunities move through five stages. Each stage has explicit entry and exit criteria — no opportunity sits in a stage without a defined next action.
| Stage | Entry Condition | Exit Condition | SLA |
|---|---|---|---|
| New | Lead arrives via web form, phone, referral, repeat customer request | Marketing acknowledges and assigns owner | Within 5 minutes during business hours |
| Contacted | Owner has made first attempt to reach (call, SMS, email) | Two-way conversation established OR moved to nurture sequence | Same business day |
| Qualified | Confirmed scope, budget range, and timeline align with services offered | Customer agrees to schedule a site visit or consultation | Within 48 hours |
| Appt Pending | Customer agreed to appointment but hasn't picked a time | Time confirmed on the schedule | Within 24 hours |
| Appt Booked | Confirmed appointment on the schedule | Opportunity moves to Project on appointment day | — |
Opportunity Sources
Every opportunity is tagged with a source — this is how marketing measures channel performance and where the lifetime value flows back to.
- Web form — Inbound from tradesmen-website contact page or quote request widget
- Phone (Digital Receptionist) — AI-answered call captured as opportunity with transcript attached
- Phone (Manual) — Staff-answered call, opportunity created from CRM
- Referral — Tagged with referring contact for referral program credit
- Repeat customer — Existing contact requesting a new job; auto-flagged as warm
- Social — DM, Google Business, or social ad campaign
- Walk-in / Field — Picked up in the field (yard sign call, neighbor referral)
New Lead vs. Repeat Customer
The pipeline treats both equally, but the workflow differs:
New Lead
- Source unknown until tagged
- No project history to reference
- Qualification step is full — scope, budget, address, timeline
- First-touch attribution captured for marketing attribution
- Higher friction, longer qualification time
Repeat Customer
- Contact record already exists
- Past projects, revenue, payment history all visible on the opportunity card
- Qualification is shorter — scope and timeline only (relationship is established)
- Auto-flagged "warm" in the pipeline UI
- Often skips the Contacted stage and lands in Qualified on creation
Both end the same way: an appointment booked.
Opportunity Card
Every opportunity card carries enough context for the owner to act without opening another tab:
| Field | Purpose |
|---|---|
| Contact name + phone | One-tap call from the card |
| Source | Where the opportunity came from |
| Stage | Current pipeline position |
| Estimated value | Range or single number, used for weighted pipeline forecast |
| Age in stage | How long it's been waiting — colored red after SLA breach |
| Owner | Who is responsible for moving it forward |
| Hot flag | Manual flag for high-value or time-sensitive opportunities |
| Next action | Free-text next step with optional due date |
| Last activity | Most recent call, SMS, or email (clickable to full conversation) |
Movement & Automation
Opportunities advance through the pipeline either by explicit action (owner drags the card) or by automation (system detects a triggering event).
Automatic stage advancement triggers:
| Trigger | Result |
|---|---|
| Two-way SMS or call connection logged | New → Contacted |
| Site visit appointment created on schedule | Qualified → Appt Pending |
| Appointment confirmed by customer (SMS reply, portal action) | Appt Pending → Appt Booked |
| Appointment day arrives and crew checks in | Appt Booked → Project (opportunity closes) |
| 7 days without any activity | Card surfaces in "Stale Opportunities" view |
| 30 days without activity | Auto-move to Nurture (cold sequence starts) |
Weighted Pipeline Forecast
The dashboard shows a weighted forecast — each stage carries a conversion probability based on historical close rates:
| Stage | Default Weight | Editable |
|---|---|---|
| New | 10% | ✓ |
| Contacted | 25% | ✓ |
| Qualified | 50% | ✓ |
| Appt Pending | 70% | ✓ |
| Appt Booked | 90% | ✓ |
The weighted pipeline figure on the dashboard is the sum of (opportunity value × stage weight) across all open opportunities. Weights are tuned per business based on their actual historical conversion rates.
The 5-Minute Rule
Industry research consistently finds that contact attempts made within 5 minutes of a web lead arriving are 21× more likely to qualify than attempts made within 30 minutes. The opportunity pipeline enforces this with two mechanisms:
- Real-time notification — New opportunities trigger push notifications to the assigned owner and any backup owner
- 5-minute SLA timer — Every New opportunity displays a countdown; the card turns red after 5 minutes elapse without an outbound attempt logged
The Digital Receptionist handles this automatically for inbound calls (it answers instantly). For web form leads, the on-call sales rep is paged.
Nurture Sequences
Not every opportunity is ready now. Opportunities that go stale move into a nurture sequence — automated SMS or email touches spaced over weeks or months. Common sequences:
- Cold lead nurture — 4 touches over 6 weeks (educational content, social proof, soft re-engagement)
- Lost to competitor — 2 touches over 3 months (check-in, value comparison)
- Future project — Quarterly check-in for customers who said "next year"
- Past customer re-engagement — Seasonal reminders (e.g., spring tune-up, fall winterization)
When a nurture touch generates a reply, the opportunity automatically re-enters the pipeline at the Contacted stage.
Access Control (RBAC)
| Permission | Owner | Manager | Marketing | Dispatcher | Technician |
|---|---|---|---|---|---|
| View all opportunities | ✓ | ✓ | ✓ | ✓ | Own only |
| Create opportunity | ✓ | ✓ | ✓ | ✓ | ✓ |
| Reassign opportunity | ✓ | ✓ | ✓ | ✗ | ✗ |
| Move stage | ✓ | ✓ | ✓ | Own only | Own only |
| Edit pipeline weights | ✓ | ✓ | ✗ | ✗ | ✗ |
| Close as Lost | ✓ | ✓ | ✓ | ✗ | ✗ |