{
  "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-10-07",
  "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": "Below 25% calls for a cost and scope review. Pricing, covered work, cost allocation and customer mix are candidate explanations; the distribution does not identify a cause.",
      "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 a distribution comparison point, not a proven attainable target. 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": "A collection-rate difference describes billed revenue not converted to cash in the comparison. It is not automatically point-in-time A/R, recoverable cash, permanent loss or recurring profit. Reconcile invoice aging, credits and cutoff timing.",
      "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. Some recorded ratios exceed 100%; their causes are not measured here. Check billed-hour units, period alignment, job matching and logging completeness. A higher dollar rate alone does not increase an hours ratio. 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": "Won divided by won plus lost for eligible decided quotes. Pending, draft and cancelled records are excluded. This distribution does not measure estimating effort or prove a conversion lift from a follow-up cadence.",
      "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 this distribution describes mixed source fields, not independently comparable customer selling prices, wages or profitability.",
      "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": "Won divided by all issued quotes includes pending opportunities and differs from decided conversion. Quote counts do not measure estimating hours, quote value or permanent lost 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": "Recorded winning quotes have shorter decision/status intervals in this aggregate. Predictive strength and causal effects were not tested.",
      "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": "The median recorded days-to-loss is 29; customer decision timing and status-update lag are not separated.",
      "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": "Actual labor hours divided by budgeted hours. The median and mean differ because the distribution has a long tail. This is an hours ratio, not dollar cost; actual wage, overtime, burden, scope and posting completeness determine contribution effects.",
      "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": "Revenue-mix distributions describe reported labor, materials, membership and equipment shares. They do not establish a margin, capacity or scalability effect.",
      "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 recorded financial job closeout. This status interval does not establish invoice or cash-collection timing.",
      "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 recorded revenue share in the three largest months is about 47%. Reported peak-month counts and cutoff windows require separate interpretation; no universal quarter pattern is established.",
      "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": "Recorded quote-line margin medians differ by cost type: labor 47.7%, materials 31.5%, equipment 25.5%, and subcontracted work 23.6%. These are quoted line-item observations, not realized job margins. They do not establish that changing service mix causes higher company profit; match selling prices, actual costs and the full job mix before drawing that conclusion.",
      "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 neither the absolute level nor the spread establishes role-level pricing, wages or profitability without matching how each entry was used. Company-level avg bill rate median is $79/hr (n=1,770).",
      "basis": "18,000+ field employees with tracked rate-card data",
      "note": "The largest single recorded step is technician to journeyman (about $54 to $76 in the mixed rate-card field). Wage, loaded cost and selling-price definitions are mixed; no spread over wage can be computed from this field.",
      "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-10-07",
    "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."
  }
}
