---
title: "How We Verify Membership Eligibility - RateAPI Methodology"
description: "Every membership-eligibility fact RateAPI stores traces to a verbatim quote on the credit union&#x27;s own page. Read the identity guard, closed-world county matching, dual-vendor open gate, and our verified accuracy record."
canonical: "https://rateapi.dev/eligibility-methodology"
last-updated: "2026-09-27"
source: "https://rateapi.dev/llms.txt"
---

# How We Verify Membership Eligibility - RateAPI Methodology

## In This Document

1. 1 How Eligibility Is Verified
2. 2 Our Accuracy Record
3. 3 Annotate, Don't Exclude
4. 4 Guidance, Not Financial Advice

1

## How Eligibility Is Verified

Membership eligibility describes who is allowed to join a credit union: you may need to live in certain counties, work for certain employers, or join an association first. We publish this as an annotation on the credit union's *published* criteria - never as personal financial advice. Five layers of verification stand between a page on the internet and a fact we're willing to attach to a ranked offer.

### Verbatim-quote verification

Every stored fact - each employer, county, association, fee, and join path - must be accompanied by a short **verbatim quote from the credit union's own membership page** . A verifier then machine-checks that the quote actually appears in the captured page text, normalized for whitespace and case. Claims whose evidence does not appear are **dropped before they are ever stored** , and each dropped claim lowers the record's verified confidence. A fabricated claim - the nightmare case of a join path that doesn't exist - becomes structurally detectable rather than merely unlikely.

### The identity guard and NCUA charter cross-check

Before any row is written, an **identity guard** confirms we are actually reading the right institution's page. A record is stored only if the evidence page's final host matches the credit union's homepage host - www-stripped, on the same registrable domain - or the credit union's normalized name appears in the page text. This is cross-checked against NCUA charter data so that a stale or wrong URL can't cause us to import a different institution's field of membership. Pages that fail are reported as an `identity_mismatch` to the residue taxonomy, not imported.

### Closed-world county matching

Community charters are matched geographically, but only against a **closed world** : every extracted county must exist in the bundled US Census county list for its claimed state, states must be real, and fees are bounds- checked. Values that fall outside these closed lists are dropped per-claim rather than poisoning the whole record. This is why a hallucinated or misspelled county can never silently become a membership rule.

### The dual-vendor open gate

The single highest-stakes field is `open_to_anyone` - telling a user "anyone can join" must never be wrong. It carries the strictest gate: a verified join-path quote from the page *and* independent confirmation by a **second model from a different vendor** reading the same page text. A deterministic backstop additionally denies the claim when the join path names a geographic precondition, because both vendors can share the same "anyone" blind spot. If the two disagree, the claim doesn't publish and confidence is capped.

### The unknown-reason taxonomy: annotate uncertainty, never guess

When a membership page can't be found or confidently parsed, the status is `unknown` - never an inferred verdict. Each unknown is annotated with a reason in a dedicated taxonomy (for example `membership_page_missing` or `eligibility_ambiguous` ) and routed for follow-up. We treat "we don't know yet" as a first-class, honestly labeled answer rather than a gap to paper over with a guess.

2

## Our Accuracy Record

These are real, verified numbers as of **July 11, 2026** . We state them honestly, including what is still early.

≥99%

Identity promotion bar

≥98%

County promotion bar

1,525

Consecutive verified county claims

3×

Consecutive 100% audit samples

### What the promotion gate measures

Eligibility data is only promoted out of beta when it clears explicit accuracy bars on audited samples: **identity at least 99%** and **county matching at least 98%** . We ran the gate on repeated audit samples and cleared 100% on **three consecutive samples** . Across audit attempts 2 and 3 the pipeline produced **1,525 consecutive verified county claims** with no miss.

Gate attempt 3 result

Identity: 100 / 100. County: 673 / 673 claims. Status: PASSED. Even with this pass, the `eligible_only` preference remains in beta by choice: it annotates rather than filters until the accuracy record is long-standing, not merely fresh - and we'll keep publishing the record as the sample base grows.

