Profile Schema

Understanding profiles, confidence scores, and data sources

Every profile returned by the WealthAtlas API contains rich biographical, financial, and philanthropic data assembled from multiple public sources. This page explains the key concepts you’ll encounter when working with person data.

How Profiles Are Built

WealthAtlas aggregates data from public records — nonprofit tax filings (IRS 990s), political donation records, corporate filings, news articles, and other web sources. Our identity resolution system matches records across these sources to build a unified profile for each individual.

Because these records come from independent sources that don’t share unique identifiers, WealthAtlas uses statistical matching to link them. This is why certain fields include a probability score.

Person Model Reference

The full profile (APIPerson) contains the following fields:

Identity & Demographics

FieldTypeDescription
idstringWealthAtlas unique identifier
namePersonNameFull name (title, first, middle, last, suffix)
sexstring | nullSex of the person (“Male”, “Female”)
ageinteger | nullAge in years
religionstring | nullReligious affiliation
is_deceasedboolean | nullWhether the person is deceased (null = unknown)
mailing_addressAddress | nullMailing address (street, city, state, zip)
citystring | nullCity of the person
statestring | nullState of the person
primary_photo_urlstring | nullURL to the person’s primary photo
donoratlas_urlstringLink to the person’s profile on WealthAtlas
date_last_updateddateWhen this profile was last refreshed

Biographical

FieldTypeDescription
biostring[]Biographical bullet points about the person
top_issuesDescribedIssueTag[]Philanthropic interest areas with explanations
source_urlsstring[]All public source URLs used to build this profile

Financial

FieldTypeDescription
net_worth_mininteger | nullMinimum estimated net worth in dollars
net_worth_maxinteger | nullMaximum estimated net worth in dollars
net_worth_estimateinteger | nullBest-guess point estimate within the min/max bounds
liquidity_mininteger | nullMinimum estimated liquid assets in dollars
liquidity_maxinteger | nullMaximum estimated liquid assets in dollars
liquidity_explanationstring | nullShort explanation of the liquidity estimate
salarySalary | nullEstimated annual employment compensation, with a per-year series
income_sourcesIncomeSource[]Identified income sources (salary, fund carry, inheritance, …)
assetsAsset[]Identified non-cash assets (equity, real estate, …)
political_statsPoliticalStats | nullPolitical donation statistics and capacity
nonprofit_statsNonprofitStats | nullNonprofit donation statistics and capacity

Affiliations

FieldTypeDescription
educationEducation[]Schools and universities attended
workWork[]Employment history
board_affiliationsBoardAffiliation[]Nonprofit board memberships (with probability scores)
donationsDonation[]Nonprofit donations (with probability scores)
private_foundationsPrivateFoundation[]Private foundation relationships

Probability Scores

Several fields on the profile include a probability value between 0 and 1. This represents WealthAtlas’s confidence that the record belongs to this specific person, not the probability that the event occurred.

For example, a board_affiliation with probability: 0.92 means WealthAtlas is 92% confident that this board membership record belongs to the person shown in the profile — and 8% that it belongs to a different person with a similar name. The record itself is from an authoritative source (typically an IRS 990 filing).

Fields with probability scores

FieldDescription
board_affiliations[].probabilityConfidence that this nonprofit board membership record belongs to this person
donations[].probabilityConfidence that this nonprofit donation record belongs to this person

How to use probability scores

  • ≥ 0.90 — High confidence. Safe to present to end users without qualification.
  • 0.70 – 0.89 — Moderate confidence. Consider noting that the association is likely but not certain.
  • < 0.70 — Lower confidence. The record may belong to a different person with a similar name. Use with caution.

You can filter results by probability in your application to control data quality. For most use cases, a threshold of 0.70 or higher is recommended.

Data Sources

Many sub-models (Education, Work, BoardAffiliation, Donation, PrivateFoundation) include a source_urls array containing URLs where the information was found. These are the original public sources WealthAtlas used to build the record — typically nonprofit websites, government databases, news articles, or corporate filings.

The top-level source_urls field on the profile lists all source URLs aggregated across the entire profile.

Financial Fields

Net Worth

net_worth_min and net_worth_max are the estimated bounds of the person’s net worth in dollars. These are derived from real estate records, political giving patterns, nonprofit giving patterns, and other public financial indicators. They are estimates, not exact figures.

When the underlying model produces one, net_worth_estimate is a best-guess point within those bounds — useful when you need a single number rather than a range. It is null for persons where only the range is available.

Liquidity

liquidity_min and liquidity_max estimate the person’s liquid assets — wealth accessible within roughly twelve months, as opposed to wealth locked up in homes, private companies, or retirement accounts. liquidity_explanation, when present, is a short sentence describing how the band was derived. All three are null when no liquidity estimate exists.

Search can be slightly broader here than the profile: the search index always carries the best available liquidity estimate, so a person may occasionally match a liquidity search filter (and return a liquidity range in search results) while these profile fields are null.

The net worth estimate includes explanations of the contributing factors via nonprofit_stats.capacity.explanations. Each explanation has a title (e.g., “Real Estate Holdings”) and a reason describing how that factor contributes to the estimate.

Salary

