Unified BMF Quality Report

Generated: 2026-09-15 00:57:45 Quality gate: PASSED Total rows (unique EINs): 3,698,197 Source files stacked: 121 Vintages contributing rows: 117

Summary

The Unified BMF is a single-row-per-EIN consolidation drawn from the most-recent vintage in which each EIN appears across both the current monthly BMF pipeline and the legacy 501CX-NONPROFIT-PX pipeline. See chapter 11 for the full design.

Metric Value
Total rows 3,698,197
Distinct EINs 3,698,197
Rows == distinct EINs (uniqueness gate) ✅ yes
Input CSV files 121
Vintages with at least one surviving row 117

Rows by source pipeline

Source Rows Percent
current 2,219,359 60.01
legacy 1,478,838 39.99

First / last year coverage

Metric Year
Earliest first_year_in_bmf 1989
Latest first_year_in_bmf 2026
Earliest last_year_in_bmf 1989
Latest last_year_in_bmf 2026

Vintages observed per EIN

How many distinct BMF vintages did each EIN appear in?

Metric Value
Minimum 1
Average 51.5
Maximum 217
EINs that appear in only one vintage 251,993

Vintage histogram

Number of surviving Unified BMF rows contributed by each vintage. A vintage with many rows contributed many EINs whose latest sighting was in that month.

Vintage (YYYY-MM) Source Rows contributed
2026-07 current 1,974,830
1989-06 legacy 193,977
2010-11 legacy 135,449
2016-08 legacy 97,725
2020-04 legacy 94,013
2022-01 legacy 54,622
2019-08 legacy 42,662
1996-06 legacy 42,534
2011-06 legacy 42,405
2024-08 current 39,453
2025-08 current 36,835
1998-09 legacy 34,539
2000-05 legacy 32,316
2023-08 current 28,233
2011-12 legacy 26,568
2022-08 legacy 25,035
1995-08 legacy 23,316
1997-10 legacy 22,987
2007-09 legacy 22,461
2014-06 legacy 20,202
2007-04 legacy 20,010
2012-12 legacy 19,596
2016-04 legacy 19,364
2013-07 legacy 18,723
2004-12 legacy 18,217
2003-11 legacy 18,166
2003-01 legacy 18,140
2004-04 legacy 16,696
2013-02 legacy 16,376
2018-12 legacy 16,284
1999-12 legacy 15,076
2015-07 legacy 13,418
2006-05 legacy 12,673
2023-07 current 12,449
2026-01 current 11,824
2010-08 legacy 11,729
2008-01 legacy 10,789
2002-07 legacy 10,686
2008-10 legacy 10,668
2009-10 legacy 10,530
2001-07 legacy 9,979
2026-03 current 9,423
2024-03 current 9,018
2010-07 legacy 8,988
2006-01 legacy 8,963
2010-05 legacy 8,946
2012-08 legacy 8,890
2008-04 legacy 8,790
2007-01 legacy 8,768
2002-01 legacy 8,568
2024-04 current 8,401
2024-02 current 8,257
2015-02 legacy 8,235
2009-04 legacy 8,046
2012-06 legacy 7,982
2003-07 legacy 7,964
2025-03 current 7,951
2014-02 legacy 7,685
2014-12 legacy 7,537
2023-12 current 6,963
2010-04 legacy 6,932
2015-09 legacy 6,894
2009-01 legacy 6,613
2008-06 legacy 6,585
2011-09 legacy 6,498
2012-04 legacy 6,300
2025-02 current 6,282
2015-05 legacy 6,221
2014-04 legacy 6,136
2015-12 legacy 6,054
2006-11 legacy 6,009
2009-07 legacy 5,812
2011-08 legacy 5,750
2005-07 legacy 5,634
2024-12 current 5,518
2005-11 legacy 5,423
2013-12 legacy 5,395
2016-03 legacy 5,017
2014-09 legacy 4,651
2011-07 legacy 4,606
2023-11 current 4,549
2013-05 legacy 4,528
2008-12 legacy 4,224
2026-06 current 4,127
2025-06 current 4,078
2012-07 legacy 4,069
2024-09 current 3,777
2013-09 legacy 3,741
2013-10 legacy 3,740
2012-02 legacy 3,626
2025-12 current 3,584
2010-01 legacy 3,578
2015-11 legacy 3,539
2024-06 current 3,522
2025-11 current 3,442
2013-06 legacy 3,408
2012-10 legacy 3,377
2025-04 current 3,312
2015-04 legacy 3,259
2025-07 current 3,120
2013-08 legacy 3,109
2024-10 current 3,109
2025-05 current 3,079
2013-03 legacy 3,077
2011-10 legacy 3,052
2011-11 legacy 2,964
2012-03 legacy 2,872
2012-11 legacy 2,766
2023-10 current 2,668
2026-05 current 2,667
2013-04 legacy 2,433
2023-09 current 2,432
2024-11 current 2,431
2014-11 legacy 2,058
2024-07 current 2,053
2025-09 current 1,972
2016-02 legacy 1,595

Column completeness

Top 30 most-complete columns (highest non-null fraction):

