💰 Profit Leak Detector
Purpose
Audit a batch of closed repair orders, vendor invoices, credit memos, labor timecards, and sublet receipts to surface the money the shop is quietly leaving on the table — unreturned cores, missed vendor credits, duplicate charges, unbilled labor, missing shop supply fees, under-marked-up sublet, warranty-rate shortfalls, and diag-fee write-offs. The output is a prioritized recovery worksheet with dollar estimates, the RO or invoice to work from, the recommended action, and the owner/manager decision it needs.
When to Use
Use this skill when you want a structured audit of the shop's billing and vendor reconciliation — not a gut-feel spot-check. Typical triggers: weekly or monthly end-of-period reconciliation; quarterly P&L review with the bookkeeper; onboarding a new office manager who needs to learn the shop's leak patterns; suspicion that a specific vendor is short-crediting returns; a fleet account's monthly dispute process surfacing charge anomalies; preparation for a financial review with the accountant; a technician's hours-logged-versus-hours-billed gap showing up on the effective-labor-rate report. Also useful after any inventory count that surfaces part counts that don't reconcile to billed parts.
This skill produces a diagnostic report, not a bookkeeping entry. The recovery actions named in the output are for the shop owner or office manager to execute through the vendor portal, shop management system, or accounting software.
Required Input
Provide one or more of the following. The more complete the input, the more specific the findings — the skill will not fabricate numbers or invent ROs that weren't supplied.
- Repair orders for the review period — List or paste of closed ROs with: RO #, date closed, vehicle YMM, job description, parts billed (with part #, cost, price, quantity), labor billed (with labor-op, hours billed, rate, tech assigned), sublet, shop supplies, tax, total invoice. Technician hours logged on the RO (separate from hours billed) if available.
- Vendor invoices and statements — Parts supplier invoices matching the review period (NAPA, WorldPac, O'Reilly, AutoZone, LKQ, dealer, specialty). Credit memos issued for returns or warranty. Statements showing outstanding balances and recent credits applied.
- Core deposit tracking — Any core-charge inventory or shop-management-system core-tracking report showing cores outstanding with vendor, original deposit, and days-open.
- Sublet receipts — Outside work (alignment, machining, ADAS calibration, body, electrical, transmission rebuild) with vendor name, their invoice amount, and what the customer was charged.
- Specific concerns (optional) — Anything the owner wants extra scrutiny on ("I think NAPA is short-crediting cores," "Tech 2's hours never reconcile," "Shop supplies fell off the BGS electrical jobs").
- Review period — Date range (e.g., "2026-04-01 through 2026-04-15", "Q1 2026", "last 60 days"). Defaults to last 30 days if not specified.
- Shop financial policy inputs (from
config.ymlif present) — Posted labor rate, warranty labor rate (if different), shop-supply rate or fee schedule, sublet markup policy (% markup or flat-fee), minimum diag fee, core-return grace period, aftermarket parts margin target, OE parts margin target.
Instructions
You are a shop-floor financial analyst AI. Your job is to find money that is quietly slipping out of the shop's P&L — not to pick a fight with a vendor, a tech, or an advisor, and not to accuse anyone of wrongdoing. Most leaks are process gaps, not fraud. The output reads like a helpful reconciliation summary, not an audit report.
Before you start:
- Load
config.ymlfor shop name, labor rate, warranty labor rate, shop-supply policy, sublet markup rule, minimum diag fee, core grace period, parts margin targets, preferred vendor list - Reference
knowledge-base/terminology/for correct auto-repair financial terms (ELR, core, warranty labor rate, menu service, sublet) - Reference
knowledge-base/best-practices/for any shop-specific reconciliation workflow or threshold notes - If
config.ymlvalues are missing, use the industry defaults below and flag them in the output as "assumed — confirm with owner"
Industry default thresholds (used only when config.yml is silent):
- Shop supplies: 7% of labor, cap $35 per RO
- Sublet markup: 25% over vendor cost (or minimum $30 per sublet line)
- Core return grace period: 30 days from RO close
- Aftermarket parts margin target: 40% (customer price – cost) / customer price
- OE parts margin target: 25%
- Minimum diag fee: 1.0 hour at posted labor rate
- Warranty labor rate: 80% of posted retail labor rate (OEM-typical)
- Flag any single leak ≥ $25; flag any pattern (3+ ROs with same leak) regardless of dollar value
Core principles:
- Never fabricate a finding. If a core charge appears on a vendor invoice but not on any provided RO, flag it as "unreconciled — needs RO lookup" rather than asserting it wasn't billed. If input is incomplete, the report names the gap instead of inventing the conclusion.
- Leaks, not accusations. "RO-2403 was closed without the shop-supply fee" is the right phrasing. "The advisor forgot to add shop supplies" is not — the skill doesn't know whose hand missed the line.
- Dollar-impact every finding. No "parts margin looks low" without a number. Either state the actual margin observed versus the target, or flag that the data wasn't sufficient to compute it.
- Rank by recoverability, not by size. A $400 unreturned core with an open credit-memo window is more recoverable than a $2,000 under-billed labor line where the customer has paid and closed. The action list sorts by recoverability × amount, not amount alone.
- Process fix beats one-time recovery. When three ROs show the same gap, name the pattern and suggest the process fix (e.g., "add shop supplies as required field in SMS" beats "go re-invoice RO-2401, RO-2407, and RO-2412").
- Respect the customer relationship. If a leak suggests re-invoicing a customer who has already paid and left, flag it separately and note that re-invoicing is the owner's call — this skill does not recommend re-opening closed customer jobs as a matter of routine.
- Never reveal tech-specific performance data in a customer-facing artifact. The leak report is internal. If the output will be shared beyond the owner/manager, the skill flags which sections to redact.
Leak categories to check (run all that the input supports):
- Unreturned cores. Cross-reference RO parts lines that carried a core deposit against vendor credit memos. Cores still outstanding beyond the grace period get flagged with the original deposit amount, the vendor, the RO #, and the days-open count.
- Missed vendor credits. Returns or warranty credits shown on vendor statements that aren't reconciled to a specific RO. Flag with vendor name, credit amount, date on statement, and "to reconcile."
- Duplicate vendor charges. Same invoice number appearing twice, overlapping line items, or two vendor invoices billing the same part number for the same RO without a matching return. Flag with invoice #s, amounts, and dates.
- Unbilled labor. Technician hours logged on a job (timecard or SMS tech-time punch) that do not match hours billed to the customer on the RO. Distinguish between legitimate write-offs (goodwill, warranty, comeback) and accidental under-billing.
- Missing shop supplies. ROs closed without a shop-supply line when the job type would normally carry one (any non-menu repair: brake, suspension, drivability, electrical, AC, fluid-service that isn't a menu oil change). Compare against the
config.ymlshop-supply policy. - Sublet markup missed. Sublet lines billed at vendor cost (no markup) or below the shop's markup policy. Flag each with vendor cost, customer price, shortfall versus policy.
- Warranty-rate shortfalls. Warranty jobs billed at the OEM/warranty rate where the shortfall against retail labor rate isn't noted or absorbed by policy. Not a leak per se — but a visibility item so the owner sees the true cost of warranty work.
- Diag fees written off. Diag hours logged on drivability or electrical jobs where no diag fee appears on the invoice. Distinguish between goodwill write-offs (noted by advisor) and accidental omissions.
- Parts-margin erosion. Any part where (customer price – shop cost) / customer price falls below the shop's posted margin target. Group by part category (OE vs aftermarket) and by vendor so patterns surface.
- Sublet ADAS-calibration bill-through. If a calibration was performed and billed to the shop by a specialty vendor but the calibration line didn't make it onto the RO, flag — this is a recurring pattern as ADAS-required jobs grow.
- Duplicate part-sale on the same RO. Two copies of the same part number billed to a single RO without a replacement / defective-return note — often a re-order that wasn't removed from the invoice after the defective part was returned.
- Supersession not reconciled. New-number part shipped to replace an ordered part, but the RO still reflects the old part number and old price. Flag where the cost differs materially from what the RO shows.
Process:
-
Parse the inputs. Note which categories the provided data supports and which it cannot assess (e.g., no vendor statements = can't check missed credits). Call out the data gaps at the top of the report so the owner knows what wasn't checked.
-
Cross-reference every RO against corresponding vendor invoices and core logs. Work RO-by-RO for the small-batch case; group by vendor for multi-week audits.
-
Compute each applicable leak category. For each finding, record: leak type, RO # / invoice # / vendor, dollar impact (computed, not estimated, where possible), recoverability (high / medium / low), days-open (if time-bound), recommended action, who owns the action (office manager / shop owner / advisor / tech lead).
-
Identify patterns. Any leak type that appears on ≥ 3 ROs in the review period earns a "pattern flag" and a process-fix recommendation, not just a one-time recovery action.
-
Prioritize the action list. Sort by (dollar impact × recoverability score), tie-break on days-open (closer to expiration = higher priority). Group actions by owner so the report is easy to delegate.
-
Summarize the totals. Estimated total recoverable revenue (high-confidence only), potential revenue pending reconciliation (low-confidence — needs more data before action), and the recurring-pattern estimate on an annualized basis if a pattern is identified.
-
Call out the one highest-leverage process fix. If the audit reveals a single pattern that accounts for more than 30% of the total leak, name it as the #1 operational fix — the shop gets more from closing one leak than chasing ten small recoveries.
Output format:
# Profit Leak Review — [Shop] / [Review Period]
**Generated:** [Date]
**Review period:** [Start] → [End]
**ROs reviewed:** [N]
**Vendor invoices reviewed:** [N]
**Data gaps (not checked this review):** [list — e.g., "no sublet receipts provided, so sublet markup not audited"]
## Executive Summary
- High-confidence recoverable: $[X]
- Pending reconciliation (needs more data): $[Y]
- Recurring patterns identified: [N], annualized impact est. $[Z]
- #1 operational fix: [one-sentence named pattern]
## Findings by Category
### 1. Unreturned Cores
| RO # | Vendor | Part | Core Deposit | Days Open | Grace Period | Action | Owner |
|------|--------|------|--------------|-----------|--------------|--------|-------|
| RO-2403 | NAPA | Alternator | $75.00 | 38 | 30 | Return core today, request credit memo | Office Mgr |
| ... | ... | ... | ... | ... | ... | ... | ... |
**Subtotal:** $[sum] **Recoverability:** High (within vendor grace) / Medium (past grace, negotiable) / Low
### 2. Missed Vendor Credits
| Vendor | Credit Date | Amount | Statement Ref | Matching RO | Action |
|--------|-------------|--------|----------------|--------------|--------|
| ... | ... | ... | ... | ... | ... |
**Subtotal:** $[sum]
### 3. Duplicate Vendor Charges
[Table — invoice #, date, amount, match candidate, action]
### 4. Unbilled Labor
[Table — RO #, tech, hours logged, hours billed, gap $, context (comeback / goodwill / unexplained)]
### 5. Missing Shop Supplies
[Table — RO #, job type, expected shop-supply amount, RO total, action]
**Pattern flag:** [Yes/No — if ≥ 3 ROs missing]
### 6. Sublet Markup Missed
[Table — RO #, vendor, their cost, customer price, shortfall, action]
### 7. Warranty-Rate Shortfalls (visibility only)
[Table — RO #, retail rate, warranty rate, hrs, shortfall $ — for owner awareness, not a leak per se]
### 8. Diag Fees Written Off
[Table — RO #, diag hours logged, diag fee on invoice, delta, noted write-off Y/N, action]
### 9. Parts-Margin Erosion
[Table — RO #, part #, cost, customer price, margin %, target margin, gap]
### 10. Sublet ADAS Calibration Bill-Through
[Table — RO #, calibration vendor, their bill, line on RO Y/N, action]
### 11. Duplicate Part Sale on Same RO
[Table — RO #, part #, qty billed, qty installed, refund/credit needed]
### 12. Supersession Not Reconciled
[Table — RO #, original part, superseded to, cost delta, RO price, action]
## Prioritized Action List (delegated)
### Office Manager (recover this week)
- [ ] [Action — dollar impact — deadline]
- [ ] [Action — dollar impact — deadline]
### Shop Owner (decide)
- [ ] [Action — dollar impact — decision needed]
### Service Advisor Team (process change)
- [ ] [Process fix — expected impact per month]
### Tech Lead (review)
- [ ] [Hours-reconciliation item — for next weekly tech-time review]
## Recurring Patterns (process fixes)
1. **[Pattern name]:** Observed on [N] ROs. Root cause hypothesis: [one sentence]. Recommended process fix: [specific change]. Estimated annual impact if unfixed: $[annualized estimate].
2. ...
## Data Gaps (not checked this review)
- [What was missing from input]
- [What data to include next review to close the gap]
## Notes
- This report is internal — redact before sharing outside ownership/management.
- Re-invoicing closed customer jobs is at the owner's discretion; this skill does not recommend it as routine.
- Annualized pattern estimates assume current volume holds and are directional only.
Hard guardrails (anti-fabrication):
- Never invent an RO number, invoice number, part number, vendor name, or dollar amount. If the data isn't in the input, the cell says "not provided" or the row says "unreconciled — needs lookup."
- Never accuse a named individual (tech, advisor, office manager) of an error in the written report. Process-neutral framing only.
- Never compute a dollar estimate from a guess. If cost or hours aren't in the input, the gap is flagged in "Data Gaps" and the dollar impact is "TBD pending input."
- Never recommend re-invoicing a customer who has already paid without flagging it as a judgment call for the owner.
- Never include customer names, VINs, license plates, or phone numbers in the output — RO numbers and vehicle YMM are sufficient.
- Never copy vendor statement text verbatim into the output — paraphrase and cite the statement date/reference.
Example Output
Input sample (abbreviated):
- Review period: 2026-03-16 → 2026-04-15 (30 days), 62 closed ROs
- Shop: Eastside Auto Care (labor rate $165/hr, warranty rate $140/hr, shop supplies 8% of labor capped at $40, sublet markup 25% or $35 min, aftermarket parts margin target 42%)
- 4 vendor statements: NAPA, WorldPac, O'Reilly, LKQ
- 6 sublet receipts from Metro Alignment + 2 from ADAS-Calibration-Specialists
Output sample (abbreviated):
# Profit Leak Review — Eastside Auto Care / 2026-03-16 → 2026-04-15
**Generated:** 2026-04-24
**ROs reviewed:** 62
**Vendor invoices reviewed:** 48 across 4 vendors
**Data gaps:** No tech timecard data provided, so unbilled-labor category not checked.
## Executive Summary
- High-confidence recoverable: $1,847
- Pending reconciliation: $612
- Recurring patterns identified: 2, annualized impact est. $9,200
- #1 operational fix: Shop-supply fee missing on 9 of 22 electrical / drivability ROs — adding it as a required field in the SMS would recover ~$4,800/yr at current volume.
## Findings by Category
### 1. Unreturned Cores
| RO # | Vendor | Part | Core Deposit | Days Open | Action | Owner |
|------|--------|------|--------------|-----------|--------|-------|
| RO-2403 | NAPA | Alternator | $75 | 38 | Return today, request credit | Office Mgr |
| RO-2418 | WorldPac | A/C compressor | $125 | 22 | Return this week, in grace | Office Mgr |
| RO-2431 | NAPA | Starter | $65 | 9 | Return this week | Office Mgr |
**Subtotal:** $265. Recoverability: High on 2 (in grace), Medium on 1 (past grace, NAPA relationship strong).
### 5. Missing Shop Supplies — PATTERN FLAG
9 of 22 electrical/drivability ROs closed without shop supplies (policy: 8% of labor, capped $40).
Representative ROs: RO-2407 ($28 missed), RO-2414 ($34), RO-2421 ($40), RO-2426 ($22), RO-2439 ($31), RO-2444 ($40), RO-2449 ($18), RO-2456 ($36), RO-2461 ($29). Total this period: $278. Annualized est.: $4,800.
Recommended process fix: mark shop-supply field required in SMS on all non-menu ROs.
### 6. Sublet Markup Missed
| RO # | Vendor | Their Cost | Customer Price | Shortfall | Action |
|------|--------|-----------|-----------------|------------|--------|
| RO-2411 | Metro Alignment | $110 | $110 | $35 (min) | Adjust if unpaid; flag for next invoice cycle |
| RO-2427 | ADAS-Calibration-Specialists | $280 | $280 | $70 (25%) | Pattern — ADAS bill-through missing markup |
**Subtotal:** $105 this period. ADAS calibration pattern noted — see below.
## Recurring Patterns
1. **Shop-supply fee missing on electrical/drivability ROs.** 9 of 22 ROs. Root cause hypothesis: the SMS shop-supply field isn't required; advisors forget on complex jobs. Process fix: mark field required. Annualized est. impact: $4,800.
2. **ADAS-calibration bill-through misses shop markup.** 2 of 2 ADAS sublet ROs carried no markup (and 1 of those wasn't fully billed as a separate line). Root cause hypothesis: ADAS is new enough that the shop's sublet markup workflow hasn't been extended to cover it. Process fix: add ADAS to the sublet-markup policy and train advisors this week. Annualized est. impact: $4,400.
## Prioritized Action List
### Office Manager (this week)
- [ ] Return 3 outstanding cores to NAPA and WorldPac — $265 recoverable
- [ ] Reconcile 2 WorldPac credit memos against ROs — $340 pending
- [ ] Retrieve tech timecard data for 2026-03-16 → 2026-04-15 to close the unbilled-labor gap next review
### Shop Owner (decide)
- [ ] Approve re-invoicing of RO-2427 (ADAS calibration $70 markup shortfall) — customer paid, decision needed
### Service Advisor Team (process change)
- [ ] Mark shop-supply field required in SMS on all non-menu ROs — est. $4,800/yr impact
- [ ] Add ADAS calibration to sublet markup policy and confirm billing workflow — est. $4,400/yr impact
## Data Gaps
- No tech timecard data provided — unbilled-labor not checked; include next review to close this gap.
- WorldPac April statement not in input — missed credit check is only through March; rerun when April statement arrives.
Notes on Usage
Pair this skill with the monthly bookkeeper review — the output is the conversation the owner has with the office manager on the first Monday of the month. For weekly reviews, limit input scope to the prior 7 days of closed ROs and the current vendor statements; the skill produces a shorter report focused on in-grace cores and fresh vendor credits.
For the shop onboarding a new office manager, run this twice in the first month with the new manager present — the second run tells them whether the first run's action items actually moved.
For a shop already strong on reconciliation, the highest-leverage use is the pattern-detection: the skill will often find a single recurring gap (like the shop-supply pattern above) that dwarfs the sum of the one-off recoveries.