salary summarizes the person’s estimated annual employment compensation:

  • min / max — the current (or most recent) estimated annual compensation range in dollars.
  • by_year — the same range for each calendar year of the person’s priced career, keyed by year (e.g. {"2019": [90000, 130000], "2025": [180000, 260000]}). The series is designed to be graphed as an earnings trajectory. Years in which no salaried role was active — gaps between jobs — are omitted from the dictionary rather than reported as zero.

When the person holds several salaried roles at once (for example an executive role and a paid board seat), each year’s range sums the roles active that year. salary is null when no salary estimate exists.

These are model estimates derived from roles, employers, and public compensation disclosures — not payroll figures.

Income Sources

income_sources lists every income source identified for the person. Each entry has:

  • type — one of salary, profit_share, fund_salary, fund_carry, fund_mgmt_fee, performance_earnings, inheritance, realized_proceeds, or other.
  • name and role — the entity the income comes from and the person’s role there, when applicable.
  • frequencyannual for an ongoing flow (amounts are a yearly rate) or one_time for a single event (amounts are the total from the event).
  • year_range — the [start, end] years the income covers; both ends equal the event year for one-time income.
  • amount_min / amount_max — the estimated dollar range.
  • description — a short natural-language summary, when available.

Salary income appears both here (as individual entries) and aggregated in the salary block, so income_sources alone is a complete census of known income.

Assets

assets lists the person’s identified non-cash holdings. Each entry has a type (public_equity, private_equity, real_estate, investment_vehicle, or other), a name for the company or holding (when available), a value_min / value_max estimated dollar range, and an optional description.

Wealth fields, together

How the pieces above look on one person — a fund manager with a researched profile:

1{
2 "net_worth_min": 30000000,
3 "net_worth_max": 70000000,
4 "net_worth_estimate": 45000000,
5 "liquidity_min": 4500000,
6 "liquidity_max": 9500000,
7 "liquidity_explanation": "Most wealth is locked in fund positions; liquid reserves cover roughly a year of major commitments.",
8 "salary": {
9 "min": 450000,
10 "max": 790000,
11 "by_year": {
12 "2018": [150000, 250000],
13 "2019": [181250, 306250],
14 "2025": [418750, 733750],
15 "2026": [450000, 790000]
16 }
17 },
18 "income_sources": [
19 {
20 "type": "salary",
21 "name": "Acme Capital",
22 "role": "Managing Partner",
23 "frequency": "annual",
24 "year_range": [2018, 2026],
25 "amount_min": 400000,
26 "amount_max": 700000,
27 "description": "Earns an estimated $400K-$700K in salary at Acme Capital."
28 },
29 {
30 "type": "fund_carry",
31 "name": "Acme Capital",
32 "role": "Managing Partner",
33 "frequency": "annual",
34 "year_range": [2020, 2026],
35 "amount_min": 675000,
36 "amount_max": 1125000,
37 "description": "Carried interest from Acme Capital's funds."
38 },
39 {
40 "type": "realized_proceeds",
41 "name": "Acme IPO",
42 "role": null,
43 "frequency": "one_time",
44 "year_range": [2021, 2021],
45 "amount_min": 2000000,
46 "amount_max": 5000000,
47 "description": "Realized an estimated $2M-$5M selling shares in the IPO."
48 }
49 ],
50 "assets": [
51 {
52 "type": "public_equity",
53 "name": "Acme Corp",
54 "value_min": 3000000,
55 "value_max": 8000000,
56 "description": "Holds an estimated $3M-$8M of Acme stock."
57 },
58 {
59 "type": "real_estate",
60 "name": null,
61 "value_min": 2500000,
62 "value_max": 3500000,
63 "description": "Primary residence."
64 }
65 ]
66}

Note the shapes worth writing client code against: by_year keys are strings (JSON object keys always are), one-time income repeats its event year at both ends of year_range, and name can be null on both income sources and assets.

Giving Capacity

political_stats.capacity is the predicted political giving capacity for the current 2-year cycle.

nonprofit_stats.capacity is a NonprofitGivingCapacity object containing:

  • predicted_annual_giving — the predicted annual nonprofit giving capacity in dollars
  • explanations — a list of factors that contributed to the estimate, each with a title and reason

Both are forward-looking predictions based on historical patterns, not historical totals.

Donation Amounts

donations[].amount_range is a [min, max] array representing the estimated total amount donated to a specific nonprofit. Because nonprofit donation records are most often reported in bands (e.g., “250250–499”) rather than exact amounts, the API returns a range.

nonprofit_stats.total_amt_range follows the same pattern for the aggregate total across all nonprofits.

Top Issues

top_issues is a list of philanthropic interest areas (e.g., “education”, “environment”, “healthcare”) that WealthAtlas has inferred from the person’s giving history, board affiliations, and biographical information. Each issue includes a description explaining why it was assigned.

Deceased Status

is_deceased indicates whether WealthAtlas has found evidence that the person is deceased. A value of null means the status is unknown — it does not necessarily mean the person is alive.

Profile Freshness

date_last_updated indicates when WealthAtlas last refreshed the person’s profile. Profiles are updated periodically as new public records become available. You can use this field to assess data recency.