Column Non-null % Current rows % Legacy rows %
ein_raw 100.00 100.00 100.00
ein 100.00 100.00 100.00
org_name_raw 100.00 100.00 100.00
org_name_join 100.00 100.00 100.00
org_name_display 100.00 100.00 100.00
org_addr_zip_raw 100.00 100.00 100.00
org_addr_state_invalid 100.00 100.00 100.00
ntee_code_clean 100.00 100.00 100.00
ntee_common_code 100.00 100.00 100.00
ntee_common_code_definition 100.00 100.00 100.00
ntee_code_major_group 100.00 100.00 100.00
naics_code 100.00 100.00 100.00
ntee_code_definition 100.00 100.00 100.00
nteev2_code 100.00 100.00 100.00
nteev2_subsector 100.00 100.00 100.00
nteev2_org_type 100.00 100.00 100.00
nteev2 100.00 100.00 100.00
nteev2_subsector_definition 100.00 100.00 100.00
bmf_source 100.00 100.00 100.00
bmf_vintages_observed 100.00 100.00 100.00
ein_prefixed 100.00 100.00 100.00
EIN2 100.00 100.00 100.00
first_vintage_ym 100.00 100.00 100.00
last_vintage_ym 100.00 100.00 100.00
bmf_vintage_ym 100.00 100.00 100.00
first_year_in_bmf 100.00 100.00 100.00
last_year_in_bmf 100.00 100.00 100.00
org_addr_city_raw 99.92 100.00 99.81
org_addr_city 99.92 100.00 99.81
org_addr_state_raw 99.88 99.93 99.80

Bottom 30 least-complete columns:

Column Non-null % Current rows % Legacy rows %
org_parent_name 3.06 2.68 3.64
activity_code_definitions 20.81 34.68 0.00
activity_code_categories 20.81 34.68 0.00
dba_name_raw 24.97 21.38 30.36
dba_name 24.97 21.38 30.36
org_legal_suffix 36.40 36.93 35.60
in_care_of_name_clean 38.61 64.34 0.00
in_care_of_name_raw 38.69 64.47 0.00
revenue_amount 52.74 70.32 26.36
all_classifications_string 59.99 99.96 0.00
in_care_of_name_provided 60.01 100.00 0.00
org_addr_zip4 60.01 100.00 0.00
classification_code 60.01 100.00 0.00
affiliation_code 60.01 100.00 0.00
affiliation_code_definition 60.01 100.00 0.00
deductibility_code 60.01 100.00 0.00
deductibility_code_definition 60.01 100.00 0.00
organization_code 60.01 100.00 0.00
organization_code_definition 60.01 100.00 0.00
status_code 60.01 100.00 0.00
status_code_definition 60.01 100.00 0.00
activity_code 60.01 100.00 0.00
asset_code 60.01 100.00 0.00
asset_code_definition 60.01 100.00 0.00
income_code 60.01 100.00 0.00
income_code_definition 60.01 100.00 0.00
pf_filing_requirement_code 60.01 100.00 0.00
pf_filing_requirement_code_definition 60.01 100.00 0.00
tax_period_ym_str 61.74 77.55 38.03
filing_requirement_code_definition 68.49 100.00 21.19

Columns populated by only one source

Columns that are well populated in one pipeline’s rows and empty in the other’s. These are expected where a field exists in only one source (for example fields the legacy extracts never carried), and worth a look where it does not.

Column Non-null % Current rows % Legacy rows %
in_care_of_name_provided 60.01 100.00 0
org_addr_zip4 60.01 100.00 0
classification_code 60.01 100.00 0
affiliation_code 60.01 100.00 0
affiliation_code_definition 60.01 100.00 0
deductibility_code 60.01 100.00 0
deductibility_code_definition 60.01 100.00 0
organization_code 60.01 100.00 0
organization_code_definition 60.01 100.00 0
status_code 60.01 100.00 0
status_code_definition 60.01 100.00 0
activity_code 60.01 100.00 0
asset_code 60.01 100.00 0
asset_code_definition 60.01 100.00 0
income_code 60.01 100.00 0
income_code_definition 60.01 100.00 0
pf_filing_requirement_code 60.01 100.00 0
pf_filing_requirement_code_definition 60.01 100.00 0
all_classifications_string 59.99 99.96 0
in_care_of_name_raw 38.69 64.47 0
in_care_of_name_clean 38.61 64.34 0

Notes

  • All output columns are VARCHAR. The master build forces every column to string type so DuckDB’s UNION ALL BY NAME can combine the legacy slim per-vintage schema with the current full schema without per-column type-mismatch errors. Cast in your downstream tool: as.numeric(asset_amount) in R, pd.to_numeric(df['asset_amount'], errors='coerce') in pandas, etc. Lat/lon in the geocoded master output are explicitly cast to DOUBLE.
  • Legacy-only EINs have sparse columns. EINs whose latest appearance is in a pre-2014 legacy vintage carry only the legacy slim schema; current-pipeline-only columns (e.g. NTEEv2 fields, modern address quality flags) are NULL. The bmf_source column flags the source of each surviving row.