Geo-Enrichment · Chapter · Region · Division · County

A Working Explanation

Every record has to know where it is.

A shelter. A fire alarm. A volunteer. A trailer. A building. A contribution. If the record cannot say which Chapter, Region, Division and County it belongs to, it cannot be counted, compared, funded, mapped or reported. Attaching that geography to every row is what we call enrichment.

This page explains why names cannot do that job, how codes can, and it lets you do the enrichment yourself, right here, against the live national geography.

01

Everything Happens Somewhere

Red Cross work is not abstract. It happens at an address, in a county, inside a chapter's territory, inside a region, inside a division. That is true of every object we track:

The RecordThe Question It Has to AnswerImpossible Without Geography
ShelterWhose shelter is it, and who reports the population count tonight?Chapter · Region · Division roll-up
Home fire responseHow many responses did this chapter run this year?Chapter performance, per-capita rate
VolunteerWhich chapter's roster, which region's capacity?Coverage gaps, deployment planning
Trailer or vehicleWhich region owns it, which division can borrow it?Asset placement, mutual aid
Building or facilityWhich chapter occupies it, at what cost per person served?Real estate and closure decisions
ContributionWhich chapter's donors, which region's campaign?Fundraising attribution, stewardship

A row with a street address and nothing else answers none of those questions. A row carrying County, FIPS, Chapter, ECODE, Region, RCODE, Division, DCODE answers all of them — and it answers them the same way in every system, every report and every map.

The rule: enrich once, at the row, at the moment the record is created. Every roll-up above it then comes free. Enriching later, per report, per analyst, per spreadsheet, is how two people end up with two different answers to the same question.

02

The Four Keys

Four pieces of geography, each with a stable code. Three are ours; one is the government's.

6
Divisions DCODE
48
Regions RCODE
222
Chapters ECODE
3,153
Counties FIPS
33,120
ZIP Areas ZCTA
340,752,387
People Covered

Counts are read from the canonical national geography at build time, not typed by hand. The chapter directory carries 277 ECODEs in total; the 222 above are the ones holding county territory in the United States. The rest are National Headquarters, overseas and service-area organizations.

They nest, and the nesting is the whole point

Because each level contains the one below it, a number attached at the county level adds up to the chapter, the chapter adds up to the region, the region adds up to the division, and the division adds up to the country. One enrichment, four reporting levels. That is section 07.

03

The Naming Problem

Here is the failure that started all of this. Ask six people to type the name of one chapter and you get six different strings. Each of them is a correct way to refer to the chapter in conversation. None of them is a key.

Live · Match the same chapter six ways

Real spellings of one real chapter, matched against the official directory. The left column joins on the name. The right column joins on the code.

What Somebody TypedJoin by NameJoin by ECODE
Loading the official directory…

Name matching fails on things nobody notices: an ampersand instead of "and", "ARC" instead of "American Red Cross", a dropped "serving", a curly apostrophe pasted out of Word, a state suffix somebody added to disambiguate, one transposed letter. Every one of those is a silent miss — the row does not error, it just quietly does not join, and the chapter's number comes out short. And the two that did match above only survived because this demo normalizes first; a plain VLOOKUP would have dropped them too.

It gets worse over time. Chapters merge and are renamed. Regions are renamed. Divisions are renamed. A name is a label for humans in a given year. It is not an identifier.

Names are for people. Codes are for joins. Speak to humans in names. Match, group, roll up and audit on codes, always.

04

How the Government Solved It

The federal government hit this problem long before we did — there are 31 places named Washington and dozens of Springfields — and solved it with FIPS codes: a fixed numeric identifier for every state and every county.

Anatomy of a county FIPS code

Two digits of state plus three digits of county equals one five-character key that is unique across the whole country and never depends on how anybody spells "Autauga".

Two things this buys you

  • Uniqueness. There are two Montgomery Counties on this list and they never collide, because one is 01101 and one is 24031.
  • Joinability. Census population, FEMA disaster declarations, CDC social vulnerability, ALICE household data and our own operational records all carry FIPS. They join to each other on contact, with no name cleanup at all.

Zero-pad or lose. A FIPS code is a five-character string, not a number. Open a file in Excel and 01001 becomes 1001, which is nothing at all. Every FIPS on this page is stored zero-padded, and the build refuses to run if any one of them is not.

Even codes have vintages

Codes are stable, not frozen. In 2022 Connecticut retired its eight counties and replaced them with nine planning regions, with new codes 09110 through 09190. Anything still keyed to the old 0900109015 silently returns nothing for Connecticut. The fix is not to guess a mapping — it is to record which vintage each source is on and convert deliberately. See section 09.

05

How the Red Cross Solved It

Same problem, same answer. Every chapter, region and division carries a code, and the code is the identifier of record.

LevelCodeShapeExampleIn the Directory
ChapterECODE5 characters — 2-character state-sequence prefix + 3-digit chapter sequence07038277
RegionRCODE5 characters — 2-digit prefix, literal R, 2-digit sequence07R0854
DivisionDCODE3 characters — literal D + 2 digitsD279
CountyFIPS5 characters — federal, not ours091103,153

Directory totals include National Headquarters, overseas and service-area organizations, which is why they exceed the count of chapters, regions and divisions holding U.S. county territory.

A code is an identifier, not a formula

The two-character prefix is a useful hint — 01 is Alabama, 05 is California, 43 is Texas — but it is a hint, not a rule you may compute with. Most chapters share a prefix with their region. Some do not.

A real example · Portland, Maine

The chapter's prefix is 19 (Maine). Its region's prefix is 29 (New Hampshire), because the region spans three states and is administered from one of the others. Anyone who derived the region by slicing the first two characters of the ECODE would put Southern Maine in the wrong region, in every report, forever.

