How we verify 144,900+ veteran resources
Most nonprofit directories say "verified" without saying what that means. We publish the actual pipeline: data sources, verification cadence, scoring formula, geocoding methodology, and quality-assurance workflows. Deterministic, reproducible, and open under CC-BY 4.0.
Sections
1. Data sources
Records are aggregated from authoritative federal, state, and nonprofit sources. We never accept payment for inclusion. Original-source attribution is preserved in each record's data_source field.
| Source | Coverage |
|---|---|
| VA Lighthouse Facilities API | VA Medical Centers, CBOCs, Vet Centers, Mobile Vet Centers, National Cemeteries (~1,500 records) |
| VA Office of General Counsel Accreditation Roster | VA-accredited attorneys, claim agents, and VSO representatives (~50,000 records) |
| State CVSO directories (50 states + DC) | County Veterans Service Officers — free claims-help offices |
| HRSA Federally Qualified Health Centers (FQHCs) | ~14,000 federally-qualified clinics that accept veterans |
| CMS Medicare-certified providers | Nursing homes, home-health, hospice, dialysis |
| SAMHSA-tagged behavioral health providers | Mental health + substance use providers serving veterans |
| HUD-VASH grantees | Supportive Housing for veterans (joint HUD-VA program) |
| SSVF grantees | Supportive Services for Veteran Families |
| VSO chapter directories | American Legion, VFW, DAV, AMVETS, PVA posts |
| State agency veteran-services directories | State-level benefits offices, veteran homes, etc. |
| U.S. Census ACS 5-year (2022) | Tract-level veteran demographics, housing burden, income |
| CDC PLACES | Tract-level health prevalences (used for context, not as resources) |
2. Verification cadence
Records are maintained by automated pipelines plus a community-feedback review loop. Stale data is flagged + auto-demoted; broken URLs trigger Wayback Machine snapshots; contact details are ingested from authoritative federal and state directories and corrected when visitors report errors. We do not independently call-verify every phone number — see Phone accuracy below.
| Pipeline | Cadence | What it does |
|---|---|---|
| Self-healing daemon | Every 6 hours | Evaluates health_score, auto-demotes flagged-closed rows, runs HEAD probes on URLs, runs Census Geocoder on next 100 unprocessed rows |
| Census Geocoder | Every 6 hours | Assigns FIPS state/county/tract to records missing them. ~100 rows/run, ~400/day |
| Wayback Machine snapshot backfill | Every 6 hours | Captures snapshots of broken URLs to archive.org for posterity |
| Haiku enrichment pass | Weekly (Tuesday 08:00 UTC) | Claude Haiku 4.5 enriches 100 stale rows with structured eligibility tags, specialty programs, walk-in/appointment status, language, women-focused, va_accredited, and 1-line summary |
| ProPublica Form 990 enrichment | Weekly (Tuesday) | EIN-matched records get latest 990 revenue, expenses, year-of-filing |
| VA Lighthouse reconciler | Weekly (Sunday 06:00 UTC) | Stages differences between our records and VA's authoritative facility data to pending_updates queue for staff review |
| URL health scan | Weekly (Wednesday 04:00 UTC), rolling | HEAD probe + Google Safe Browsing on the 1,000 least-recently-checked URLs per run |
| Community feedback auto-triage | Continuous | Visitor reports (incorrect / closed / outdated) are deduplicated by reporter; ≥2 independent reports auto-escalate the record for review and add a caution notice on its page |
| IndexNow re-push (Bing/Yandex/Seznam/Naver) | Weekly post-enrichment | Pushes the 200 most-recently-updated URLs for instant search-engine re-crawl |
3. Completeness-score formula
The completeness_score (0-100, integer) is a deterministic function of which fields are populated + verification status + ProPublica match. No manual curation, no payment for placement. Recomputed nightly. Full formula:
Score is exposed in every /resource/{slug}-{id} page header (gold pill on /best-of/* pages) and in the /api/resources/bulk JSON. Reproducible — run our SQL against your own snapshot of /api/export/snapshot to get identical scores.
4. Geocoding pipeline
Records with a postal address are geocoded to FIPS-tract level via the US Census Geocoder (Single-Address One-Line API) wherever the address resolves to a census tract — most records, not all. Tract-level granularity (median ~4,000 residents per tract) lets us join records to ACS demographics + CDC PLACES health data + ACS housing burden — surfacing service deserts for grant proposals.
Pipeline:
- Address normalized (USPS-compliant case + abbreviations)
- POST to Census Geocoder Locations API benchmark
Public_AR_Census2020 - If match, capture lat/lng + FIPS state (2-digit) + FIPS county (3-digit) + FIPS tract (6-digit) + FIPS block group (1-digit) + match-type confidence
- If no match, retry with address fuzz (drop apt#, normalize street suffixes); if still no match, mark
geocode_source = 'failed'for manual review - Store + index FIPS columns for fast tract-level joins
Current FIPS-tract assignment: 75% of records (live count on /dashboard). Records without a tract match are mostly newer rows not yet run through the geocoder, PO Box addresses, or military APO/FPO.
5. Quality assurance
- URL health: HEAD probes on a rolling weekly schedule + on-demand. Google Safe Browsing API check (free tier 10K URLs/day). Records with broken URLs get
website_status = 'broken'and a Wayback snapshot link. - Phone accuracy: Phone numbers are ingested from authoritative federal and state directories (CMS, VA, HRSA, HUD, SAMHSA, state DVAs). We do not independently call-verify every number; accuracy is maintained through the community-feedback auto-triage loop — visitor reports of wrong or disconnected numbers escalate the record for correction.
phone_verified+phone_typeare reserved for records confirmed against an authoritative live source. - EIN verification: 501(c)(3) records cross-referenced against ProPublica Nonprofit Explorer. Mismatched EINs flagged.
- Duplicate detection:
dedup_candidatestable holds suspected duplicates (same address + same name fuzz match) for staff review. - Veteran relevance tier: Three tiers (
veteran_primary= built for veterans;veteran_serving= veterans named target population;vet_accepting= general healthcare). Default search filters to first two tiers. - Editorial review: Tier-1 (high-traffic, high-stakes) records get manual quarterly review. Editorial flags surface in
verification_runstable.
6. Correction workflows
Anyone — including the listed organization, a veteran, a journalist, or a researcher — can submit a correction or addition. Workflow:
- Submit via POST /api/feedback or email info@warriorsfund.org
- Review queue at
resource_feedbacktable - Staff review within 5 business days
- Verified corrections committed; original-state archived in
resource_historyfor full audit trail - If the change came from the listed organization, reply with confirmation + commit timestamp
7. Open-data license
All Wounded Warriors datasets are licensed under Creative Commons Attribution 4.0 International (CC-BY 4.0). Free to share, adapt, and build upon for any purpose (commercial included), provided you credit "Wounded Warriors (EIN 86-1336741)" and link back to https://warriorsfund.org/.
Bulk data: CSV · JSON · SHA-256 integrity-stamped snapshot · Project Open Data v1.1 / DCAT 1.1 catalog
8. Hash integrity + reproducibility
Every full-database snapshot ships with a SHA-256 hash so you can verify integrity. The snapshot is reproducible: given the same verified_date as-of-time + the same source-data state, our scoring formula returns identical scores. We publish the snapshot generator + scoring SQL for full reproducibility.
How to verify:
- Fetch /api/export/snapshot → response includes
{snapshot_hash, generated_at, ...} - Compute SHA-256 of the canonicalized JSON body (sorted keys, no whitespace)
- Compare against
snapshot_hash - If match, you have a tamper-evident copy of the directory as-of
generated_at
About this disclosure
This methodology page is the canonical reference for our data pipeline. It's updated whenever the pipeline changes — see Git history at github.com/EmperorMew/WWF for the audit trail. Foundation officers + academic reviewers + journalists doing source-evaluation: this page should answer your "how do you verify?" question definitively. If anything is unclear, email info@warriorsfund.org.