# Site Selection Atlas: model and report review

Review date: September 16, 2026. Baseline: local `2026-09-public-load-method-v8.2`. Corrections in this review use `2026-09-siting-audit-v9`. This is an implementation audit, not a validation of every upstream observation.

## Verdict

The current app is useful for finding places to investigate. It is **not yet a complete technology-specific site feasibility or investment model**. Its strongest features are reproducible scan/pin assessments, explicit missing evidence, hourly generation/consumption matched to prices, utility-specific load bills, and separation of reported projects from modeled suitability.

The largest weakness is the meaning of the headline score. It blends infrastructure proximity, physical-resource indicators, a common land screen and economic proxies. A high number can coexist with an unconfirmed electrical connection, negative battery NPV, missing site permissions, or no contracted water/fiber. Weighted evidence coverage is coverage of the configured model, not completion of project diligence. More grid cells or better color scaling cannot remedy omitted criteria.

**From scratch I would build two coordinated outputs:** a comparative score for shortlisting, and a nonnumeric list of essential conditions, measured constraints and unresolved questions. There should be only one numeric site score, with critical conditions visible even if their category weight is zero. The report now follows this distinction.

Detailed evidence and code references: [battery/load audit](battery-load-audit-2026-09.md), [generation audit](generation-audit-2026-09.md).

## Criteria by technology

| Technology | Useful implemented analysis | Critical analytical additions | Evidence requiring project confirmation |
| --- | --- | --- | --- |
| Battery | Chronological day-ahead arbitrage with power/energy/efficiency limits; user costs and NPV; candidate POI and mature storage queue evidence; temperature and footprint | Degradation/augmentation and auxiliary load; rolling dispatch and overnight SOC; multi-year price risk; explicit connection cost; separate capital recovery; RA/ancillary/tolling scenarios without invented revenues | Import and export capability, settlement attachment, deliverability/contracts, bay and route, upgrades/date, equipment/fire/access layout |
| Solar | Hourly regional irradiance, mounting and DC/AC/loss assumptions; output × same-hour LMP; generation capture value; MW-based footprint | Finer multi-year irradiance; usable contiguous land and shading/layout; capex/O&M/degradation and net project value; curtailment/control scenarios, connection-cost sensitivity | Parcel rights and permissions, buildable layout, actual POI/export rights and upgrades, offtake |
| Onshore wind | Coarse hourly wind scaled to local GWA mean; hub-height/generic-turbine/loss assumptions; output × LMP; spacing versus disturbed acreage | Multi-year multi-height/direction/density data; turbine curve, wakes and micrositing; roads/grade/setback/wildlife/aviation constraints; lifecycle economics | Wind campaign and design yield, local setbacks, wildlife/aviation review, land/roads and export connection |
| Geothermal | Explicit EGS versus hydrothermal scope; mapped legacy EGS cost; assumed flat output; generic surface hazards | Replace undocumented legacy cost scenarios; depth/temperature/capacity and well-cost scenarios; drilling failure/risk, pumping load, decline, reinjection/water; distinguish scenarios from reservoirs | Reservoir temperature/flow/permeability, sustainable MW, wells and subsurface rights, induced-seismicity review, water and electrical service |
| Data center | Published utility TOU/demand bills; explicit MW/utilization/PUE/WUE; public distribution planning fit; carrier facilities; supplier drought balances; utility-wide outage history | Dedicated bulk-service alternatives; cooling-system/weather coupling and design-day water/energy; backup/redundancy; latency/route diversity; local reliability; tariff eligibility and project-cost scenarios | Firm service MW and energization, upgrade responsibility, parcel carrier service/independent routes, allocated water and discharge, permits |
| Hydrogen | Renewable-only regional solar/wind optimization, electrolyzer utilization/output and water demand; separate grid-electricity sensitivity | Explicit renewable/grid/hybrid systems; local reoptimization; output firmness/storage; water/treatment; transport/offtake and delivered cost; technology-specific eligibility/readiness design | Renewable connections and supply rights, water allocation, process layout, buyer contract and delivery route |
| Other/custom | User-selected generation, load or storage role; general infrastructure/land context | Separate modules for actual processes: hydro hydrology/head, bioenergy feedstock/logistics/emissions, industrial process requirements, etc. | The actual technology and process brief must be defined; a generic profile cannot establish resource feasibility |

Generic large loads should eventually be separated from data centers: a factory should not inherit the same commercial-carrier weighting automatically. The existing description explains the data-center defaults but does not make the underlying model process-specific.

## Cross-cutting deficiencies that affect interpretation