Never parse a code. Always join it. The relationship between a chapter and its region lives in the official directory, not in the digits. Look it up.

06

Enrich It — Live

This is enrichment. Give it the smallest thing you have — a ZIP code, a county name, a FIPS code — and it returns the full chain of keys that the record should have been carrying all along.

Now do it to a whole list

Same operation, many rows. Paste ZIP codes, FIPS codes or County, ST lines — one per line, mixed together is fine — and every row comes back enriched.

Nothing is dropped quietly. Rows that cannot be resolved are listed explicitly with the reason. A row you cannot enrich is a row somebody has to look at — it is never a row you delete and never a row you count as zero.

07

Now It Rolls Up

This is the payoff, and it is worth being blunt about it: you did not do anything extra to get this. The list you just enriched now reports itself at every level of the organization, because every row is carrying the keys.

Roll-up of the list in section 06

Enrich a list in section 06 and the chapter, region and division roll-ups appear here.

Change nothing about the source data and the same rows answer a chapter question, a region question and a division question. Add a measure — responses, dollars, cases, people served — and the roll-up carries it up the hierarchy without anybody re-deriving anything.

Add up what you have, and say what you do not. Two Alaska county-equivalents (02063 Chugach and 02066 Copper River) carry no 2023 population measure. They are shown as no measure and left out of totals with a note. They are never quietly counted as zero — a zero is a number, and it is the wrong one.

08

The Tools

The lookup on this page is the demonstration version. The working version is a command-line enricher that takes a spreadsheet — any spreadsheet, of any size, with whatever columns it happens to have — and gives it back with nine geography columns appended and every original row preserved:

Chapter · ECODE · Region · RCODE · Division · DCODE · County · FIPS · State

It does not need a ZIP code. It needs something.

The matcher works down a chain and stops at the first method that resolves, so a file with partial or messy location data still comes out enriched:

OrderMethodWhat It UsesConfidence
1Exact ZIP matchZIP or ZCTA against the national crosswalkhigh
2Point in polygonLatitude and longitude against county boundarieshigh
3Connecticut planning regionModern county-equivalent rule, applied deliberatelyhigh
4U.S. territory rulePuerto Rico, Virgin Islands, Guam, American Samoa, Northern Marianashigh
5County and stateNormalized name match, only when unambiguousmedium
6Nearest ZIP prefixSame-prefix neighbor, last resortreview

Every row comes back with the method and confidence that produced it. That is the audit trail: six months later you can still see which rows were matched cleanly and which ones somebody should have looked at.

Where the geography comes from

One canonical national geography feeds all of it — the county spine, the ZIP crosswalk, the official chapter directory — and every tool, map and report reads from that one source instead of keeping a private copy that drifts. It is published at data.jbf.com.

The data behind this page was generated from that source, and the generator refuses to produce output unless the population totals for Connecticut and the Northeast Division match their known values exactly. A build that would ship a wrong number fails instead.

What you can ask for

  • Enrich this file. Any CSV or Excel file with ZIPs, counties, addresses or coordinates.
  • Roll this up. Any enriched file, summarized to chapter, region or division.
  • Map this. Once it is enriched, it maps — chapters, regions, divisions or counties.
  • Check this. Take a file somebody else enriched and find the rows that did not match.

09

Where It Goes Wrong

Five failures account for nearly every bad geography number. All five are quiet — nothing crashes, the report just comes out wrong.

1. Names used as join keys

Section 03. The rows do not error, they simply do not match, and a chapter's total comes out short by however many rows were spelled differently.

2. Zero-padding stripped

Excel reads 01001 as the number 1001 and writes it back that way. Every FIPS in Alabama, Alaska, Arizona, Arkansas, California, Colorado and Connecticut is destroyed by one round trip through a spreadsheet. Store FIPS as text.

3. Connecticut — and it fails twice

The first failure is assignment: a source still keyed to the old counties (0900109015) does not match a spine keyed to planning regions (0911009190).

The second failure is worse, because it does not look like a failure. The assignment succeeds, but the demographic measures attached to the old counties are blank for the new codes — so the population comes back zero and nothing complains. The canary is American Red Cross of Connecticut (07038): it is a 3,624,508-person chapter. If you ever see it report zero, or see the Northeast Division come in around 54 million instead of 57,817,263, this is the bug.

4. Counties served by more than one chapter

7 counties are shared or split between chapters. Los Angeles County alone is served by five. For those counties the FIPS code cannot resolve the chapter by itself — you need the ZIP code or the coordinates. The honest behavior is to return all the candidates and say so, which is what the lookup in section 06 does.

5. Missing measures filled with zero

When a county has no population figure, the tempting fix is to write a zero so the arithmetic runs. That converts a known unknown into a confident wrong answer, and it propagates into every rate, weight and per-capita calculation downstream. Leave it blank, exclude it from the denominator, and say so in the footnote.

The common thread: every one of these fails silently. That is exactly why the checks have to be automatic — a known total that must match, a count that must not change, a row that must not disappear — rather than something a person remembers to look at.

10

Try It With Your Own Data

Drop in a CSV with a ZIP, FIPS or county column and get it back with the geography attached. Pick the column, download the result.

This runs entirely in your browser. The file is never uploaded anywhere and never leaves this computer.

Or just ask

Give me a ZIP code or a county and I will give you the whole hierarchy. Give me a file and I will give it back enriched, with the unmatched rows listed so you can see exactly what needs a human. The point of all of this is that nobody should have to look up a chapter by hand, and nobody should have to guess which spelling wins.