# Exchange Plan Profile — composed ACA marketplace plan brain

`medicare_silver.fact_exchange_plan_profile` · Insurer negotiated rates · status live · 60,591 rows

The composed "plan brain" for the ACA marketplace: one row per plan-year carrying its full vector — attributes (metal/type/on-off-exchange/issuer/TIN) from Plan Attributes, premium benchmarks (age 21/40/60 x rating area) from Rate, network name from Network, county footprint from Service Area, covered-benefit counts + headline cost-shares (PCP/specialist/ER/urgent/generic/inpatient) from Benefits & Cost Sharing, CMS star ratings from Marketplace Quality, and the issuer's individual-market financials (premium earned + MLR ratio) from the CMS MLR PUF. Joins measured/verified (Plan Attributes->Rate 100%; per-plan end-to-end proven); materialized so plan lookups serve fast (no parse-in-view cliff).

**Grain.** One row per (business_year, plan_id). 60,591 plan-years PY2014-2026. Materialized composition of six verified exchange PUF sources at plan grain (zero fanout).

| column | type | meaning |
|---|---|---|
| plan_id | string |  |
| issuer_id | string |  |
| state_code | string |  |
| plan_marketing_name | string |  |
| metal_level | string |  |
| plan_type | string |  |
| market_coverage | string |  |
| on_off_exchange | string |  |
| issuer_tin | string |  |
| network_id | string |  |
| network_name | string |  |
| service_area_id | string |  |
| covers_entire_state | boolean |  |
| n_counties | bigint |  |
| premium_age21 | double |  |
| premium_age40 | double |  |
| premium_age60 | double |  |
| premium_age40_max | double |  |
| n_rating_areas | bigint |  |
| n_benefits_covered | bigint |  |
| n_ehb_benefits | bigint |  |
| pcp_copay | string |  |
| specialist_copay | string |  |
| er_copay | string |  |
| urgent_care_copay | string |  |
| generic_drug_copay | string |  |
| inpatient_coins | string |  |
| quality_overall | int |  |
| quality_medical | int |  |
| quality_member_exp | int |  |
| issuer_company_name | string |  |
| issuer_naic_group_code | string |  |
| issuer_ind_premium_earned | double |  |
| issuer_ind_mlr_ratio | double |  |
| business_year | int |  |

Query it: `query_substrate` with `SELECT ... FROM medicare_silver.fact_exchange_plan_profile WHERE ... LIMIT 100`; read `describe_data_source("medicare_silver.fact_exchange_plan_profile")` first.
