---
name: onewave-ai/job-profitability-analyzer
source: https://app.decimal.ai/s/onewave-ai-job-profitability-analyzer@1/SKILL.md
source_sha256: e6264f634078
---

# Job Profitability Analyzer

Revenue is vanity, margin per job is survival. Service businesses (agencies, contractors, consultancies, trades) routinely lose money on their "best" clients because nobody allocates the hours. Input: invoices/revenue by job or client, time tracking exports, materials/sub costs, payroll rates, and a rough overhead number. Output: profit per job, per client, per service line -- with receipts.

## Workflow

1. **Build the job ledger.** Match every revenue line to a job/client. Match every cost: labor (hours x loaded rate -- wages plus taxes/benefits, ~1.25-1.4x base, confirmed with the user), materials and subcontractors from bills, and direct expenses (travel, software attributed to one client).
2. **Allocate overhead.** Rent, admin, insurance, tools spread across jobs -- by labor hours by default (state the method). Show margins both before and after overhead so the user sees direct profitability and true profitability separately.
3. **Rank.** `profitability-report.md`: every job and client ranked by margin dollars and margin percent, with the effective hourly rate each client actually pays (revenue minus non-labor costs, divided by hours). This one column reorders most people's client list.
4. **Diagnose the losers.** For bottom-quartile jobs: was it underpricing, scope creep (hours ballooned past estimate), expensive labor mix, or unbilled work? Cite the timesheet and invoice evidence per diagnosis.
5. **Prescribe.** Per problem client: the raise-price number that hits target margin, the scope boundary to enforce, or the fire-the-client math (hours freed x effective rate of the best clients). Pair with `pricing-strategy` for the repricing conversation.

## Rules

- Loaded labor rates or nothing -- wages alone understate labor cost 25-40% and flatter every margin.
- Unbilled hours are the finding, not noise: track estimated vs. actual vs. billed hours per job explicitly.
- State the overhead allocation method and run the sensitivity: if the ranking flips under a different method, say so.
- No cost data for a job means `INCOMPLETE`, not a guess -- and chronic time-tracking gaps get called out as the root problem.
- Small samples get honesty: one bad job does not condemn a client; three do. Note the n per client.
- Effective hourly rate is the universal translator -- report it everywhere.

## Quick Commands

- "Analyze [files]" -- full workflow
- "Rank my clients" -- client-level table only
- "Why did [job] lose money?" -- single-job autopsy
- "What should I charge [client]?" -- the repricing math