Data methodology

From public source row to searchable PPP record.

PPP Loan Map preserves the imported record, applies documented display normalization, and separates complete-population figures from bounded record samples. This page explains each step and the limits that remain.

Source scope

The underlying loan records come from the U.S. Small Business Administration's public Paycheck Protection Program FOIA releases. Those releases cover public loan-level records above and at or below $150,000 and can include approval, forgiveness, borrower, lender, business, demographic, jobs-reported, and use-of-proceeds fields. Availability varies from record to record.

Coordinates and Census geography come from Geocodio's modified PPP dataset. Geocodio geocoded the SBA address data, added 2010 Census boundaries, and publishes its modified files under CC BY 4.0. PPP Loan Map is an independent publisher of those public records; it is not an SBA, Treasury, lender, or Geocodio service.

The dataset describes approved PPP loan records made public by the SBA. It is not a list of rejected applications, a current business registry, or a complete history of every later servicing, review, enforcement, or court event. For an authoritative current record, consult the SBA and the responsible lender.

Import and publication pipeline

1. Source-preserving layer

Keep the imported row intact

The raw table mirrors the source fields as nullable text. Amounts, dates, coordinates, borrower fields, lender fields, demographics, proceeds, and Census fields are retained without destructive cleanup so a displayed value can be traced back to the imported row.

2. App-facing layer

Normalize fields used at scale

A separate cleaned table parses the fields used by maps, search, filters, and directories. Values that do not pass a field-specific parser become missing values instead of being guessed or forcing the import to fail.

3. Publication layer

Build bounded search views

Materialized views support state and business-type rankings, ZIP suggestions, and geographically distributed map highlights. Full record details are cleaned from the retained source row when a borrower page is requested.

Source files are loaded through a temporary staging table. Rows that cannot be parsed as input records, or that do not contain a loan number, are skipped. The SBA loan number is the database key: reloading a row with a loan number already present does not create a second copy. This makes a repeated import safe, but it also means an updated source row requires a deliberate replacement or rebuild rather than silently overwriting the retained row.

A repeated borrower name or address is not automatically treated as a duplicate. One borrower may have more than one valid loan or draw, and names and addresses are not reliable identity keys. Separate source loan numbers therefore remain separate records.

Cleaning and normalization rules

Text
Trim surrounding whitespace, collapse repeated whitespace, decode a small set of common HTML entities, and preserve a blank as missing. Borrower and lender names are not substantively rewritten.
Cities and states
Display cities in title case and state values as the first two uppercase characters after cleaning. These are formatting rules, not address verification.
ZIP codes
Use the first five digits only when the cleaned value begins with five digits. ZIP+4 suffixes are not used for ZIP grouping. Values that fail that rule remain unavailable for ZIP search and ZIP-wide statistics.
Business type
Consolidate a small documented set of spelling variants for LLCs, Subchapter S corporations, nonprofits, sole proprietors, independent contractors, and self-employed individuals. Other nonblank labels are retained.
Amounts, jobs, and dates
Remove basic currency punctuation before parsing numeric fields; accept jobs reported only when it can be represented as an integer; and accept approval dates in the supported U.S. slash or ISO date formats. Invalid values become missing.
Coordinates
Parse valid numeric latitude and longitude values. Invalid or blank coordinates remain missing and cannot be placed on the map. The pipeline does not invent a coordinate from a ZIP or city.

Missing source fields remain missing and generally display as “N/A,” “Unknown,” or are omitted. The site does not infer race, ethnicity, gender, veteran status, business identity, or other demographic values from a name, address, or nearby record.

Complete-population figures versus record samples

ZIP-wide figures

Loan count, total approval, total forgiveness, average approval, largest and smallest approval, and the count with no forgiveness reported are queried across the complete indexed population for the normalized ZIP.

Bounded record samples

State, business-type, and ZIP record lists are bounded for performance and ranked primarily by current approval amount. State and business-type views retain up to 500 top records; server-rendered directory pages normally request up to 100 and may display a shorter table.

