1 Browse Categories
2 Select Tasks
3 Build Quote
4 Present & Accept
1 Browse & Build
2 Present & Accept
1 Pricebook Manager
2 Quote Builder
Categories Tab
9:41
Pricebook
8
Categories
142
Tasks
68%
Close Rate
Categories
Search
Quotes
HVAC
Heating, ventilation & cooling
32 tasks
5 subcategories
Plumbing
Pipes, drains & fixtures
28 tasks
4 subcategories
Electrical
Wiring, panels & outlets
24 tasks
3 subcategories
Roofing
Shingles, repairs & gutters
18 tasks
3 subcategories
Landscaping
Lawn, trees & hardscaping
22 tasks
4 subcategories

CategoryList component with trade icons and counts

useQuery(api.pricebook.queries.getCategories)

Search Tab
9:41
Pricebook
8
Categories
142
Tasks
68%
Close Rate
Categories
Search
Quotes
WH-GAS-50-INST
Install 50 Gal Gas Water Heater
$2,450
3h
WH-GAS-40-INST
Install 40 Gal Gas Water Heater
$2,150
2h 30m
WH-ELEC-50-INST
Install 50 Gal Electric Water Heater
$1,950
2h
WH-TLESS-INST
Install Tankless Water Heater
$4,200
4h
WH-DRAIN-FLUSH
Water Heater Drain & Flush
$189
45m

SearchInput + TaskListItem results

useQuery(api.pricebook.queries.searchTasks, { query })


Category — List View
9:42
Roofing
All (18)
Shingle Repair (6)
Full Replacement (5)
Gutters (7)
RF-SHGL-RPR 12x
Patch Missing Shingles (up to 10)
$485
1h 30m
RF-SHGL-FULL
Full Shingle Replacement (per square)
$385
45m
RF-RIDGE-CAP 8x
Ridge Cap Replacement
$650
2h
RF-FLASH-RPR
Flashing Repair (chimney/vent)
$375
1h
RF-GUTTER-CLN 22x
Gutter Cleaning (whole house)
$225
1h 30m
RF-GUTTER-INST
Seamless Gutter Install (per ft)
$18
5m
RF-LEAK-DIAG
Roof Leak Diagnostic
$195
1h

TaskListItem with subcategory pills and list/grid toggle

useQuery(api.pricebook.queries.getTasksByCategory)

Category — Card View
9:42
Roofing
All (18)
Shingle Repair (6)
Full Replacement (5)
Gutters (7)
RF-SHGL-RPR
Patch Missing Shingles (up to 10)
$485.00
Good
Remove damaged shingles, install new architectural shingles with matching color. Includes ice & water shield.
Simple
1h 30m
12mo warranty
Labor$285.00
Materials$200.00
Add to Quote
RF-RIDGE-CAP
Ridge Cap Replacement
$650.00
Better
Remove old ridge cap, install premium vented ridge cap with new underlayment. Improves attic ventilation.
Standard
2h
24mo warranty
Labor$350.00
Materials$300.00
Add to Quote
RF-FULL-TEAR
Full Tear-Off & Reroof (per square)
$525.00
Best
Complete tear-off to deck, inspect sheathing, install premium synthetic underlayment and GAF Timberline HDZ.
Complex
4h
60mo warranty
Labor$275.00
Materials$250.00
Add to Quote

TaskCard with tier badges, breakdown & complexity indicators

showBreakdown={true}, tier color borders from TIER_COLORS


New Quote — Customer Info
9:43
New Quote
Customer Information
MT
Margaret Thompson
482 Merriman Rd, Akron, OH
Email
margaret.t@gmail.com
Phone
(330) 555-0187
Property Address
482 Merriman Rd, Akron, OH 44303
Line Items (0)
Add Task
Custom

No items added yet

Featured Tasks
RF-SHGL-RPR
Patch Missing Shingles
$485
1h 30m
RF-LEAK-DIAG
Roof Leak Diagnostic
$195
1h
RF-GUTTER-CLN
Gutter Cleaning (whole house)
$225
1h 30m

