Coverage reconciliation — eligibility ↔ enrollment (#621)
Generated by scripts/record-matcher/coverage-reconciliation.ts. TX-scoped, ≤2000 rows per source, resolved BLIND across sources. Eligibility = NPPES org NPIs + TX HHSC nursing facilities; funding/enrollment = FCC Rural Health Care filings. Each resolved entity is classified by which kinds of source its records spanspanA contiguous range of characters or tokens in the input string, tagged with an address component type (street, locality, postcode, etc.). Parsed addresses are represented as collections of spans, possibly nested in a tree..
Scored with the Fellegi-SunterFellegi-SunterA probabilistic record linkage model that computes match probability from agreement-level log-likelihood ratios: log₂(m/u) where m is the probability of agreement given a true match and u is the probability of agreement by chance. Mailwoman learns m and u label-free via expectation-maximization. baseline (learnedScorer: false): this is a cross-dataset eligibility ↔ funding join (recallrecallOf the spans whose gold label is a given tag, the fraction the model found. High recall means few misses. Paired with precision to compute F1.-oriented), so the dedup-calibrated GBTGBT (Gradient Boosted Trees). A non-linear machine learning model that combines many weak decision trees into a strong predictor. Mailwoman uses a GBT as an optional learned scorer for single-dataset dedup, improving F1 by 5–7 percentage points over the Fellegi-Sunter baseline. default (#603) — trained to reject the "same place, different operational name" pattern that IS the cross-source signal — is pinned off. See #655.
The reconciliation
| bucket | entities | meaning |
|---|---|---|
| enrolled | 22 | resolves to an eligibility record AND a funding record |
| eligible, not enrolled | 2749 | eligibility record, no funding record resolved (the anti-join) |
| funded, not in eligibility set | 572 | funding record, no eligibility record resolved |
Of the 2771 entities with an eligibility record, 0.8% also resolve to a funding record — a floor, not a coveragecoverageThe fraction of a population or region for which a data source has real, non-placeholder entries — e.g. 47% rooftop coverage on Texas addresses. Distinct from accuracy on the rows that are present. rate (imperfect resolution + any sampling only ever miss links, never invent them). The deliverable is the anti-join SET, not this percentage.
Anti-join spot-check — first 15 "eligible, not enrolled"
| entity | sources | name | coordinate |
|---|---|---|---|
| entity-0 | txhhsc-nursing | avir at elkhart | 31.6200, -95.5753 |
| entity-1 | txhhsc-nursing | avir at town creek | 31.4472, -99.3171 |
| entity-2 | txhhsc-nursing | legacy at town creek | 31.7456, -95.6477 |
| entity-3 | txhhsc-nursing | trucare living centers | 31.7303, -95.6272 |
| entity-5 | txhhsc-nursing | diboll nursing and rehab | 31.1707, -94.7889 |
| entity-6 | txhhsc-nursing | huntington health care and rehabilitation center | 31.2782, -94.5742 |
| entity-7 | txhhsc-nursing | kennedy health and rehab | 31.3367, -94.7614 |
| entity-8 | txhhsc-nursing | larkspur | 31.3307, -94.7577 |
| entity-9 | txhhsc-nursing | parkwood in the pines | 31.3206, -94.7290 |
| entity-10 | txhhsc-nursing | pinecrest retirement community | 31.3158, -94.7317 |
| entity-11 | txhhsc-nursing | southland rehabilitation and healthcare center | 31.3406, -94.6913 |
| entity-12 | txhhsc-nursing | gulf pointe plaza | 28.0414, -97.0511 |
| entity-13 | txhhsc-nursing | rockport nursing and rehabilitation center | 28.0462, -97.0510 |
| entity-14 | txhhsc-nursing | palo duro nursing home | 35.1075, -101.3628 |
| entity-15 | txhhsc-nursing | jourdanton nursing and rehabilitation | 28.9137, -98.5411 |
The caveat that matters
This is a capped sample (≤2000/source), so "eligible, not enrolled" includes entities that ARE enrolled in reality but whose funding record fell outside the sample — a sampling artifact, not a finding. At full scale the anti-join tightens, but it is STILL only a set of candidates. This is a set-membership reconciliation, not a determination. A missing funding record can mean the entity didn't apply, applied under a name we didn't resolve, is ineligible, or any number of things. We produce the reconciled join and surface the candidate set; what a gap means, and whether to act on it, is entirely the data consumer's call. Nothing here is an allegation.