Comparisons calculated from a bounded list—such as a sample median, business type mix, city mix, ZIP mix, or median PPP per reported job—describe only the records fetched for that page. They should not be generalized to every loan in a state or ZIP unless the label specifically says the complete indexed population was used.

The opening map is also a display sample. Its highlight view chooses a large approval record within geographic grid cells, and viewport queries cap and distribute results across the visible area. Map pins are therefore not a complete count of all loans currently inside the screen. Search or a ZIP page is the better route when completeness for a named place matters.

Calculated fields

Approval summaries

Sample totals, means, and medians use positive current-approval amounts. A missing or non-numeric amount is excluded from those amount calculations rather than treated as a verified zero.

Forgiveness / approval

The comparison is reported forgiveness dollars divided by current approval dollars in the records being summarized. Missing forgiveness is treated as no forgiveness reported for display calculations; it is not a finding that forgiveness was denied.

Forgiveness status

A record is labeled fully forgiven when reported forgiveness is at least 99% of the current approval amount, allowing for rounding. A positive amount below that threshold is partial; zero or missing reported forgiveness is labeled not forgiven. If approval is missing or non-positive, the status is unknown.

PPP per reported job

Current approval amount is divided by jobs reported only when both values are positive. “Jobs reported” is the source field, not an independently verified headcount, and the result is not a measure of program eligibility or cost per job saved.

Dollar amounts are nominal values as reported in the source. They are not inflation-adjusted. Automatically generated rankings and ratios are descriptive aids, not audit conclusions, estimates of economic impact, or evidence that a borrower met or violated program rules.

Geocoding and map limitations

A map pin represents Geocodio's match for source address data, not a site visit or a statement that the borrower currently operates there. A source borrower address may have served as a mailing, home, or business address at the time of the record. Match precision depends on the completeness and quality of that address and can vary from a precise address match to a broader geographic estimate.

Multiple loans can share one coordinate, so a single visible point can contain more than one record. Conversely, a record with blank or invalid coordinates can still appear in name, state, ZIP, or borrower views even though it cannot appear as a pin. Census and statistical-area labels reflect the enrichment attached to the geocoded release and should not be read as current boundary assignments without checking an authoritative Census source.

PPP Loan Map uses SBA public PPP records and Geocodio's geocoded PPP dataset for latitude, longitude, and Census geography. Map pins are geocoded estimates, not verified current business locations. Records are public administrative data, not legal findings.

Quality checks, corrections, and editorial review

After a data release is loaded, the operator rebuilds the cleaned table and publication views together. Operational checks cover raw and cleaned row counts, coordinate coverage, state/ZIP/search result availability, materialized view counts, representative loan-detail lookups, and map query behavior. Explanatory pages and material methodology changes receive manual editorial review before publication.

These checks can catch import, parsing, display, and query problems; they do not independently verify millions of borrower assertions or lender actions. Public loan values remain attributable to the source record. When a supported report identifies a site transformation or display error, the operator can correct the site and document a material methodology change. A disputed official source value generally must be corrected by the SBA or responsible agency before the site can republish it as corrected.

Refresh and version discipline

PPP Loan Map is a published snapshot, not a live connection to an SBA case system. A data refresh is a deliberate release: retain the source files, load the source-preserving layer, rebuild the normalized and publication layers, run the quality checks, and then publish the resulting version together. Search, statistics, and directory views do not change until that rebuild is completed.

The site does not currently claim an exact source snapshot date on each loan page. Until one is displayed, do not assume a record reflects a recent SBA or lender update. The official SBA dataset and lender records remain the place to confirm current status.

Methodology change log

Methodology expanded and reviewed

Added source scope, import and deduplication behavior, field-normalization rules, sample-versus-population distinctions, calculated-field definitions, geocoding limits, quality checks, correction handling, and refresh discipline.

Last editorial review: August 12, 2026. Material future changes to sourcing, cleaning, formulas, or publication logic will be summarized here.

Official source links