NewQuoteScreen with customer form and featured quick-add

useMutation(api.pricebook.mutations.createQuoteSession)

Quote — With Line Items
9:44
New Quote
Customer Information
MT
Margaret Thompson
482 Merriman Rd, Akron, OH
margaret.t@gmail.com
(330) 555-0187
482 Merriman Rd, Akron, OH 44303
Line Items (3)
Add Task
Custom
1
Patch Missing Shingles (up to 10)
$970.00
2
@ $485.00 each
12mo
2
Ridge Cap Replacement
$650.00
1
@ $650.00 each
24mo
3
Custom Item Custom
$250.00
1
@ $250.00 each

QuoteItem with qty controls + QuoteSummary footer

handleQuantityChange, handleRemoveItem, handleAddCustomItem


Presented — Tier Selection
9:45
Quote — Thompson
Presented
Customer Information
MT
Margaret Thompson
482 Merriman Rd, Akron, OH
margaret.t@gmail.com
(330) 555-0187
482 Merriman Rd, Akron, OH 44303
Quote Items (3)
1
Patch Missing Shingles (up to 10)
$970.00
Qty: 2 @ $485.00
12mo
2
Ridge Cap Replacement
$650.00
Qty: 1 @ $650.00
24mo
3
Custom Item Custom
$250.00
Qty: 1 @ $250.00
Select Your Option
Good
$1,608
Better
$2,010
Best
$2,513
Subtotal (3 items)$1,870.00
Tax (7.5%)$140.25
Total$2,010.25

Created: Feb 24, 2026 9:43 AM

Presented: Feb 24, 2026 9:45 AM

QuoteSummary with Good-Better-Best tier selector

handleTierSelect, useMutation(api.pricebook.mutations.acceptQuote)

Accepted State
9:46
Quote — Thompson
Accepted
Customer Information
MT
Margaret Thompson
482 Merriman Rd, Akron, OH
margaret.t@gmail.com
(330) 555-0187
482 Merriman Rd, Akron, OH 44303
Quote Items (3)
1
Patch Missing Shingles (up to 10)
$970.00
Qty: 2 @ $485.00
12mo
2
Ridge Cap Replacement
$650.00
Qty: 1 @ $650.00
24mo
3
Custom Item Custom
$250.00
Qty: 1 @ $250.00
Quote Accepted!
Customer selected the Better option. Proceeding to contract...
$2,010.25
Subtotal (3 items)$1,870.00
Tax (7.5%)$140.25
Total$2,010.25
Quote Accepted

Created: Feb 24, 2026 9:43 AM

Presented: Feb 24, 2026 9:45 AM

Accepted: Feb 24, 2026 9:46 AM

QuoteSessionScreen accepted state with tier confirmation

session.status === "accepted", selectedTier === "better"


CSV Import — Upload
9:47
Import Pricebook
Import Pricebook from CSV
Upload a CSV file to bulk import categories, tasks, and materials into your pricebook.
Tap to select a CSV file
Supports .csv files with category, task, and material rows
CSV Format Guide
The first column must be "type" with values: category, task, or material.

Categories: type, name, trade, description
Tasks: type, categoryName, taskCode, name, description, complexity, laborPrice, materialsPrice, totalPrice
Materials: type, sku, name, unit, costPerUnit, pricePerUnit, markupPercent

PricebookImport component with DocumentPicker integration

expo-document-picker + expo-file-system for CSV parsing

CSV Import — Preview
9:47
Import Pricebook
acme-roofing-pricebook.csv
47
Total Rows
44
Valid
3
Errors
5 categories
34 tasks
8 materials
Import Options
Skip invalid rows
Continue import even if some rows have errors
Update existing items
Update items with matching names/codes instead of skipping

PricebookImport parse results with stats & options

useMutation(api.pricebook.import.importPricebook)


Data Architecture

Schema Tables