1. **Shared land heuristics are too generic.** Solar grading, wind ridgelines and roads, battery safety spacing, wellfields, and hydrogen process separation are different constraints. Regional slope and hazard samples are useful context but do not replace those layouts. Historical Stanford layers are dated research screens, not current legal exclusions.
2. **Proximity is not electrical feasibility.** It is 25% of solar/wind, 30% of battery and 35% of load defaults. Those shares are judgment, not empirically calibrated development probabilities. CPUC generation deliverability, generation queues and nearby lines cannot be converted into firm load service. Do not increase scores simply to reproduce observed development clusters.
3. **Economic score and profitability differ.** Solar/wind capture price is gross market value; battery annual margin drives its market score while capital recovery appears separately in NPV. Utility tariffs are fixed dated scenarios rather than target-year forecasts. These quantities need distinct report labels.
4. **Missing evidence can change ordering.** The score renormalizes over known evidence. Switching a constrained distribution scenario to an unmodeled bulk scenario can raise the observed-evidence average while reducing coverage. The unresolved range and essential-condition list must remain visible; scores from different design scopes are not direct like-for-like comparisons.
5. **Weather resolution is much coarser than the scan.** A detailed 0.05-degree grid is roughly 5 km, not uniform 5 km squares. Environmental snapshots are approximately 5 km; solar weather is 1 degree, wind chronology about 0.5 by 0.625 degrees, and H2 production has only 44 regional scenarios. Source-scale limits survive interpolation and caching.
6. **Evidence availability is not evidence accuracy.** A complete price year, reported carrier count or utility-wide outage statistic may have full modeled coverage while remaining a proxy for the actual parcel. A future schema should retain precision, vintage and reliability separately from missingness.
7. **Validation remains diagnostic.** Stored battery validation is v5; data centers v6; generation uses very small cohorts. They do not validate v9. The stored battery diagnostic showed essentially no matched-location enrichment. Repeat on held-out regions and vintages with uncertainty, matched coverage and clear operating/planned distinctions. Unbuilt control locations are not proven negative sites.

## Current source register: what each source can establish

| Source family in the app | Recorded basis | Appropriate use and important limit |
| --- | --- | --- |
| CEC/HIFLD substations, simplified transmission and operating plants | Feature-level source vintage is not consistently provided; fetch time must not be substituted | Infrastructure location/voltage and reported nameplate. Not topology, ratings, service rights or capacity available for the proposed project. |
| CAISO generator queue | Bundled September 10, 2026 report; loader can prefer a newer origin report | Status, reported POI, requested MW and agreement maturity. Missing geocodes and uncertain POI joins remain visible; this is not a load-service queue. |
| CAISO day-ahead prices | 2025 hourly archive; UTC alignment and missing-hour coverage retained | Historical concurrent capture/consumption/dispatch value. The two DST dates with ambiguous archive identifiers are excluded. Geographic price attachment and future revenues remain uncertain. |
| EIA-860M generation inventory | July 2026 workbook, published August 26; workbook hash recorded, original retrieval timestamp not recorded | Operating, construction and planned resource observations; status/year filters matter. An observed project may have an existing POI, land rights and contract the modeled new project lacks. |
| Cleanview data-center inventory | Dated local inventory and campus matching, documented in `datacenter-inventory.md` | Reported activity and diagnostic locations. Not a utility service allocation or an independent validation outcome. |
| Hourly NASA weather and derived PV geometry | 2025 chronology, 173 sampled weather points; solar 1 degree, wind approximately 0.5 by 0.625 degrees | Regional chronological yield. Decomposed irradiance and generic turbine assumptions need independent site-yield checks. |
| Global Wind Atlas 4.0 | 2008-2017 model climate; app extract sampled at 0.025 degrees, about 2.8 km, from a map raster | Local mean-wind adjustment, not locally resolved hourly turbulence or turbine micrositing. Native atlas resolution and the app's extracted resolution are different. |
| Geothermal layer inherited from Grid Map | Source hash present; scenario/cost-year metadata absent; nearest record limited to 6 km | Legacy modeled EGS cost context. The quantitative resource score is weakly supported until scenario lineage is recovered or replaced. |
| Hydrogen Atlas bundle | 44 regions, 2024 hourly weather and 2024 USD, fixed model/assumption hashes | Renewable-only production scenario. A nearest region can be up to 90 km away; local siting controls do not rerun that optimization. |
| Environmental snapshots | Approximately 5 km samples, with layer-specific status and vintage | Regional terrain, fire, flood, wetlands, land cover and planning signals. Missing flood coverage is not low risk; no-intersection results do not cover the full project footprint. |
| Stanford development layers | October 2020 study; individual source dates differ | Historical protected-land, habitat and other regional overlaps. Must not be promoted to current legal parcel exclusions. |
| CPUC busbar planning | 2026 planning context, some fuzzy coordinate matches | Generator deliverability constraints and contemplated upgrades. Not firm load headroom or a guaranteed energized upgrade. |
| Utility tariffs and distribution forecasts | Conditional 2026 bills for six utilities; PG&E forecast horizon 2026-2040, bundled SCE horizon 2025-2029 | Full bill arithmetic for supported assumptions; limited distribution planning comparison. SDG&E public-map redistribution restrictions prevent assuming that its visible layer is reusable. |
| Water, communications and reliability | 2020 supplier plans with future/drought scenarios; public supplier boundaries; PeeringDB memberships and state middle-mile routes; 2024 utility-wide SAIDI | Supplier planning balances, network presence and broad reliability proxies. Not allocated water, commercial serviceability, independent routes or campus uptime. |

