1 Pipeline Overview
2 Kanban Board
3 Deal Detail
4 Add/Edit Deal
5 Settings
6 Forecast
7 Activity
8 Leaderboard
1 Pipeline & Deals
2 Forecast & Activity
1 Pipeline Command
2 Sales Analytics
Pipeline Overview
9:41
Sales Pipeline
Total Pipeline Value
$187,450
+12.3% vs last month
Win Rate
38%
+5%
Deals This Month
24
+3
Avg Deal Size
$7,810
-$420
Avg Close Time
14d
-2d
Stage Distribution
Lead (7)
Qualified (5)
Proposal (5)
Negotiate (4)
Won (2)
Lost (1)
Needs Attention
3 overdue
Sarah Mitchell
Bathroom remodel · 8 days in Proposal
$12,500
James Walker
Kitchen cabinets · No follow-up 5d
$8,200
Linda Chen
Deck build · Quote expires tomorrow
$15,800

PipelineOverviewScreen

useSalesPipeline() · onPressDeal · onPressAddDeal

Kanban Board
9:41
Deal Board
Board
List
Timeline
Lead $32,400 · 7
Tom Richardson
$4,800
Gutter replacement
Amy Schultz
$6,200
Window install (6 units)
Raj Patel
$3,100
Fence repair
Proposal $38,500 · 5
Sarah Mitchell
$12,500
Bathroom remodel
Mike Donovan
$9,400
Roof patch + inspection
Linda Chen
$15,800
Deck build (composite)

KanbanBoardScreen

useSalesPipeline() · onDragDeal · onPressDealCard


Deal Detail
9:41
Deal Detail
SM
Sarah Mitchell
(330) 555-0142 · sarah@email.com
Deal Value
$12,500
Bathroom Remodel · Source: Angi
Current Stage
Lead
Qualified
Proposal
Negotiate
Won
Activity Timeline
Proposal sent
Sent bathroom remodel quote for $12,500 via email
Feb 16, 2:30 PM
Discovery call
Discussed scope, timeline, and material options. Client prefers tile over stone.
Feb 14, 10:15 AM
Site visit completed
Measured bathroom, inspected plumbing. No major surprises.
Feb 12, 9:00 AM
Lead created
Inbound from Angi listing
Feb 10, 3:45 PM
Next Step
Follow up on proposal. Client has not responded in 8 days. Consider calling to discuss questions.
Notes
Client wants work completed before Easter. Budget is flexible for premium fixtures. Husband makes final decision — need both present at follow-up.
Linked Job #1847
Bathroom Remodel · Open

DealDetailScreen

useDealDetail(dealId) · onMoveStage · onLogActivity

Add / Edit Deal
9:41
New Deal
Customer
Sarah Mitchell
Deal Title
Bathroom Remodel — Full Gut
Estimated Value
$ 12,500
Lead Source
Service Category
Bathroom Remodel
Expected Close Date
Mar 15, 2026
Assigned Rep
MJ
Marcus Johnson
Win Probability
65%
Notes
Client prefers tile over stone. Budget flexible for premium fixtures. Wants work done before Easter.

DealFormScreen

useCreateDeal() / useUpdateDeal() · onSave · onPickCustomer

Pipeline Settings
9:41
Pipeline Settings
Stages
Drag to reorder. Tap to edit name, color, and auto-actions.
New Lead
Contacted
Qualified
Proposal Sent
Negotiating
Won
Closing
Lost
Closing
Auto-Actions
Trigger automations when deals move to a stage.
Send proposal email
Trigger: Moved to Proposal Sent
Active
Notify sales manager
Trigger: Moved to Negotiating
Active
Schedule follow-up (3d)
Trigger: Deal stale > 5 days
Paused
Win/Loss Reasons
Add custom reason...

PipelineSettingsScreen

usePipelineSettings() · onReorderStages · onSaveSettings


Sales Forecast
9:41
Forecast
Monthly Goal
$72K / $100K
72% achieved On track
Expected vs Actual
Expected
Actual
W1
W2
W3
W4
Weighted Forecast
Best Case
$124,200
Weighted
$87,450
Worst Case
$42,100
Closing This Week
Mike Donovan
Roof patch · 80% probability
$9,400
Karen Douglas
Siding repair · 60% probability
$5,200
Carlos Vega
Driveway pour · 40% probability
$7,800

SalesForecastScreen

useSalesForecast() · onChangePeriod · onPressDeal

Activity Feed
9:41
Activity
Today
Deal won: Mike Donovan
Roof patch + inspection — $9,400 closed by Marcus Johnson
11:30 AM
Won
Call with Sarah Mitchell
Follow-up on bathroom remodel proposal. Left voicemail.
10:15 AM
Proposal sent to Linda Chen
Composite deck build — $15,800 estimate delivered via email
9:45 AM
Proposal
Deal moved: Karen Douglas
Siding repair moved from Qualified to Proposal
9:00 AM
Yesterday
Deal lost: Brian Cooper
Went with competitor. Reason: Price too high.
4:20 PM
Lost
Meeting: Tom Richardson
On-site estimate for gutter replacement at 142 Oak St
2:00 PM
Email from Amy Schultz
Requesting clarification on window installation timeline
11:45 AM
New lead: Raj Patel
Fence repair — inbound from Google Ads
9:30 AM
New

