Detail jobs have higher variance than most service work. A baseline interior detail on a clean Camry is a 90-minute job. The same service on a 2007 truck with a dog, a hunting habit, and three kids could be 4 hours. If you don't upcharge for condition, you eat the margin.
The framework
Three condition tiers:
- Standard — baseline pricing applies. Light dust, normal use.
- Heavy — +30-50% upcharge. Above-average dirt, single pet, some interior staining.
- Extreme — +75-150% upcharge or refuse the job. Heavy soiling, multiple pets, mold, smoke damage, biohazard.
Set the tiers per service. Settings → Services → each detail service → Condition tiers.
Common condition upcharges
### Interior detail
- Standard: base price (e.g. $189 for sedan)
- Heavy pet hair (single pet, regularly): +$50
- Multiple pets or matted hair: +$80-120
- Heavy crumbs / spills / staining: +$40-80
- Smoke odor: +$80-150 (you'll need ozone treatment)
- Vomit / biohazard: +$200 minimum, or refuse
- Sand (beach truck): +$30-60
### Exterior detail
- Standard: base wash + clay + light polish
- Heavy oxidation: +$60-100 per panel showing oxidation
- Tree sap / overspray: +$50-150 (depends on extent)
- Tar / road grime contamination: +$40-80
- Water spots etched into clearcoat: requires correction; upgrade tier
### Paint correction tier upgrades
If a customer books "single-stage correction" but arrival inspection reveals damage requiring two-stage:
- Show the customer the photo (under proper lighting)
- Quote the upgrade: +$150-400 depending on vehicle size
- Get verbal + signed consent before proceeding
- Document the conversation in customer notes
How to communicate
Customers hate surprise charges. The cleanest workflow:
1. At quote time: include condition disclosure. "Pricing assumes Standard condition. If your vehicle requires Heavy or Extreme treatment, we'll show you photos and quote the upgrade before proceeding." 2. At drop-off: 5-min walkaround with the customer. If condition exceeds Standard, show them, agree on the new price, capture acknowledgment. 3. In-app: SalesThumb's quote builder shows condition tier as a dropdown. If you upgrade from Standard → Heavy, the customer's quote re-issues automatically and they get an SMS to approve.
If the customer refuses the upgrade, the call:
- Some shops do the service at original price (lose margin to keep relationship)
- Some shops refuse and refund the deposit
- Most shops do the Standard work only and explicitly note "Heavy areas left untouched at customer's choice"
Document either way in the customer notes.
The "refuse" line
Some condition is just refuse. Examples:
- Biohazard (blood, vomit, bodily fluids beyond minor) — health hazard
- Active mold — health hazard + you can't actually fix it without remediation
- Vehicles brought in for insurance claims — let the insurance handle it; you don't want to be in the middle
- Vehicles with active rodent infestation
Settings → Services → Condition tiers → Add "Refuse — health/safety" with $0 service + refund-only response.
When you refuse: - Be polite, clinical, no judgment - "We can't safely complete a service in these conditions. We'd recommend [biohazard cleanup company] or [rodent abatement]. Your deposit will be refunded fully." - Document the photos + refusal in customer notes (in case of dispute)
Inventory cost flow
Heavy / Extreme jobs consume more material:
- 2-3× the carpet shampoo
- 2-3× the all-purpose cleaner
- Extra microfibers (some go in the trash after biohazard exposure)
- Sometimes a full carpet extractor session
Settings → Inventory → Per-service material multipliers. Map Heavy tier → 1.8× material, Extreme tier → 2.5× material. Margin tracks correctly.
Time math
Same scaling for time:
- Standard = 90 min
- Heavy = 135-150 min
- Extreme = 180-240+ min
Scheduling needs to respect this. When a customer upgrades to Heavy at drop-off, the appointment's expected end-time shifts. Subsequent bookings on that bay get pushed back.
SalesThumb handles this automatically: when you upgrade the tier on a job, the calendar reflows downstream bookings. The next customer gets an SMS: "Your appointment may be slightly delayed — we'll text you when your bay is ready."
Margin tracking
Settings → Reports → Detail margin by tier. Shows:
- Revenue per tier
- Time per tier (planned vs actual)
- Material per tier
- Margin per tier
If Heavy tier margin is below Standard tier margin, you're under-pricing the upcharge. Adjust.