The 37 loaded source entries do not represent 37 independent confirmations: several describe overlapping facts or different products from the same underlying source. Source count should never be interpreted as model completeness.

## Correctness and report changes in this review

| Before | After |
| --- | --- |
| Valid retail-priced loads could lose their score when no nearby CAISO hourly node existed | Load scoring no longer requires an irrelevant wholesale reference; hourly prerequisites remain for the technologies that use them |
| PG&E banks and feeders were truncated to the nearest three before matching | All in-radius records are joined by unique identities before ranking; no outside-radius upstream record is borrowed, and the display cap follows selection |
| Critical prerequisites were scattered among detailed evidence | A technology-specific Decision essentials section shows what is modeled, proxied or unverified independently of score weights; included in JSON exports |
| A high battery margin score could obscure negative capital recovery | Decision essentials surfaces the actual energy-only NPV and whether it is negative, separately from the screening score |
| Generation and storage reports presented a long sequence of sections | Score drivers, performance/value, connection context, land constraints and supporting sources form a consistent hierarchy |
| Custom load/storage could show unrelated generic-generation resource text | That generation-only context is omitted from consumption and storage reports |
| Hydrogen led with a separate grid-electricity comparison | Renewable production leads; grid sensitivity is collapsed and explicitly unscored |
| Generation revenue could be read as project economics | Solar, wind and geothermal headings identify output and wholesale revenue; omitted costs are explicit |
| Two wind capacity-factor estimates appeared equivalent | The fixed-default comparison is labeled unscored and distinguished from the active chronological model |
| The default hydrogen score failure looked like a few missing locations | The report explains the structural 59.75% maximum default evidence coverage, below the 60% headline gate; no threshold was silently lowered |
| Earlier validation pages could be mistaken for tests of the current model | Battery v5, load v6 and generation v7 pages are visibly marked archived, with their recorded results preserved |
| Every weight change repeated the geographical/physical scan | Scenario-specific criterion vectors can be reused through the scan cache; build/publish details and validation are in the precompute documentation |
| Resetting weights could leave an old map ranking beside the updated report | Reset now clears stale rankings; the next scan reweights saved criteria under the reset priorities |

The hydrogen scoring design is **still unresolved**. With default weights, unknown market/service categories and no parcel acreage, even otherwise perfect evidence cannot pass the generic headline threshold. Production-cost ranking remains useful. Changing the model requires an explicit system boundary and technology-specific criteria; lowering a threshold to make the map green would hide the underlying issue.

## Public data worth integrating next

These are identified sources, **not data claimed to be integrated in this change**.

