Skip to content

Lab · Population workbench · Methodology

Methodology and limitations

What the workbench observes, what it calculates, what it simulates and what it simply assumes — and what would make its answers better.

Data source

U.S. Census Bureau, 2019 ACS 1-Year PUMS, California person records (public domain). The Public Use Microdata Sample is disclosure-protected person-level survey data released by the Census Bureau; it is in the public domain. The full 2019 1-Year file for California holds 380,091 person records with survey weights that sum to 39,512,223 people.

The workbench loads a 12,000-record sample of that file (670 KB), prepared for the earlier California UBI simulator from the Census FTP release. Six attributes are carried per record: age, personal income, sex, race, education and employment status, coded into the categories shown in the tool. The preparation script is not part of this repository, so the sampling procedure is not re-verified here; the comparison below shows how closely the sample's weighted shares track the full file's published benchmarks.

Weighting

Every sampled record carries the same scaled weight, 3292.6852, which is the state population divided by the record count (39,512,223 ÷ 12,000). Weighted totals therefore reproduce the state population (39,512,222 people) and every count, share, mean and median in the tool is a weighted statistic. The original person weights (PWGTP) are not carried in the sample, so within this dataset "probability proportional to weight" persona sampling is equivalent to uniform sampling; the code is written for unequal weights so a differently weighted dataset behaves correctly.

Sample versus full-file benchmarks (percent of people). Largest gap: 0.6 points.
AttributeCategoryFull fileThis sample (weighted)Gap
RaceAmerican Indian / Alaska Native0.80.70.1
RaceAsian14.815.40.6
RaceBlack5.85.70.1
RaceNative Hawaiian / Pacific Islander0.40.40.0
RaceOther race13.713.90.2
RaceTwo or more races5.05.00.0
RaceWhite59.558.90.6
EducationBachelor's16.016.30.3
EducationGraduate degree9.08.70.3
EducationHigh school17.117.30.3
EducationN/A (under 3 yrs)3.53.40.0
EducationNo HS diploma30.630.90.3
EducationSome college / Associate23.923.40.5

Full-file benchmarks: mean personal income $39,473, median $16,768, adult mean $50,871. Sample (weighted): mean $38,857, median $16,566. Estimates from small filtered selections are unstable; the tool flags selections under 100 records.

Observed, calculated, simulated, assumed

LabelMeaningExamples in the tool
ObservedRead directly from a Census microdata record.Record count; each persona's age, income band, education, employment, sex and race.
CalculatedArithmetic on observed records and their survey weights. No model.People represented, share of California, weighted median income, age and income histograms, category shares.
SimulatedOutput of the UBI policy model applied record by record, then weighted.Program cost, tax revenue, net fiscal position, net gainers and payers, poverty proxy before and after.
AssumedA number you typed. The tool does not check it against anything.Eligible share, awareness rate, adoption rate, value per adopter, budget; all UBI parameters.
EstimateArithmetic on assumed numbers. Explicitly not a forecast.Eligible people, aware people, adopters, total revenue or cost, budget per adopter.

Scenario A: the UBI policy model

The model is the TypeScript module from the California UBI simulator, carried over without changes to its logic. For each record it computes an annual benefit (adult or child amount × 12, by the chosen adult age), a tax (the chosen rate × personal income, or × income above the exemption when progressive), and the net change (benefit − tax). Weighted sums give program cost and revenue; the "revenue-neutral flat rate" is cost divided by total taxable income. Poverty uses a personal-income proxy of $12,490 and is labeled illustrative because the official measure is household-based.

Verification: the model, the ported file and the original file produce identical outputs on this sample, and an independent plain-loop calculation matches the headline figures. Default parameters ($1,000/month to adults 18+, 30% flat tax) on the statewide baseline give program cost $367.7B, tax revenue $460.6B, net gainers 18.34M, net payers 12.55M, and a poverty proxy of 45.8% before and 32.9% after. The same logic on the full 380,091-record file gives near-identical, not identical, aggregates. When a filter is active the model runs on the selection only, so "revenue-neutral" means neutral within that selection.

Scenario B: reach and adoption

Eligible people = filtered people × eligible share. Aware people = eligible × awareness rate. Adopters = aware × adoption rate. Total revenue or cost = adopters × value per adopter. Budget per adopter = budget ÷ adopters. That is the whole model. There is no behavioral response, no calibration and no uncertainty range, which is why every output is labeled "Assumption-driven estimate, not a forecast." The value of the scenario is that the population it starts from is real and weighted, and that every assumption is written down and exported.

Personas

Personas are records drawn from the filtered selection without replacement, with probability proportional to survey weight (Efraimidis–Spirakis keys from a seeded generator, so a seed reproduces the same draw). A card shows only the attributes on the record: age, personal income band, education, employment, sex and race. No names, photos, quotes, goals or behaviors are generated, because none of that is in the data. Synthetic composites drawn from Census microdata. Not real people.

Limitations

  • 2019 data: pre-pandemic incomes and employment. Nothing here describes 2026 California.
  • Personal income, not household income. Poverty is a proxy, not the official measure.
  • A 12,000-record sample of a 380,091-record file. Filtered selections can become small quickly; the tool warns under 100 records.
  • No geography. A county-group filter via PUMA codes was planned but not shipped because the mapping was not verified.
  • Income bands are fixed (8 bands from "$0 or less" to "$150,000 or more"); Census top-coding and a few negative reported incomes are kept as reported.
  • Categories are as coded by the preparation pipeline. "Other race" and "Two or more races" follow the ACS race question, not Hispanic origin.
  • The reach scenario has no behavioral content. It cannot tell you whether an adoption rate is plausible.
  • The tool runs in your browser and stores nothing. Close the tab and the work is gone unless you exported it.

What would improve the answers: the full-file weights, household variables, a current-year file, geography, and — for a real decision — calibration against records you actually hold and validation against outcomes you have actually observed.

Reuse

The Census microdata is public domain and can be reused freely; cite the U.S. Census Bureau, 2019 ACS 1-Year PUMS. Reports, CSVs and JSON files you export from the workbench are yours; attribution to this tool is welcome but not required. The workbench source is published as part of this site for inspection; no separate open-source license is granted for it at this time, so ask before reusing the code itself.

Changelog

  • v1.0.0 — 2026-09-11. First public version: question, six filters, weighted distributions, UBI policy model, reach-and-adoption estimate, weighted persona sampling, HTML/CSV/JSON export.

Back to the workbench

Download the resume that fits the role.

Each version emphasizes different evidence: enterprise SEO, AEO/GEO, AI product systems, or organic growth.

Selections may be reviewed in aggregate to understand which paths are getting interest.