Versioned calculations, read twice before they ship.
Every CSV row Cabroot produces — Scope-3, monthly, CMAQ — is stamped with methodology-v1. This page is the tie-back surface: the formula + EPA constants + plain-English assumptions live here, in versioned blocks, so a sponsor, grant reviewer, or sustainability auditor can replay any number in a downloaded CSV against this page by hand.
Bumping the pin to methodology-v2 re-stamps every Scope-3 + monthly CSV row at once — the same line on /dashboard/reports/scope3 and /dashboard/reports.
Four versions of the same math.
Each card is the live expression the report runner writes, with a plain-English one-liner and the basis string the per-row "co2Basis" column renders. Crib from one of these directly into your replay spreadsheet.
costPerRiderUsd = (program.monthlySubsidyCents ÷ 100) × riderShare ÷ ridersProgram-level monthly subsidy, prorated across van groups by capacity share, divided by the group's actual rider count for the month.
- ›subsidyUsd = monthlySubsidyUsd × riderShare (riderShare = groupCapacity ÷ totalCapacity)
- ›costPerRiderUsd = subsidyUsd ÷ riders (riders from live monthly RidershipEntry check-ins; falls back to seeded monthlyRidesCount × riderShare when no entries exist)
Pro-rata by capacity share keeps the sum of per-group subsidies exactly equal to the program total — no double counting, no rounding drift.
co2AvoidedKg = riders × (program.co2FactorKgPerMile × DEFAULT_SOLO_COMMUTE_MILES)One-way solo-commute baseline (10 mi) × the per-tenant EPA passenger-vehicle CO₂ factor, multiplied by the number of riders for the month.
- ›baselineKgPerRider = 0.404 kg/mi × 10 mi = 4.04 kg/rider (matched-by-hand against the seeded PilotProgram.co2FactorKgPerMile)
- ›co2AvoidedKg = riders × baselineKgPerRider (riders from RidershipEntry.kind = "checkIn" for the current UTC month)
Tailpipe CO₂ only — does not include upstream fuel-cycle (well-to-tank) emissions. Multiply by 2 for a round-trip policy.
utilizationPercent = min(100, totalEnrolledCents ÷ irsMonthlyCapCents × 100)Sum of enrolled cents across eligible commuters for the month, divided by the program-level IRS monthly cap, capped at 100%.
- ›enrolledCents per commuter = min(irsMonthlyCapCents, monthlyVanFareCents) — limited to the lesser of the IRS cap and the actual van fare
- ›program enrolment is a (groupCapacity ÷ totalGroupCapacity) split of totalEnrolledCents — the per-group ro rata matches the same logic the monthly report applies to subsidy
- ›IRS_MONTHLY_CAP_CENTS_DEFAULT = 31,500 (the 2024+ §132(f) transit-pass monthly exclusion, mirrored on PilotProgram.irsMonthlyCapCents so a sponsor override is a one-row update)
Until a single BenefitEnrollment row exists for the (program, month) pair, the monthly report renders the literal "0.0%" with a pendingReason pointer to /dashboard/benefits — never silently zero-pads a missing metric.
gallonsAvoided = (riders × co2FactorKgPerMile × soloCommuteMilesOneWay) ÷ KG_CO2_PER_GALLON_GASOLINEThe Scope-3 decomposition of the CO₂-avoided figure into gallons of motor gasoline avoided, using the EPA factor of 8.887 kg CO₂ per gallon. Categorised under GHG-Protocol Scope 3 category 7 / 13 (commuter travel).
- ›KG_CO2_PER_GALLON_GASOLINE = 8.887 (EPA GHG Equivalencies — passenger-vehicle tailpipe)
- ›gallonsAvoided = co2AvoidedKg ÷ 8.887; round-trip auditors multiply miles by 2
- ›Per-tenant CO₂ factor lives on PilotProgram.co2FactorKgPerMile (seeded 0.404 kg/mi) — a per-sponsor override re-routes the formula without a code change.
One-way assumption; round-trip auditors multiply by 2. Tailpipe-only boundary documented in /methodology.
The constants, called out line by line.
Every assumption a sponsor could push back on is on this page in plain English, with the literal value (or the row that owns it) and a note explaining where it shows up in the report. If a constant moves, bump methodology-v1 and ship.
| Assumption | Value | Why it's there |
|---|---|---|
| Solo-commute miles (one-way) | 10 mi | DEFAULT_SOLO_COMMUTE_MILES in src/lib/business/reports.ts. Common one-way commute length used when a tenant hasn't supplied a sponsor override. Auditor middleware: multiply by 2 for a round-trip policy. |
| Per-tenant CO₂ factor | PilotProgram.co2FactorKgPerMile | EPA passenger-vehicle average (≈0.404 kg/mi) lives on the seeded PilotProgram row so a future per-tenant override re-routes the formula without a code change. |
| CO₂ per gallon of motor gasoline | 8.887 kg CO₂ / gal | EPA GHG Equivalencies — passenger-vehicle tailpipe. Used to translate CO₂-avoided (kg) into gallons of gasoline avoided. |
| IRS §132(f) monthly transit-pass cap | $315.00 (31,500¢) | IRS_MONTHLY_CAP_CENTS_DEFAULT in src/lib/business/commuter-benefits.ts. Mirrored on PilotProgram.irsMonthlyCapCents so a sponsor override is a one-row update — the 2024+ transit-pass monthly exclusion limit. |
| Vanpool-qualified min route distance | 0.5 mi (max pairwise, great-circle) | VANPOOL_DISTANCE_MIN_MI_DEFAULT in src/lib/business/commuter-benefits.ts. Measles eligibility — a match counts as IRS-eligible vanpool when the maximum pairwise great-circle distance across the stops is ≥ 0.5 mi. |
| Van occupancy denominator (CMAQ) | ∑(vanGroupCount × operatingDays × vanCapacity) / vanGroupCount | Peak capacity × operating days × # van groups; mirrors the CMAQ ridership-compliance report's occupancy formula so an auditor comparing the two views sees matching service-period windows. |
| Distance calculation | Great-circle, pairwise | distanceMiles() in src/lib/business/commuter-benefits.ts — Haversine on (lat, lng). No third-party routing API dependency, so the row reads back to the page deterministically. |
| Round-trip policy | One-way; auditors multiply by 2 | Default one-way assumption; a sponsor that runs a quarter-based or round-trip policy multiplies the per-rider baseline by 2. The monthly report renders the unadjusted figure and the doc states this explicitly so an auditor doesn't double-count. |
| Reporting month window | Calendar month in UTC | currentUtcMonth() in src/lib/business/{reports,scope3-export,cmaq-export}.ts. Ridership rows also use UTC (utcDayBounds in ridership-log.ts) — staying UTC keeps the day-window deterministic across server timezones. |
| Solo-commute USD per mile | $0.67 / mi | DEFAULT_SOLO_COMMUTE_USD_PER_MILE in src/lib/business/methodology.ts (currently $0.67/mi, the IRS standard business-mileage rate). Same constant the rider /dashboard/my-trips page multiplies by DEFAULT_SOLO_COMMUTE_MILES to express the per-ride "cost saved vs. solo commute" figure in dollars. |
A doc that lines up with the live numbers.
Every formula on this page re-executes against the program that wrote the numbers behind these two links. Stamps match (same methodology-v1), windows match (current UTC month), and a coach audit pass on either page reproduces the other.
Scope-3 rollup
Gallons avoided, CO₂ avoided (kg), per-rider baseline — methodology-version stamped on every CSV export.
Open the Scope-3 bundleMonthly report
Cost-per-rider, IRS pre-tax benefit utilization, CO₂ avoided (kg) — live per-(tenant × month) figures.
Open the monthly reportTwo paths from this page to the numbers behind it. Both end with the same stamp: methodology-v1 — a coach-audit-grade replay for any reviewer.
- Read the leading Methodology Version row on the CSV (or pill at the top of /dashboard/reports/scope3) and confirm it matches methodology-v1.
- Read Methodology Tieback and confirm the URL is /methodology.
- For each calculation the CSV surfaces, jump to the matching card on this page and recompute using only the values in the CSV preamble + column headers. Spot-check against the constants listed in the assumption table.
- · subsidyUsd = monthlySubsidyUsd × (groupCapacity ÷ totalCapacity)
- · riders = Σ RidershipEntry.headCount for the group’s check-ins this month
- · costPerRiderUsd = subsidyUsd ÷ riders
- · totalEnrolledCents = Σ BenefitEnrollment.enrolledCents (eligible, this month)
- · utilizationPercent = min(100, totalEnrolledCents ÷ irsMonthlyCapCents × 100)
- · Per-group slice = enrolledCents × (groupCapacity ÷ totalGroupCapacity)
- · baselineKgPerRider = co2FactorKgPerMile × soloCommuteMilesOneWay
- · co2AvoidedKg = totalRiders × baselineKgPerRider
- · gallonsAvoided = co2AvoidedKg ÷ 8.887 (EPA motor-gasoline factor)