The bars are deliberately high because the cost of the two error types is asymmetric. Wrongly hiding a credit union a user could actually join is worse than showing one they can't, so we gate hard on the claims that could remove an option from someone.

3

## Annotate, Don't Exclude

Our core serving principle is simple: **never assert ineligibility below high confidence** . Eligibility annotates and tie-breaks rankings - it does not silently exclude a credit union from results.

- **Unknown behaves like today.** When we can't verify criteria, the offer still appears; it's simply labeled `unknown` . Nothing is hidden on the basis of missing data.
- **Filtering is opt-in and gated.** The `eligible_only` preference only ever drops high-confidence geo-mismatch offers, and only when the caller asks for it - because a false exclusion is the worst error we can make.
- **Eligible-first is a tie-break, not a gate.** Eligible and open offers rank ahead of geo-mismatch offers at equal cost, but a lower-cost offer a user can join still wins.

For the response fields, endpoints, and the batch check that expose these verdicts, see the [Membership Eligibility API documentation](https://rateapi.dev/api/eligibility) .

4

## Guidance, Not Financial Advice

Everything on this page is about **published rates plus a membership annotation** - it is not personal financial advice. Eligibility data is presented as guidance derived from public charter data and each credit union's own published membership criteria.

Every record links the credit union's own membership page as its evidence source so you can verify the criteria at the point of truth, and the **final membership determination is always made by the institution** . We tell you what a credit union publishes and how confident we are that we read it correctly; whether an individual qualifies - and whether a given product fits their situation - is a decision for the member and the institution.

For how we collect and verify the underlying rate data, see the [RateAPI Data Methodology](https://rateapi.dev/methodology) .

## See the Eligibility Verdicts in the API

Every ranked offer can carry an evidence-backed eligibility verdict, with the full field-of-membership record and a batch check behind dedicated endpoints. Free tier available. Zero affiliate bias.

[Explore the Eligibility API](https://rateapi.dev/api/eligibility) [Read the Data Methodology](https://rateapi.dev/methodology)

RateAPI

RateAPI Routes turns confirmed customer facts into source-backed shortlists of published products from 3,700+ tracked US credit unions. Every promoted route keeps its membership and price evidence.

[Get API key →](https://rateapi.dev/api-key) [Sign in](https://app.rateapi.dev)

### Build

- [RateAPI Routes →](https://rateapi.dev/routes)
- [Product Matching API](https://rateapi.dev/financial-product-eligibility-api)
- [Membership Eligibility API](https://rateapi.dev/api/eligibility)
- [Rate Query API](https://rateapi.dev/rates-api)
- [Decision API](https://rateapi.dev/api/reference)
- [Batch Decisions API](https://rateapi.dev/api/batch-decisions)

### Deliver

- [Developer Portal →](https://rateapi.dev/developers)
- [Create a free API key](https://rateapi.dev/api-key)
- [REST API docs](https://api.rateapi.dev/)
- [OpenAPI spec](https://api.rateapi.dev/openapi.json)
- [MCP Server](https://rateapi.dev/mcp)
- [Widget builder](https://rateapi.dev/widget-builder)
- [RateAPI Routes widget](https://rateapi.dev/widget-docs/routes)
- [Market Rates widget](https://rateapi.dev/widget-docs/rates)
- [Webhooks](https://api.rateapi.dev/webhooks)
- [Versioning & deprecation](https://rateapi.dev/deprecation-policy)
- [GitHub](https://github.com/rate-api)

### Solutions

- [Personal finance apps](https://rateapi.dev/use-cases/personal-finance-apps)
- [AI purchase advisors](https://rateapi.dev/use-cases/ai-purchasing-tools)
- [AI agents](https://rateapi.dev/use-cases/ai-agents)
- [Car buying platforms](https://rateapi.dev/use-cases/car-buying-platforms)
- [Credit unions](https://rateapi.dev/for-credit-unions)
- [Loan officers](https://rateapi.dev/use-cases/loan-officers)
- [Rate data for ALM](https://rateapi.dev/alm-rate-data)

### Trust

- [Data coverage](https://rateapi.dev/data-coverage)
- [Rate methodology](https://rateapi.dev/methodology)
- [Eligibility methodology](https://rateapi.dev/eligibility-methodology)
- [Transparency](https://rateapi.dev/transparency)
- [Independence](https://rateapi.dev/independence)
- [Corrections](https://rateapi.dev/corrections)
- [Pricing](https://rateapi.dev/pricing)
- [About](https://rateapi.dev/about)
- [Contact](https://rateapi.dev/contact)
- Talk to a human

### Inspect the data behind the API

Public data explorer

- [Current mortgage rates](https://rateapi.dev/current-mortgage-rates)
- [Current auto rates](https://rateapi.dev/current-auto-loan-rates)
- [Current CD rates](https://rateapi.dev/current-cd-rates)
- [Current HELOC rates](https://rateapi.dev/current-heloc-rates)
- [Current personal loan rates](https://rateapi.dev/current-personal-loan-rates)
- [Mortgage rates](https://rateapi.dev/mortgage-rates)
- [Refinance rates](https://rateapi.dev/refinance-rates)
- [Auto loan rates](https://rateapi.dev/auto-loan-rates)
- [RV loan rates](https://rateapi.dev/rv-loan-rates)
- [Boat rates](https://rateapi.dev/boat-loan-rates)
- [Motorcycle rates](https://rateapi.dev/motorcycle-loan-rates)
- [HELOC rates](https://rateapi.dev/heloc-rates)
- [Personal loan rates](https://rateapi.dev/personal-loan-rates)
- [Credit card rates](https://rateapi.dev/credit-card-rates)
- [Deposit rates](https://rateapi.dev/deposit-rates)
- [CD rates](https://rateapi.dev/cd-rates)
- [Savings rates](https://rateapi.dev/savings-rates)
- [Money market rates](https://rateapi.dev/money-market-rates)
- [Credit union directory](https://rateapi.dev/credit-unions)
- [Who can join](https://rateapi.dev/who-can-join)
- [Mortgage benchmark](https://rateapi.dev/mortgage-rate-benchmark)
- [Auto benchmark](https://rateapi.dev/auto-loan-rate-benchmark)
- [HELOC benchmark](https://rateapi.dev/heloc-rate-benchmark)
- [Personal loan benchmark](https://rateapi.dev/personal-loan-rate-benchmark)
- [CD benchmark](https://rateapi.dev/cd-rate-benchmark)
- [Credit union rate index](https://rateapi.dev/credit-union-rate-index)
- [Deposit beta](https://rateapi.dev/deposit-beta)
- [Credit unions vs banks: mortgage](https://rateapi.dev/compare/credit-union-vs-bank-rates)
- [Credit unions vs banks: auto](https://rateapi.dev/compare/credit-union-vs-bank-auto-loan-rates)
- [Credit unions vs banks: HELOC](https://rateapi.dev/compare/credit-union-vs-bank-heloc-rates)
- [Credit unions vs banks: CD](https://rateapi.dev/compare/credit-union-vs-bank-cd-rates)
- [Mortgage rate API comparison](https://rateapi.dev/compare/mortgage-rate-apis)
- [Rate datasets](https://rateapi.dev/credit-union-rate-dataset)

© 2026 RateAPI · US credit unions only · Published pricing is not approval.

[Privacy](https://rateapi.dev/privacy) [Terms](https://rateapi.dev/terms) [llms.txt](https://rateapi.dev/llms.txt)

---

Source: https://rateapi.dev/eligibility-methodology
Rate data API: https://api.rateapi.dev · OpenAPI: https://api.rateapi.dev/openapi.json · MCP: https://mcp.rateapi.dev/mcp
