The California Fee Friction Study: The Number We Couldn't Compute

The average government fee load on a new single-family home in California is $37,471, nearly three times the $13,627 national figure reported by California YIMBY and UCLA's Lewis Center in 2024. Earlier Terner Center research found that the same prototype home could face roughly $21,000 in fees in one California city and $157,000 in another.
On an attainable home, that difference is not a rounding error. It can decide whether a project pencils or a lot stays empty.
So we asked a reasonable question: for one ordinary house in each of HABU's 188-jurisdiction California research set, what is the complete government fee total?
We came back with zero complete, certified totals.
That zero is the most important number this study produced.
The schedules are online. The total is not.
California Government Code section 65940.1 requires cities, counties, and special districts with websites to publish current fee schedules. On paper, the transparency problem appears solved.
In practice, the city posts one schedule, the school district another, and water, sewer, transportation, and drainage charges may each belong to different authorities. A building-permit fee can depend on a construction valuation table that points to another table. Every agency may have technically published its piece while nobody has told a builder what the house costs.
The fee schedule is online. The total is hiding in a small committee.
One house, held constant
A comparison needs a common object. We fixed one prototype and carried it through every jurisdiction:
A 2,000-square-foot, three-bedroom, two-bath detached single-family home on an infill lot, with standard utility connections and government charges due at building-permit issuance.
The target stack has four separately attributed categories:
- City or county impact fees
- Plan-check, building-permit, and related processing fees
- School-district facilities fees
- Utility capacity or connection charges
We also maintain an unattributed bucket as a quarantine. If the research cannot identify which authority sets a charge, it does not quietly become a city fee.
What the research pipeline found
The run attempted all 188 jurisdictions. The source resolver recorded an explicit outcome for each one: 151 official-source hits and 37 explicit misses.
An AI model read the public HTML pages and PDFs, but it was not allowed to grade its own work. Each proposed fee row had to pass deterministic checks:
- The cited file matched the cached source by cryptographic digest.
- The file belonged to that jurisdiction's evidence set.
- The cited language appeared in the source.
- The evidence excerpt stayed short and auditable.
- The category, calculation basis, and fee-setting authority were explicit.
- The dollar amount could be reproduced from the evidence and arithmetic.
What survived was 658 validated fee line items across 107 jurisdictions, plus 81 explicit extraction gaps. Complete all-four-category totals: zero.
The gap is the finding
It would have been easy to smooth the map by letting a model fill gaps or by calling a jurisdiction “covered” whenever we found a webpage. We did neither.
The result shows that fee comparison is an entity-resolution problem before it is a math problem. A city name is not the fee stack. The stack is a graph of authorities, service areas, effective dates, formulas, and project facts.
Common failure points included:
- Official servers that rejected automated access
- Image-only or poorly structured PDFs
- Formulas missing the construction valuation needed to use them
- Utility charges that could not resolve without meter size
- Benefit-district fees that could not attach without a parcel
- School rates published by an authority whose geography did not cleanly match the city
Each gap is a place where statutory transparency can hold technically and fail practically.
Complete totals and partial evidence are different populations
The study enforces a separation that public rankings often blur.
A complete total contains all four categories and source evidence supporting full coverage. Only a complete total can earn a public price rank.
A partial evidence subtotal is exactly that: the validated items in hand and nothing more. It may show where research is farther along, but it cannot be interleaved with complete totals. A blank stays blank; it is never treated as zero.
With 107 partial subtotals and zero complete totals, publishing a cheapest-city leaderboard would be an act of typography, not measurement. Sorting incomplete baskets does not make them comparable.
What comes next
A defensible comparison requires closing the authority gaps: resolving school districts and adopted rates, mapping special-district service areas, establishing a consistent construction-valuation convention, and ranking complete totals only.
The pipeline is rerunnable and versioned, so every closed gap compounds instead of starting over. Fee Friction remains a standalone, display-only research layer until repeated validated cycles justify any use inside a composite score.
That matters for the Nimble Attainability Index. Fees affect whether attainable product can be delivered, but an incomplete fee stack should not be smuggled into a precise-looking score.
For a parcel-level public-record check, visit HABU. The research is designed to show what the evidence supports—and to label where the evidence stops.
Sources and release notes
Context figures are drawn from the Terner Center for Housing Innovation's California residential-impact-fee research and California YIMBY/UCLA Lewis Center's 2024 fee study. The 188-jurisdiction run statistics are from HABU's July 2026 sfd2000-v0 evidence set. Government Code sections 65940.1 and 66016.5 govern publication of fee schedules and nexus studies.
The Field Notes newsletter
Get HPC in your inbox
Notes from a builder running a homebuilding company on AI — attainable housing, construction ops, and the systems behind them. No spam, unsubscribe anytime.