Home/Methodology

How we build data.

The practices behind every file we ship. Sources are primary, validation happens before a refresh is trusted, accuracy is measured on your records rather than claimed on ours, and keys stay stable so the joins hold. This page describes the practices. It does not describe retrieval methods for any specific source.

Primary sources first

Property data comes from county assessors and recorders, directly or through licensed national compilers that aggregate them. Permit data comes from city and county permit offices and open-data portals. License data comes from the state and provincial regulators that issue the licenses. Listing and rental data comes from public listing surfaces. Professional data comes from public professional profiles and company web surfaces. Consumer, carrier and vehicle data comes from licensed compilers under terms that permit the uses we sell. Every dataset page names its source class, and the data dictionary that ships with a file names the source per field.

Validate live before trusting

A refresh is not trusted because it arrived. Before a monthly file ships, a sample of records is checked against the source as it stands that day: does the license still show that status, does the deed still show that price, does the permit still carry that contractor. When the sample disagrees with the source beyond a threshold, the refresh is held and investigated rather than delivered. This catches source format changes, partial loads and silent schema drift, all of which happen.

Measure, then report

We do not publish match rates, precision figures or coverage percentages as marketing numbers. They are measured on each batch and reported with it. For an append, the free match report runs a slice of your own file and states, field by field, what matched. For a list, a labeled sample is checked against the defining criteria and the share that qualifies is stated. For coverage, fill rates are published per state with the denominator named. If a number on this site is not attached to a measurement, it is a scale figure, not a quality claim.

Keep the keys stable

One parcel key across every property file. One person key across consumer and contact files. One company key across the professional graph. Keys survive refreshes, and when a source retires or splits an identifier, a crosswalk is delivered rather than a silent replacement. This is what makes a join written this month still work next year.

Normalize, but preserve the original

Statuses, license types, land use codes and permit types are normalized to a common vocabulary so that filters behave the same across jurisdictions. The source's original value is kept alongside the normalized one in every case, so that an auditor can see what the regulator or the county actually said.

Refresh on a schedule, deliver the delta

Each dataset has a stated cadence chosen to match how fast the source moves: daily for listings and foreclosure filings, weekly for valuations, monthly for rosters and records, quarterly for slow-moving reference data. Deliveries after the first are deltas with the change type flagged, and every row carries the date we first observed it.

Handle personal data deliberately

Person-level fields are licensed for permitted uses and delivered with the flags a compliance team needs: line type, do-not-call and litigator status for phones, deliverability for emails, the scrub date for all of them. Training sets have person-level fields removed, hashed or replaced with synthetic values, and the treatment is documented. Sample rows on this site are synthetic.

Decline what should be declined

Sources whose terms prohibit the use. Briefs that would target people in crisis with deceptive offers. Requests for protected class attributes in credit or underwriting decisions. Requests to re-identify people from data that was shared anonymously. We say no to these, and we say why.

Write it down

Every dataset ships with a data dictionary. Every research panel ships with a methodology note that lists the sources, their publication cadence, our capture cadence and known gaps. When a method changes, the note is versioned and the change is dated in the refresh log.