# Recommendation methodology (rec-v3.1)

> Canonical URL: https://www.poaindex.com/ai/methodology.md

Version string: **rec-v3.1**.

PoaIndex ranks cultivars using historical NTEP Turfgrass Quality results from a **local evidence anchor** plus **regional multi-year support**. Results are normalized within comparable trial cohorts, weighted toward more recent evidence, and adjusted for evidence strength so sparse data does not create overconfident rankings.

## Evidence layers

| Layer                  | Meaning                                                                     |
| ---------------------- | --------------------------------------------------------------------------- |
| NTEP Turfgrass Quality | Scientific performance (within-cohort × site percentiles)                   |
| NTEP commercial `*`    | Historical report-year commercial marker only — **not** currently available |
| AOSCA                  | Official variety identity — **display only**                                |
| Retail availability    | Not implemented                                                             |

**AOSCA identity and NTEP commercial markers never affect scientific score.** There is no geographic performance multiplier and no local-site score bonus.

## Site selection (rec-v3.1)

1. Consider geocoded NTEP sites within a search radius (default 800 km), sorted by distance.
2. **Local anchor:** nearest site with ≥1 distinct year and ≥10 canonical cultivars (no recency requirement).
3. **Regional support:** up to 2 additional sites with ≥3 years and ≥10 cultivars, preferring recent tiers.
4. Union of selected sites is at most **3** (local first).
5. Sparse fallback uses nearest non-local candidates only when longitudinal regional support is absent.

The nearest site is **not** the only evidence. Regional multi-year support remains part of the plan when available.

## Scoring

1. Within quality-cohort × site annual percentiles only.
2. Weight each observation by `0.9^age`.
3. `rawScore` = weighted mean percentile.
4. `confidence` combines year, site, and recency factors (site factor saturates at 2 sites with data).
5. `score = 50 + confidence × (rawScore − 50)`.

PoaIndex **score** is therefore a confidence-shrunk percentile score, not a raw NTEP mean printed from a single table.

## What static docs cannot do

Recommendation results are **location-specific**. Do not invent a ZIP-specific ranking from this documentation. Use the interactive website for a postal-code recommendation.