ActivityFeedScreen

useSalesActivities() · onFilterChange · onPressActivity

Team Leaderboard
9:41
Leaderboard
Marcus Johnson
Top Closer · February 2026
$42K
Revenue
8
Deals Won
52%
Win Rate
Rankings By
1
MJ
Marcus Johnson
8 deals · 52% win rate
$42,100
2
DW
David Wilson
6 deals · 43% win rate
$31,800
3
RL
Rachel Lee
5 deals · 38% win rate
$24,500
4
TG
Tyler Garcia
4 deals · 33% win rate
$18,200
5
KB
Kim Brooks
3 deals · 30% win rate
$12,600
Revenue Comparison
MJ
$42K
DW
$32K
RL
$25K
TG
$18K
KB
$13K

TeamLeaderboardScreen

useTeamLeaderboard() · onChangePeriod · onChangeMetric

Data Architecture

Schema Tables

  • salesDeals — dealTitle, customerId, estimatedValue, stage, source, probability, assignedRep, expectedCloseDate, notes, wonAt, lostAt, lostReason
  • salesStages — name, color, position, autoActions[], requiredFields[], isClosingStage
  • salesActivities — dealId, type (call|email|meeting|note|stage_change), description, createdBy, metadata
  • salesForecasts — period, goalAmount, weightedAmount, bestCase, worstCase, actualClosed

Hooks

  • useSalesPipeline() — deals grouped by stage, pipeline KPIs, stage distribution
  • useSalesForecast(period) — goal progress, weighted forecast, confidence ranges, closing deals
  • useDealDetail(dealId) — deal data, activity timeline, linked job/bid, stage stepper
  • useTeamLeaderboard(period, metric) — rep rankings, bar chart data, top performer
  • useSalesActivities(filters) — chronological feed, filter by type/rep/date

Convex Queries

  • sales.deals.list — all deals with stage grouping
  • sales.deals.get — single deal with activities
  • sales.forecast.get — forecast for period
  • sales.activities.list — filtered activity feed
  • sales.leaderboard.get — rep rankings
  • sales.stages.list — pipeline stage config

Convex Mutations

  • sales.deals.create — create new deal
  • sales.deals.update — update deal fields
  • sales.deals.moveStage — move deal to stage + log activity
  • sales.deals.markWon — close as won + trigger automations
  • sales.deals.markLost — close as lost with reason
  • sales.activities.log — log call/email/meeting/note
  • sales.stages.upsert — create/update stage config
  • sales.stages.reorder — reorder pipeline stages
Pipeline & Deals
9:41
Sales Pipeline
Pipeline Summary
$187K
Total Value
24
Active Deals
Kanban Stages
Lead
8 deals • $42K
Proposal
6 deals • $65K
Negotiation
5 deals • $48K
Closed Won
5 deals • $32K
Johnson Kitchen Remodel
Proposal
Full kitchen renovation with cabinets, countertops, and backsplash
Value
$28,500
Probability
75%
Close Date
Mar 20
Forecast & Activity
9:41
Forecast & Activity
Forecast
$68K
Weighted
$187K
Best Case
Recent Activity
Called Sarah Johnson
2 hours ago
Proposal sent to Mike T.
Yesterday
Deal closed — $8,200
2 days ago
Revenue Forecast
Leaderboard
1
Jake Martinez
$42K closed
2
Sarah Lewis
$38K closed
Sales Pipeline
https://app.3bids.io/contractor/pipeline
3Bids
Pipeline ⌘1
Deals ⌘2
Forecast ⌘3
Activity ⌘4
Leaderboard ⌘5
Settings ⌘6
MK
Mike Kowalski
Contractor

Sales Pipeline

$187K
Pipeline Value
24
Active Deals
42%
Win Rate
$68K
Forecast
Stage Breakdown
Lead — 8 deals
$42K total value
Proposal — 6 deals
$65K total value
Closed Won — 5 deals
$32K total value
Pipeline Funnel
Sales Analytics
https://app.3bids.io/contractor/pipeline/analytics
3Bids
Pipeline ⌘1
Deals ⌘2
Forecast ⌘3
Activity ⌘4
Leaderboard ⌘5
Settings ⌘6
MK
Mike Kowalski
Contractor

Sales Analytics

Revenue Trend
Team Leaderboard
1
Jake Martinez
$42K closed • 12 deals
2
Sarah Lewis
$38K closed • 9 deals
3
Tom Rodriguez
$24K closed • 7 deals