Methodology
Frozen build 2026-09-07. Formulas, versions, null rules, and limitations below come directly from the build artifact.
Methods
M1_dominance/v1
Canonical SoundScore is parsed from the product-card headline with (\d\.\d)HearAdvisor SoundScore. Eligible rows have a canonical SoundScore, a non-null brand-pair price, and verified=true. B dominates A when price(B)<=price(A), canonical SoundScore(B)>=canonical SoundScore(A), and at least one inequality is strict. Pick the cheapest dominator; ties use higher canonical SoundScore then lexical id. gap_usd=price(A)-price(B). The top-10 leaderboard, Initial/Tuned sub-metrics, and soundscore_consistent are informational cross-checks only.
M2_evidence_tier/v1
T1=De Novo plus own clinical; T2=510(k) plus own clinical; T3=510(k) relying on predicate; T4=no premarket submission required under the row's regulatory_path and no public clinical data found; T5=unresolved mapping, missing joined submission, or missing trace/none confidence without an explicit joined submission where the code implies premarket review. Jabra rows rely on predicate clinical evidence and report own bench/usability testing.
M3_risk_flags/v1
Continuity RED for wind-down/dead/ABC/administration or discontinued, GREEN when known otherwise, GRAY when unknown. Model-level software data are joined by app_store_id. Software RED for >730 update days or >365 with rating<3.0; AMBER for 180<days<=365 or rating<2.5 with >=30 ratings; GREEN otherwise; GRAY only when an app is not applicable. Missing applicable app data are unknown with risk_confidence=partial. Rating rules require >=30 ratings. Safety is a MAUDE brand-query count, never a rate.
M4_tco/v1
low=brand pair price + 36*required monthly subscription + charger when excluded and priced. high=low+3*(domes+wax guards+batteries)+3*optional care plan. Unknown batteries for non-rechargeable models use 36.4 USD/year. A=all nine ownership disclosures present; B=at least one cost disclosure beyond price; C=price-only and high=price*1.21 with imputed_median_uplift. Unknown optional components are not silently added for B. tco_per_point=low/SoundScore.
M5_price_history/v1
Count non-null current and Wayback observations; min/max span retained observations and current is the chronologically latest retained observation. Archive observations are noisy inputs and do not create editorial claims. All Jabra extracted values below 200 USD are excluded as parser noise.
M7_disclosure_completeness/v1
non-null count across the nine ownership fields divided by 9; no semantic zero-fill is used.
Fields: return_window_days, warranty_months, optional_care_plan_usd, domes_usd_year, wax_guards_usd_year, batteries_usd_year, charger_usd, subscription_usd_month, professional_fitting_usd
M8_orphan_risk/v1
true when app_required_for_daily_use is true and continuity or software is RED. app_required_for_daily_use=true for non-Apple self-fitting rows with app=true; Apple HAF is not applicable; all other rows remain unknown.
M9_return_vs_support/v1
warranty_intake_end - (build_date + return_window_days), in calendar days. LXE dates and local-functionality wording are read directly from the frozen row fields.
Null rules
- A missing product-card file or canonical regex miss maps to parser_failed unless the frozen page says not tested; empty legacy SoundScore/HT fields map to not_scored_by_lab.
- Empty k_number with QUF/QUG maps to no_premarket_submission_required; other missing submissions map to not_found_after_search.
- Empty retail-channel and absent brand prices map to pending_snapshot.
- Empty ownership fields map to not_published_by_brand.
- Non-applicable app, dominance, support, and stale-after fields map to not_applicable.
- Other unresolved official/evidence fields map conservatively to not_found_after_search.
model_level_unavailable_brand_proxy_used- Only a brand-level proxy was available; no model-level value is asserted.
no_premarket_submission_required- The published regulatory path requires no premarket submission; no model-linked submission is inferred.
not_applicable- The field or calculation does not apply to this model.
not_found_after_search- The frozen research pass did not find the value or mapping.
not_published_by_brand- The frozen brand material does not publish the value.
not_scored_by_lab- No cited laboratory score exists for the model in the frozen input.
parser_failed- A frozen parser observation exists but did not yield a reliable value.
pending_snapshot- A channel or price snapshot is not present in the frozen inputs.
Known limitations
- FDA: MAUDE is incomplete, may contain duplicates and cannot establish causation or frequency. Counts use the documented brand query and are not rates or model-level safety comparisons.
- The HearAdvisor leaderboard snapshot exposes only its top 10 rows, so it is an informational cross-check rather than the cohort definition. Product-card headline SoundScore is canonical; leaderboard Initial and Tuned values are separate sub-metrics and never replace it.
- Wayback price extraction is noisy. Jabra values below 200 USD are known parser noise and excluded; retained archive values still do not support claims.
- Medium k_map_confidence rows are platform/model-family mappings, not proof that every marketed model is identical to the cleared device.
- Sony CRE-C10, CRE-C20, CRE-E10 and Sennheiser All-Day Clear Slim are marked discontinued in the frozen 2026-09-06 input; Sony discontinuation dates from 2026-04 context are not converted into a more precise model-level date.
- LXE frozen status records warranty intake through 2026-09-15, support through 2026-10-22, Lexie cloud/app off on 2026-10-08, Eargo cloud/app off on 2026-10-22, and local app v9 functionality if synced before shutdown.
- T5 is an unresolved regulatory mapping tier, not evidence that a submission does not exist.
- No claim states or implies that Hearing Index tested, measured, or verified product performance.
Assumptions
- The raw files are frozen observations; the build does not fetch or infer replacements.
- A false subscription_required contributes zero subscription cost without filling the raw subscription price cell.
- A charger marked included contributes zero incremental charger cost; missing optional costs remain unknown.
- Tie-breaking and all output ordering are lexical and deterministic.