{
  "provider": "Level CFO",
  "note": "Aggregate, anonymized Level contractor operating benchmarks. Company counts and record counts are separate fields.",
  "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
  "last_updated": "2026-Q3",
  "metrics": {
    "sa_gross_margin_pct": {
      "canonical_key": "service_agreement_gross_margin",
      "label": "Service agreement gross margin",
      "unit": "percent",
      "p10": -30.4,
      "p25": 20.5,
      "median": 37.9,
      "mean": null,
      "p75": 53.5,
      "p90": 70.3,
      "n": 259,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Gross margin on recurring service-agreement (maintenance) revenue. n=259 companies with at least $10K in SA revenue.",
      "basis": "contractors analyzed",
      "note": "Contractors below 25% are typically underpricing SAs or not capturing maintenance pull-through.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "sa_pull_through_pct": {
      "canonical_key": "service_agreement_pull_through",
      "label": "Annual service agreement pull-through",
      "unit": "percent",
      "p10": 0.3,
      "p25": 1.5,
      "median": 8.7,
      "mean": null,
      "p75": 29.6,
      "p90": 93.4,
      "n": 386,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Additional repair, replacement, and project revenue from service-agreement customers divided by annual service-agreement revenue. n=386 eligible companies.",
      "basis": "386 companies with eligible annual agreement and follow-on revenue",
      "note": "P90 includes relationship-driven project work attributed to service-agreement accounts, not only work discovered during maintenance visits. P75 is the more realistic operating comparison. Company-level records are not published because the underlying roster is re-identifiable; this public file exposes only the aggregate distribution.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "sa_rev_per_employee_k": {
      "canonical_key": "service_agreement_revenue_per_employee",
      "label": "Annual service agreement revenue per employee",
      "unit": "thousand_usd_per_employee",
      "p10": 5.9,
      "p25": 11.4,
      "median": 28.5,
      "mean": null,
      "p75": 64.1,
      "p90": 150.5,
      "n": 217,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Annual service-agreement revenue divided by employee count. This is a directional Level engagement observation across 217 eligible companies, not a universal staffing target.",
      "basis": "217 companies with eligible annual service-agreement revenue and employee counts",
      "note": "Use the distribution as recurring-revenue intensity context. Trade mix, use of subcontractors, and which employees are included can materially change the ratio.",
      "breakdown_json": null,
      "source": "The Level Index (directional contractor benchmark observation)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "collection_rate_pct": {
      "canonical_key": "collection_rate",
      "label": "Collection rate",
      "unit": "percent",
      "p10": 38.8,
      "p25": 70.7,
      "median": 85.1,
      "mean": null,
      "p75": 92.7,
      "p90": 96,
      "n": 464,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Cash collected as a share of billed revenue.",
      "basis": "464 contractors analyzed",
      "note": "The gap between 85% and 96% is real cash: on $5M of billings, ~$550K sitting uncollected.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "billing_speed_days": {
      "canonical_key": "billing_speed_days",
      "label": "Billing speed (days from work complete to invoice)",
      "unit": "days",
      "p10": null,
      "p25": null,
      "median": 1,
      "mean": null,
      "p75": null,
      "p90": 30,
      "n": 733,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Days from job completion to invoice issued. Median is 1 day when progress billing is included (~25% of companies); among post-completion invoicers the adjusted median is 7 days.",
      "basis": null,
      "note": null,
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "billing_capture_pct": {
      "canonical_key": "billing_capture",
      "label": "Billing capture rate (hours invoiced / hours logged on jobs)",
      "unit": "percent",
      "p10": 66.9,
      "p25": 89.2,
      "median": 97.1,
      "mean": null,
      "p75": 100,
      "p90": 102,
      "n": 963,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Total hours invoiced to customers divided by total hours LOGGED ON JOBS. The denominator is job-assigned hours only, which is why the median is high. This is NOT technician utilization: Level's working range for utilization (65-80%) divides billable hours by TOTAL PAID hours, including drive time, admin, training, and idle time. Values above 100% occur where overtime hours bill at premium rates. n=963 companies with at least 100 logged hours.",
      "basis": "companies with 100+ logged hours",
      "note": "State the denominator whenever this is cited. Without it the figure reads implausible, because readers compare it to utilization, which measures something else. First derived 2026-04-07 as 'billable hour ratio' (median 96.7%, n=654) and re-run to 97.1% on the larger n=963 cohort.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "quote_conversion_pct": {
      "canonical_key": "quote_conversion_decided",
      "label": "Quote conversion rate (on decided quotes)",
      "unit": "percent",
      "p10": 47.1,
      "p25": 61,
      "median": 73.9,
      "mean": null,
      "p75": 83.2,
      "p90": 90,
      "n": 794,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Won divided by (won + lost); excludes still-pending quotes. n=794 companies with at least 20 decided quotes. Distinct from all-quote conversion below.",
      "basis": null,
      "note": "Quotes that sit >7 days convert at roughly half the rate of quotes sent within 24 hours.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "avg_bill_rate_usd_hr": {
      "canonical_key": "average_bill_rate",
      "label": "Average billed labor rate by company",
      "unit": "usd_per_hour",
      "p10": 39,
      "p25": 55,
      "median": 79,
      "mean": null,
      "p75": 116,
      "p90": 148,
      "n": 1770,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Company-level average billed labor rate across 1,770 contractors. The underlying rate-card field is used inconsistently, with some companies entering customer billing rates and others entering loaded cost or base wage, so the distribution is strongest as a market-positioning comparison.",
      "basis": "1,770 companies with a calculated average billed labor rate",
      "note": "These are labor-component rates per technician hour, not the total customer invoice after trip charges, materials, equipment, and overhead markup.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "quote_conversion_all_pct": {
      "canonical_key": "quote_conversion_all",
      "label": "Quote conversion rate (all quotes issued)",
      "unit": "percent",
      "p10": null,
      "p25": 28,
      "median": 38.1,
      "mean": null,
      "p75": 47.7,
      "p90": null,
      "n": 794,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Won divided by all quotes issued, including quotes that never reach a decision.",
      "basis": "companies with 20+ quotes",
      "note": "Roughly 62% of total quoting effort produces zero revenue.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "days_to_convert": {
      "canonical_key": "days_to_convert",
      "label": "Days to convert (winning quotes)",
      "unit": "days",
      "p10": null,
      "p25": null,
      "median": 2,
      "mean": null,
      "p75": null,
      "p90": null,
      "n": 794,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Days from quote sent to accepted, for quotes that convert.",
      "basis": null,
      "note": "Winning quotes close fast; speed-to-decision is the strongest leading indicator.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "days_to_loss": {
      "canonical_key": "days_to_loss",
      "label": "Days to loss (lost quotes)",
      "unit": "days",
      "p10": null,
      "p25": null,
      "median": 29,
      "mean": null,
      "p75": null,
      "p90": 165,
      "n": 794,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Days from quote sent to marked lost, for quotes that do not convert.",
      "basis": null,
      "note": "Half of lost quotes linger past 30 days before anyone marks them dead.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "customer_concentration_top1_pct": {
      "canonical_key": "customer_concentration_top1",
      "label": "Revenue from largest single customer",
      "unit": "percent",
      "p10": null,
      "p25": 18.5,
      "median": 31,
      "mean": null,
      "p75": 54.6,
      "p90": 82.4,
      "n": 959,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Share of total revenue from the top 1 customer. n=959 companies with at least $100K in annual revenue.",
      "basis": "companies with >$100K revenue",
      "note": null,
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "job_gross_margin_pct": {
      "canonical_key": "job_gross_margin",
      "label": "Job-level gross margin",
      "unit": "percent",
      "p10": 10.8,
      "p25": 28.4,
      "median": 44.3,
      "mean": null,
      "p75": 60.2,
      "p90": 75.1,
      "n": 1791,
      "n_unit": "companies",
      "observation_n": 1747089,
      "observation_unit": "completed jobs",
      "definition": "Gross margin per completed job (revenue minus actual cost), across all job types. Measured per JOB across 1,747,089 completed jobs from 1,791 companies (Athena verification 2026-07-25). The prior n=430 was another metric's company count.",
      "basis": "completed jobs analyzed",
      "note": null,
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "labor_hours_actual_vs_budget_pct": {
      "canonical_key": "labor_hours_actual_vs_budget",
      "label": "Labor hours: actual as % of budgeted",
      "unit": "percent",
      "p10": null,
      "p25": 70.1,
      "median": 99.4,
      "mean": 119,
      "p75": 131.1,
      "p90": null,
      "n": 1391,
      "n_unit": "companies",
      "observation_n": 315393,
      "observation_unit": "jobs with budgeted and actual hours",
      "definition": "Actual labor hours ÷ budgeted labor hours per job. 100% = on budget; >100% = over. Measured across 315,393 jobs from 1,391 companies (Athena verification 2026-07-25).",
      "basis": "jobs with both budgeted and actual hours",
      "note": "Median job lands on budget (99.4%) but the mean is 119%, dragged up by the ~18% of jobs that exceed 150% of budget. Labor-hour overruns are the single largest margin killer; 40% of jobs exceed their hour budget.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "revenue_mix_labor_share_pct": {
      "canonical_key": "revenue_mix_labor_share",
      "label": "Labor share of quoted revenue",
      "unit": "percent",
      "p10": null,
      "p25": 16.7,
      "median": 29.1,
      "mean": null,
      "p75": 42.2,
      "p90": null,
      "n": null,
      "n_unit": null,
      "observation_n": null,
      "observation_unit": null,
      "definition": "Labor as a share of quoted revenue (vs materials, equipment, subs). Median contractor is ~29% labor / ~33% materials, but variance is extreme. NOTE: sample size unverified. The prior n=430 was copied from another metric; this is measured on quoted revenue (quote-line data), not job_stats, so a job-level reproduction does not apply. Do not publish a sample size until re-derived.",
      "basis": "quote line items (sample size unverified)",
      "note": "Labor-heavy contractors run higher margins but hit capacity limits; materials-heavy run lower margins but scale better.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "job_closeout_days": {
      "canonical_key": "job_closeout_days",
      "label": "Job closeout lag (days)",
      "unit": "days",
      "p10": null,
      "p25": null,
      "median": 1.7,
      "mean": null,
      "p75": 9.6,
      "p90": 35.8,
      "n": null,
      "n_unit": null,
      "observation_n": 555,
      "observation_unit": "completed jobs",
      "definition": "Days from work complete to job financially closed out. Cash sits on the table while closeout lags.",
      "basis": "completed jobs",
      "note": null,
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "seasonality_top3_months_pct": {
      "canonical_key": "seasonality_top3_months",
      "label": "Revenue concentration in top 3 months",
      "unit": "percent",
      "p10": null,
      "p25": 38.3,
      "median": 47.4,
      "mean": null,
      "p75": 66.1,
      "p90": 91.1,
      "n": 217,
      "n_unit": "companies",
      "observation_n": null,
      "observation_unit": null,
      "definition": "Share of annual revenue earned in the three strongest months.",
      "basis": "companies with >$500K revenue",
      "note": "The median contractor earns ~47% of annual revenue in just 3 months; Q4 (Dec/Oct) dominates peaks.",
      "breakdown_json": null,
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "quote_line_margin_by_cost_type_pct": {
      "canonical_key": "quote_line_margin_by_cost_type",
      "label": "Quote-line gross margin by cost type",
      "unit": "percent",
      "p10": null,
      "p25": null,
      "median": null,
      "mean": null,
      "p75": null,
      "p90": null,
      "n": null,
      "n_unit": null,
      "observation_n": 2200000,
      "observation_unit": "quote line items",
      "definition": "Gross margin on quoted work, split by cost type (labor, materials, equipment, subcontractor), measured across 2.2M+ quote line items. Labor is the highest-margin cost type; subcontractor pass-through is the thinnest.",
      "basis": "2.2M+ quote line items",
      "note": "Labor carries ~47.7% margin vs ~31.5% on materials, 25.5% on equipment, and 23.6% on subcontracted work. Revenue mix toward labor (service, maintenance) drives higher blended margin than equipment- or sub-heavy work.",
      "breakdown_json": "{\"labor\":47.7,\"materials\":31.5,\"equipment\":25.5,\"subcontractor\":23.6}",
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    },
    "bill_rate_by_role_usd_hr": {
      "canonical_key": "bill_rate_by_role",
      "label": "Bill rate by role (rate-card field)",
      "unit": "usd_per_hour",
      "p10": null,
      "p25": null,
      "median": null,
      "mean": null,
      "p75": null,
      "p90": null,
      "n": null,
      "n_unit": null,
      "observation_n": 18000,
      "observation_unit": "tracked employees",
      "definition": "Median rate-card rate by field role across 18,000+ tracked employees. The rate-card field is used inconsistently (some enter customer billing rates, others loaded cost or base wage), so read the spread between roles rather than the absolute level. Company-level avg bill rate median is $79/hr (n=1,770).",
      "basis": "18,000+ field employees with tracked rate-card data",
      "note": "The apprentice-to-journeyman jump (about $39 to $76) is the sharpest step in the ladder; journeymen carry the widest spread over loaded wage.",
      "breakdown_json": "{\"helper\":34,\"apprentice\":39,\"technician\":54,\"journeyman\":76,\"mechanic\":75}",
      "source": "The Level Index (contractor benchmark research)",
      "source_url": "https://levelcfo.com/data/benchmarks/contractor.json",
      "source_access": "citation-text-only"
    }
  },
  "published_meta": {
    "publisher": "Level",
    "license": "CC BY 4.0. Cite Level and link to levelcfo.com.",
    "last_updated": "2026-Q3",
    "note": "The Level founding team's analysis of 2,200+ contractors representing $13.25B in job revenue and 2.5M invoices, built across operating, private-equity, and CFO roles (financial reviews, operator interviews, and PE due-diligence), spanning HVAC, plumbing, electrical, mechanical, refrigeration, and fire protection, and layered with named public sources."
  }
}
