Opportunity Stages
Sales pipeline stages, probability forecasting, and deal progression diagrams
Opportunity Stages
This page covers the sales opportunity pipeline including stages, probability forecasting, and deal management.
Opportunity State Machine
stateDiagram-v2
[*] --> PROSPECTING: Create Opportunity
PROSPECTING --> QUALIFICATION: Initial Meeting
PROSPECTING --> CLOSED_LOST: Disqualified
QUALIFICATION --> NEEDS_ANALYSIS: Qualified
QUALIFICATION --> CLOSED_LOST: Not a Fit
NEEDS_ANALYSIS --> PROPOSAL: Requirements Gathered
NEEDS_ANALYSIS --> QUALIFICATION: Back to Qualify
PROPOSAL --> NEGOTIATION: Proposal Sent
PROPOSAL --> NEEDS_ANALYSIS: Revise Requirements
NEGOTIATION --> CLOSED_WON: Agreement Signed
NEGOTIATION --> CLOSED_LOST: Deal Lost
NEGOTIATION --> PROPOSAL: Revise Proposal
CLOSED_WON --> [*]
CLOSED_LOST --> [*]
note right of PROSPECTING: 10% probability
note right of QUALIFICATION: 20% probability
note right of NEEDS_ANALYSIS: 40% probability
note right of PROPOSAL: 60% probability
note right of NEGOTIATION: 80% probabilityPipeline Stages Detail
| Stage | Probability | Exit Criteria | Activities |
|---|---|---|---|
| Prospecting | 10% | Initial meeting scheduled | Research, outreach |
| Qualification | 20% | BANT criteria met | Discovery call, qualification |
| Needs Analysis | 40% | Requirements documented | Deep dive, demo |
| Proposal | 60% | Proposal presented | Create & send proposal |
| Negotiation | 80% | Terms agreed | Negotiate, close |
| Closed Won | 100% | Contract signed | Handoff to success |
| Closed Lost | 0% | Deal lost | Document reasons |
Pipeline Visualization
flowchart LR
subgraph "Active Pipeline"
P[Prospecting<br/>$500K<br/>15 deals]
Q[Qualification<br/>$300K<br/>10 deals]
N[Needs Analysis<br/>$400K<br/>8 deals]
PR[Proposal<br/>$250K<br/>5 deals]
NE[Negotiation<br/>$150K<br/>3 deals]
end
P --> Q
Q --> N
N --> PR
PR --> NE
subgraph "Outcomes"
W[Won<br/>$200K]
L[Lost<br/>$100K]
end
NE --> W
NE --> L
style W fill:#c8e6c9
style L fill:#ffcdd2Stage Progression Sequence
sequenceDiagram
participant Rep as Sales Rep
participant UI as CRM UI
participant API as TRPC Router
participant Service as Opportunity Service
participant DB as Database
participant Notify as Notification Service
Rep->>UI: Move to next stage
UI->>API: updateOpportunityStage(id, stage)
API->>Service: updateStage(id, newStage)
Service->>DB: Get opportunity
DB-->>Service: Opportunity data
Service->>Service: Validate stage transition
Note over Service: Check required fields for stage
alt Missing requirements
Service-->>API: Error: Missing fields
API-->>UI: Show requirements
else Valid transition
Service->>Service: Update probability
Service->>DB: Update opportunity
Service->>DB: Log stage change activity
alt Critical stage
Service->>Notify: notifyManager(opportunity)
end
DB-->>Service: Updated
Service-->>API: Success
API-->>UI: Show updated pipeline
endOpportunity Creation Flow
flowchart TD
START[Create Opportunity] --> SOURCE{Source}
SOURCE -->|Lead Conversion| FROM_LEAD[From Qualified Lead]
SOURCE -->|Existing Client| FROM_CLIENT[From Client Account]
SOURCE -->|Manual| MANUAL[Manual Entry]
FROM_LEAD --> PREFILL[Pre-fill from Lead Data]
FROM_CLIENT --> PREFILL_CLIENT[Pre-fill from Client]
MANUAL --> ENTRY[Enter Details]
PREFILL --> FORM[Opportunity Form]
PREFILL_CLIENT --> FORM
ENTRY --> FORM
FORM --> REQUIRED{Required Fields}
REQUIRED -->|Name| NAME[Opportunity Name]
REQUIRED -->|Amount| AMOUNT[Deal Amount]
REQUIRED -->|Close Date| DATE[Expected Close]
REQUIRED -->|Owner| OWNER[Assigned Owner]
NAME --> VALIDATE
AMOUNT --> VALIDATE
DATE --> VALIDATE
OWNER --> VALIDATE
VALIDATE[Validate] --> CREATE[Create Opportunity]
CREATE --> ASSIGN[Assign Stage: Prospecting]
ASSIGN --> NOTIFY[Notify Owner]
style CREATE fill:#e8f5e9Deal Amount Forecasting
flowchart TD
subgraph "Weighted Pipeline"
OPP1[Opp 1: $100K × 20% = $20K]
OPP2[Opp 2: $50K × 60% = $30K]
OPP3[Opp 3: $200K × 80% = $160K]
end
OPP1 --> TOTAL[Weighted Total: $210K]
OPP2 --> TOTAL
OPP3 --> TOTAL
subgraph "Forecast Categories"
COMMIT[Commit: 80%+ probability]
BEST[Best Case: 40%+ probability]
PIPELINE[Pipeline: All active]
end
TOTAL --> COMMIT
TOTAL --> BEST
TOTAL --> PIPELINEWin/Loss Analysis
flowchart TD
CLOSE[Opportunity Closing] --> OUTCOME{Outcome}
OUTCOME -->|Won| WON_FLOW[Won Flow]
OUTCOME -->|Lost| LOST_FLOW[Lost Flow]
subgraph "Won Processing"
WON_FLOW --> RECORD_WIN[Record Win]
RECORD_WIN --> CREATE_ORDER[Create Order/Contract]
CREATE_ORDER --> HANDOFF[Handoff to Success]
HANDOFF --> CELEBRATE[Update Metrics]
end
subgraph "Lost Processing"
LOST_FLOW --> REASON[Capture Loss Reason]
REASON --> COMPETITOR[Lost to Competitor?]
REASON --> PRICE[Price Issue?]
REASON --> TIMING[Timing Issue?]
REASON --> OTHER[Other Reason]
COMPETITOR --> ANALYZE
PRICE --> ANALYZE
TIMING --> ANALYZE
OTHER --> ANALYZE
ANALYZE[Analyze & Learn] --> FUTURE[Improve Future Deals]
end
style WON_FLOW fill:#e8f5e9
style LOST_FLOW fill:#ffebeeLoss Reasons Distribution
pie title Lost Deal Reasons
"Lost to Competitor" : 30
"Price/Budget" : 25
"No Decision" : 20
"Timing" : 15
"Product Fit" : 10Opportunity Activity Tracking
sequenceDiagram
participant Rep as Sales Rep
participant CRM as CRM System
participant DB as Database
participant Calendar as Calendar
Note over Rep,Calendar: Throughout opportunity lifecycle
Rep->>CRM: Log call
CRM->>DB: Create activity (CALL)
Rep->>CRM: Log email
CRM->>DB: Create activity (EMAIL)
Rep->>CRM: Schedule meeting
CRM->>Calendar: Create calendar event
CRM->>DB: Create activity (MEETING)
Rep->>CRM: Log note
CRM->>DB: Create activity (NOTE)
Rep->>CRM: Create task
CRM->>DB: Create activity (TASK)
Note over CRM: Auto-track activities
CRM->>DB: Activity timeline completeProducts in Opportunity
erDiagram
OPPORTUNITY ||--o{ OPPORTUNITY_PRODUCT : contains
OPPORTUNITY {
string id PK
string name
decimal amount
enum stage
}
OPPORTUNITY_PRODUCT {
string id PK
string opportunityId FK
string productId FK
int quantity
decimal unitPrice
decimal discount
decimal totalPrice
}
OPPORTUNITY_PRODUCT }o--|| PRODUCT : references
PRODUCT {
string id PK
string name
decimal listPrice
}Stage-Gate Requirements
flowchart TD
subgraph "Prospecting Exit"
P1[Initial contact made]
P2[Basic info gathered]
P3[Interest confirmed]
end
subgraph "Qualification Exit"
Q1[BANT completed]
Q2[Key stakeholders identified]
Q3[Next steps agreed]
end
subgraph "Needs Analysis Exit"
N1[Requirements documented]
N2[Technical fit confirmed]
N3[ROI calculated]
end
subgraph "Proposal Exit"
PR1[Proposal delivered]
PR2[Pricing approved]
PR3[Stakeholder buy-in]
end
subgraph "Negotiation Exit"
NE1[Terms negotiated]
NE2[Legal review complete]
NE3[Contract signed]
end
P1 --> Q1
P2 --> Q1
P3 --> Q1
Q1 --> N1
Q2 --> N1
Q3 --> N1
N1 --> PR1
N2 --> PR1
N3 --> PR1
PR1 --> NE1
PR2 --> NE1
PR3 --> NE1Sales Velocity Calculation
flowchart LR
subgraph "Components"
OPPS[# of Opportunities]
WIN[Win Rate %]
DEAL[Avg Deal Size]
CYCLE[Sales Cycle Days]
end
subgraph "Formula"
CALC[Velocity = Opps × Win% × Deal Size ÷ Cycle]
end
subgraph "Example"
EX[100 × 25% × $10K ÷ 30 = $8,333/day]
end
OPPS --> CALC
WIN --> CALC
DEAL --> CALC
CYCLE --> CALC
CALC --> EX