| Addition | What it improves | Scope and work required |
| --- | --- | --- |
| [NSRDB](https://developer.nlr.gov/docs/solar/nsrdb/) | Irradiance at substantially finer temporal/spatial resolution, including direct/diffuse components and multiple years | The CONUS product offers 2 km/5-minute data from 2018; select years, process California chunks offline, validate against independent yields and preserve source metadata. API/bulk access and redistribution must be checked for the selected product. |
| [WIND Toolkit / WTK-LED](https://www.nlr.gov/grid/wind-toolkit) | Multi-height chronological wind inputs | Select the appropriate CONUS product, years and native grid. Requires turbine/wake calculations and local validation; raster resolution is not site measurement accuracy. |
| [Documented geothermal supply curves](https://www.nlr.gov/gis/geothermal-supply-curves.html) | Scenario-specific technology/depth, available area, capacity/generation and connection costs | Replace the legacy unknown-vintage cost layer with explicit scenarios. Published potential remains a modeled resource, not proof of wells. |
| [Technology cost baselines](https://atb.nlr.gov/electricity/2025/technologies) | Consistent dated capex/O&M and financial scenarios | Add user-editable lifecycle analysis; regional baselines are not bids, site upgrade costs or secured revenue. |
| [Berkeley Lab data-center modeling](https://eta-publications.lbl.gov/sites/default/files/2024-12/lbnl-2024-united-states-data-center-energy-usage-report_1.pdf) | Cooling-system/PUE/WUE tradeoffs by climate and load | Build and validate hourly cooling scenarios, peak water and electrical demand, instead of independently changing constant PUE/WUE. |

Public models can improve these estimates substantially. They cannot establish unoffered firm electrical capacity, a carrier's parcel service commitment, a water allocation, project ownership, or a drilled reservoir. Those are not merely missing downloads.

## Report design to retain

1. **Project and scenario:** MW, duration or peak/average demand, target year, connection design, operating profile and dated economic basis.
2. **Comparative result:** one score, covered weight, unresolved range and explicit conditional interpretation.
3. **Decision essentials:** project-specific constraints and unanswered questions, unaffected by preference weights.
4. **Why it ranks here:** scored measurements, contribution/coverage, and important sensitivity to assumptions.
5. **Technology performance and value:** energy, cost, revenue, footprint and water quantities with the correct system boundary.
6. **Connection, land and development:** observed constraints, alternatives, required studies and project rights.
7. **Supporting evidence:** nearby operating/planned projects, alternate scenarios, full records, source vintage/resolution, reproducible export.

Do not add a second numeric readiness score. Do not bury unresolved essentials in a percentage or imply every requested technology already has an equally mature model.

## Precomputation: feasible, but scenario-specific

Save **each criterion's score and evidence coverage**, plus restrictions and eligibility. Do not save only the final score. For weights `w`, coverage fractions `c` and criterion scores `s`, reproduce the current model with:

```text
covered weight = sum(w * c)
comparative score = sum(w * c * s) / sum(w * c)
```

The shared aggregation must still apply the resource, hourly-evidence, boundary, verified-restriction and minimum-coverage rules. A missing observation remains missing when its weight changes.

For an exact non-weight scenario, reweighting saved vectors is cheap. Changing MW, year, radius, minimum voltage, duration/efficiency, load shape, tariff class, turbine or PV design, water assumptions or footprint can change the vectors. Use an exact scenario key and versioned source/model fingerprint; otherwise recompute. Re-evaluate finalists for the full report against the same data and assumptions.

A sensible offline architecture has three levels:

- **Reusable spatial features:** nearest assets, source-grid cell assignments, polygon intersections, POI identities, candidate electrical chains and source provenance.
- **Physical/economic scenario calculations:** node dispatch, hourly production/capture, tariff schedules and year-specific capacity/water balances. Some can be factored and reused; others depend nonlinearly on inputs.
- **Compact criterion grids:** dimensions, coverage and eligibility for declared design scenarios. Weight-only changes use these immediately.

Current implementation adds the last level plus a build path; it does not claim that every continuous combination of user assumptions has been precomputed. A dense lattice makes navigation faster, not the evidence finer. Model corrections and source updates must invalidate old bundles, including daily queue/price changes. See [implemented cache, build commands and measured performance](precomputed-scans.md) for the exact artifact coverage and test results.

## Verification performed

- The complete Node suite passed 280 tests after the scoring, candidate-search and cache changes; final report refinements also passed their targeted tests. These are implementation regressions, not proof of siting predictive accuracy.
- Browser checks exercised all seven project types, decision-scope JSON exports, section hierarchy and narrow-screen overflow. The load report also passed its existing desktop/mobile, recalculation and expanded-section preservation checks.
- Cache checks compare reused criteria with fresh evaluated reports, including evidence coverage and prerequisite gates, and require recalculation when project assumptions change. The precompute notes record actual end-to-end artifact verification separately.
- Two old baseline tests still expected wholesale averages to cover a missing load tariff and supplier criteria to be absent. They now verify that the retail category remains uncovered and a supplier boundary alone does not fill its planning-balance criterion.

The older EIA/Cleanview location benchmarks were not rerun as a new holdout study. Their pages explicitly identify the archived model revisions.

## Priority order after this review

1. Correct technology system boundaries, hydrogen eligibility, load connection scope and lifecycle-value semantics before calibrating weights.
2. Bring in finer multi-year solar/wind and documented geothermal scenarios; implement lifecycle scenarios and cooling tradeoffs with independent checks.
3. Separate parcel/route/layout constraints from regional point evidence; build technology-specific development modules.
4. Refresh holdout diagnostics on the revised model; report sensitivity and non-identifiability rather than forcing overlap with observed clusters.
5. Publish versioned high-resolution scenario grids only after these methods are stable; reuse shared physical features to control rebuild cost.