pricebookCategories // Top-level trades
pricebookSubcategories // Water Heaters, Drains
pricebookTasks // Billable tasks + pricing
pricebookMaterials // Parts, supplies, SKUs
pricebookTaskMaterials // Task-material junction
pricebookLaborRates // Hourly/flat/per-task
pricebookSettings // Per-contractor config
pricebookQuoteSessions // Live quoting sessions
pricebookPriceHistory // Audit trail
pricebookServiceRegions // Zipcode pricing

Queries

getCategories // All categories + counts
getStats // categoryCount, taskCount, rate
getCategoryWithSubcategories
getTasksByCategory // + subcategory filter
searchTasks // name, code, tags
getFeaturedTasks // isFeatured === true
getMostUsedTasks // by usageCount
getQuoteSessions // recent quotes list
getQuoteSession // single session detail
getSettings // tax, markup, display

Mutations

createQuoteSession
  args: customerName, email, phone, address
addItemToQuote
  args: sessionId, taskId?, name, qty, prices
presentQuote
  args: sessionId // draft -> presented
acceptQuote
  args: sessionId, selectedTier?
importPricebook
  args: rows[], skipInvalid, updateExisting

Components

CategoryList // FlatList + CategoryCard
TaskCard // Full card w/ breakdown
TaskListItem // Compact list row
QuoteItem // Line item + qty controls
QuoteSummary // Totals + tier selector
PricebookImport // CSV parse + import

Quote Session Statuses

draft // Being built by contractor
presented // Shown to customer on-site
accepted // Customer chose a tier
declined // Customer said no
expired // Session timed out
converted // Became a contract/bid

Task Complexity & Tiers

// Complexity levels
simple → 15-30 min, apprentice
standard → 30-90 min, journeyman
complex → 1-4 hours, senior tech
expert → 4+ hours, specialist

// Good-Better-Best pricing
good → goodTierDiscount (-15%)
better → base price (recommended)
best → bestTierUpcharge (+25%)
Browse & Build
9:41
Pricebook
Categories
HVAC
24 tasks • 3 tiers
Plumbing
18 tasks • 3 tiers
Electrical
15 tasks • 3 tiers
HVAC Tasks
AC Install — 3 Ton
$4,200 – $6,800
Furnace Replacement
$3,500 – $5,200
New Quote
Customer
Sarah Johnson
Address
123 Main St, Akron OH
AC Install — 3 Ton
$5,200
Total
$5,200
Present & Accept
9:41
Present & Accept
Tier Selection
Good
Standard equipment • 1-year warranty
$4,200
Better Recommended
Mid-range • 5-year warranty
$5,200
Best
Premium • 10-year warranty
$6,800
Quote Accepted
Signed
Tier
Better
Amount
$5,200
Customer signed at 2:34 PM — contract generated automatically
Pricebook Manager
https://app.3bids.io/contractor/pricebook
3Bids
Categories ⌘1
Search ⌘2
Quotes ⌘3
Import ⌘4
Settings ⌘5
MK
Mike Kowalski
Contractor

Pricebook Manager

3
Categories
57
Total Tasks
12
Active Quotes
68%
Accept Rate
Categories
HVAC
24 tasks • Good-Better-Best
Plumbing
18 tasks • Good-Better-Best
Electrical
15 tasks • Good-Better-Best
Recent Quotes
Johnson — AC Install
$5,200 • Accepted
Torres — Furnace
$4,800 • Presented
Chen — Plumbing
$2,100 • Draft
Quote Builder
https://app.3bids.io/contractor/pricebook/quote/new
3Bids
Categories ⌘1
Search ⌘2
Quotes ⌘3
Import ⌘4
Settings ⌘5
MK
Mike Kowalski
Contractor

New Quote

Customer Info
Name
Sarah Johnson
Address
123 Main St, Akron OH 44301
Line Items
AC Install — 3 Ton (Better)
$5,200
Thermostat Upgrade
$350
Total
$5,550
Quote Preview
Live PDF preview with branded header