ProfileFoundry: A Synthetic Person-Object Substrate for
Privacy, Memory, and Tool-Use Evaluation in LLM Agents
January 01, 1970
Foundation-model research increasingly needs data about people: user state, personal histories, relationships, contact-like fields, documents, and longitudinal updates. Real user data is difficult to share, perturb, audit, or redistribute responsibly, while independently generated fake fields rarely preserve the cross-field and temporal consistency needed for controlled evaluation. We present ProfileFoundry
, a deterministic generator and fixed reference release of 100,000 adult synthetic Person Objects across eight locales. Each object combines a typed current snapshot, household, family, and employer links, snapshot-aligned events, normalized relational views, and generation provenance. The release contains 709,228 events, 40,338 households, 52,491 employers, and 518,564 directed relationship edges. We report evidence in separate categories: selected population-marginal comparisons, per-object invariant checks, release-wide referential and temporal closure, and coincidence/provenance screens. ProfileFoundry is not a population-fidelity model, a rendered-text corpus, or a formal privacy mechanism. Instead, it is a responsible synthetic source layer for constructing downstream foundation-model evaluations involving memory, privacy, document understanding, record linkage, and agent state while keeping the synthetic person behind each artifact inspectable.
Research on language-model privacy, memorization, and user-state behavior has become increasingly dataset-dependent. Memorization studies have used inserted canaries to measure exposure [1], web-scale extraction attacks to recover verbatim training snippets containing public PII [2], and real user traces to study privacy inference beyond memorization [3]. PII detection and redaction work has introduced synthetic span-labeled corpora such as SPY and Nemotron-PII [4], [5]. Long-term memory and personalization benchmarks use multi-session conversations, user histories, or curated profiles to test whether models can recall, update, and apply user state [6]–[9]. These lines of work show that synthetic or semi-synthetic personal data is already central to NLP research, especially when real personal data is unsafe or unreleasable.
These datasets leave a common lower-level gap. Canary studies provide controlled secrets, but not coherent people. Extraction and inference studies often depend on real web or social traces, which are difficult to redistribute, perturb, or audit as synthetic identities. PII corpora provide labeled spans in rendered text, but usually do not expose the underlying person graph that generated those spans. Memory and personalization benchmarks provide fixed conversations, histories, or user profiles for a particular evaluation, but not a scalable population from which new privacy, retrieval, dialogue, document, or agent-state datasets can be derived under the same schema and seed. The missing artifact is therefore not another single task benchmark; it is a reusable source layer: an auditable population of internally consistent synthetic people whose identifiers, relationships, employers, addresses, timelines, and provenance can be rendered into many downstream study designs.
ProfileFoundry is designed as this base layer. It provides structured adult Person Objects whose demographics, contacts, households, family links, employers, addresses, identifiers, and event histories are generated and validated together. Researchers can transform these objects into task-specific artifacts such as PII-laced text, memory entries, retrieval documents, forms, dialogue states, linkage pairs, perturbation sets, or exposure corpora while retaining a known source object and deterministic generation path. Existing resources support important pieces of this workflow, but they generally expose different layers: rendered text, task instances, learned or simulated tables, local fake fields, or domain-specific longitudinal records.
ProfileFoundry does not claim that structured synthetic profiles are new. Its distinct contribution is to separate and release a broader source artifact: a versioned schema, represented-person and employer graph, snapshot-aligned events, normalized analytical views, deterministic generator, and release-level evidence. Appendix Tables 16 and 17 record the artifact-level distinction.
ProfileFoundry is especially relevant now because language systems increasingly act through tools, memory, retrieval, and persistent user state. A source object makes controlled confounders possible: two people can share a household, employer, surname, or city without being the same person; an earlier address or job can be superseded by a later event; and rendered spans can retain links to the fields and events that produced them. The present paper establishes the source layer and its released evidence, not downstream model effectiveness.
Our contributions are:
Person Object abstraction: a reusable Person Object with snapshot fields, graph links, typed events, reserved document hooks, and generation provenance for constructing sensitive-data-like foundation-model evaluations without releasing real user traces.
Internally consistent linked generation: the generator first commits to household roles, represented relationships, shared addresses, employers, and snapshot facts, then derives person records, graph edges, foreign keys, and snapshot-aligned events from those commitments so linked fields simulate real person.
Executable generator and SDK: a Python package and CLI for deterministic profile and household generation, scaled release builds, validation, export, and release-rebuild workflows.
Audited reference release: the 100K release includes canonical JSONL, a complete viewer Parquet file, flat snapshots, normalized relational tables, manifest hashes, and a dataset card, accompanied by validation, leakage, and report-quality evidence.
Artifact-accountability protocol: a release audit that separates distributional gaps, declared consistency, referential and temporal closure, coincidence screens, reserved-domain email checks, provenance, and documentation-drift evidence.
Synthetic personal data spans privacy, personalization, agent evaluation, record linkage, statistical disclosure control, and domain simulation, but these areas usually release different artifacts. Privacy corpora expose rendered text and labels; memory benchmarks expose fixed histories or tasks; population and tabular systems expose linked records, learned relationships, or domain simulations; and fake-data libraries expose localized fields or schema-generated records. ProfileFoundry targets the reusable source layer: schema-governed Person Objects with inspectable links, typed state-changing events, normalized exports, provenance, and release-level evidence.
Language-model privacy work shows that models can memorize sensitive strings and infer private attributes without verbatim reproduction [1]–[3]. Privasis, PANORAMA, SynthPAI, SPY, Nemotron-PII, Gretel’s multilingual financial PII data, and PIIBench address releasable private text, PII/PHI detection, span labeling, de-identification, memorization, or corpus unification [4], [5], [10]–[14]. Several use profiles internally and provide substantial human or benchmark evaluation. ProfileFoundry differs at the exposed layer: it releases the structured identities, households, employers, relationships, identifiers, events, normalized views, and provenance from which text corpora can be derived, but it does not itself release rendered prose or span labels.
PersonaBench, LaMP, LoCoMo, LongMemEval, and PersonaMem evaluate personal-information QA, personalized tasks, long-term conversational memory, temporal reasoning, knowledge updates, or user-aware response generation [6]–[9], [15]. LoCoMo and PersonaMem have meaningful temporal structure, and PersonaBench uses a social graph during construction. Their primary interfaces remain fixed conversations, documents, or tasks. ProfileFoundry instead makes source state reusable through stable profile IDs, represented-person links, employer IDs, relationship edges, and typed histories.
PersonaChat, Persona Hub, and generative-agent systems use persona facts, descriptions, memories, reflection, planning, or social behavior as conditioning signals [16]–[18]. Generative Agents in particular model social behavior over simulated time. ProfileFoundry is narrower in behavior and broader in release structure: it provides inspectable personal-state objects and links rather than a behavioral simulation or persona-prompt collection.
Pseudopeople exposes stable simulant, household, and employer identifiers across simulated administrative records and is the closest population-level comparator [19], [20]. Synthea provides longitudinal, linked patient records within healthcare [21]. Febrl and GeCo support generation, corruption, and linkage workflows [22], [23]. synthpop, SDV, PrivBayes, and PrivSyn provide statistical, relational, sequential, or differentially private synthesis [24]–[27]. ProfileFoundry does not replace these systems; it packages a multi-locale, NLP-facing person-state layer with canonical objects, normalized views, represented links, typed events, and release evidence.
Faker generates localized values and composite profiles, while current Mimesis schemas can express foreign-key references between generated schemas [28], [29]. ProfileFoundry uses fake-data providers at the leaf level but adds release-specific cross-field constraints, represented household and employer commitments, snapshot-aligned histories, deterministic identifiers, and audit artifacts. Its novelty is therefore the combination and exposure of these layers, not the first generation of synthetic names, profiles, households, or longitudinal records.
Appendix Tables 15, 16, and 17 summarize the closest adjacent resources and give the resource-by-resource evidence rubric.
ProfileFoundry generates from a constrained object space. A Person Object is not a bag of independent fake fields; it is a typed adult record whose snapshot fields, household references, employer links, event history, normalized rows, and provenance are generated as mutually constrained commitments. Figure 1 shows the object at the level a downstream NLP system would consume: current fields, linked household members, snapshot-aligned address and job histories, release rows, and seed and manifest metadata.
The canonical schema has four surfaces. The snapshot contains identity, contact, addresses, employment, education, finance, health, government IDs, household ID, family graph, events, reserved document hooks, and generation metadata. The graph surface contains household membership, spouse or partner links, parent–adult-child links, sibling links, colleague links, and employer IDs. The temporal surface contains typed events: , , , , , , , and . The provenance surface records global seed, profile seed, SDK version, generation date, exported timestamp, and reference manifest hash.
The schema is also an interoperability contract. The in-memory source is implemented with Pydantic models and exported as JSON Schema for non-Python consumers [30]. Canonical JSONL preserves complete nested objects, while Parquet views expose the same source record as row-counted relational tables. This separation lets one source object seed an agent-memory store, rendered document, PII-tagged passage, linkage pair, or perturbation set without discarding provenance. Appendix Table 6 maps each schema group to the release evidence that supports it.
The generator implements the object contract as the cascade summarized in Appendix Figure 3. It first samples a household plan, turns that plan into member hints, materializes each person under those hints, closes links, constructs events from the finalized snapshot, and then exports audited release files. This ordering creates the conditions under which marital pins, adult-child slots, shared surnames, shared addresses, family edges, employer reuse, historical rows, and temporal constraints can be made coherent before release validation.
Generation begins with a locale-specific household composition table. For en-US, the eight implemented weights are single households at 0.285, couples without children at 0.265, couples with represented adult children at 0.190, single-parent households with represented adult children at 0.090, cohabiting households without children at 0.050, cohabiting households with represented adult children at 0.030, multigenerational households at 0.045, and unrelated-adult households at 0.045. The weights sum to one. The “child” slots in v1.0 are adult children living with parents, normally age 18–28.
Figure 2 shows the dependency map behind this household-first design and why it is not equivalent to sampling marital status and then adding dependents. Composition determines which role slots exist. Role slots then carry sex hints, age bands, marital pins, surname rules, and shared-address context into the person factory. The family builder closes the represented graph: head-spouse mutual links, cohabiting partner links, parent-child links from head and spouse to every adult-child slot, sibling links among adult children, and grandparent-to-head links in multigenerational households. When a married or cohabiting partner is not represented, the partner field is explicitly marked external rather than silently omitted or assigned a dangling profile ID.
Several small constraints are deliberately visible in the generated object. Spouse ages are sampled within an 11-year band around the head with mass near small gaps; adult-child ages are capped by the youngest represented parent; adult siblings are spaced by at least three current-age years when possible; co-residents share a home phone when one is present; and emergency contacts prefer spouse, parent, sibling, then another household adult. Current employers are assigned from a deterministic locale pool of 250 employers; compatible working adults in a household share an employer with probability 0.25. These rules support internal coherence but are modeling heuristics, not claims about every locale’s real household structure. Appendix Figure 12 shows the resulting employer and colleague-edge structure in the release.
Within each member slot, fields are generated in dependency order. Age is sampled first and gates downstream choices. Education zeroes out levels whose minimum completion age exceeds the sampled age: Bachelor requires age 21, Master 22, and Doctorate 25. Marital status is sampled by age band and sex, then adjusted by feasibility rules: below the configured modeling floor the state is Single; former-partner states are impossible under 19; widowhood under 40 is multiplied by 0.05; cohabiting is multiplied by 0.40 for ages 35–44 and by 0.10 for ages 45–54; and cohabiting is zero at 55+. These are generator assumptions rather than legal or demographic ground truth. Appendix Figures 4 and 5 provide the detailed visual atlas.
Occupation sampling uses education and age gates over title tiers. At age 30, a High School profile has most eligible title weight in Entry/Service and Skilled/Technical titles, whereas a Bachelor profile shifts mass toward Professional/Analyst and Management/Executive titles. Master and Doctorate profiles are hard-blocked from Entry/Service, while some overqualification paths remain possible at small weights; Appendix Figure 6 summarizes which field combinations are blocked, bent, or kept as weighted outliers. Title tier bounds salary; salary percentile drives finance tier; and credit scores use locale-specific bureau scales. The US release uses FICO 300–850 with tier centers 480, 580, 680, 740, and 790, while non-US locales use explicit scale labels in the schema. These coupled heuristics can encode socioeconomic assumptions and are documented as limitations.
After link closure, temporal history is constructed from the finalized snapshot rather than sampled independently. This avoids stale timeline rows caused by linkages or current fields changing after draft events were sampled. The event backfill always includes birth, appends the current move when an address exists, appends the current job-change when employment exists, aligns represented-spouse marriage dates, emits name-change and divorce events when the snapshot implies them, and samples prior moves or jobs only when enough lifetime span exists. Validation checks that the latest covered move and job events agree with current address and employment, that address rows retain source-event IDs, and that events do not predate DOB. This is snapshot-aligned history with partial replay over declared fields, not complete event sourcing of the whole Person Object. Appendix Figure 7 shows a concrete example.
Contact and ID fields are also downstream of earlier commitments. Work email depends on the final employer name and employer ID; phone formatting depends on locale and address region; personal and work emails use reserved domains following RFC 2606 [31]. Social handles are age-gated, LinkedIn requires age 16, banned-platform rules are locale-aware, and platform selection changes with age rather than being flat across the adult range.
We distribute ProfileFoundry in two complementary forms: an executable Python package and a fixed 100K reference dataset. The package supports incremental fixes and task-specific generation under the same schema;
ProfileFoundry-Synthetic-Person-Objects provides a stable, citable population without requiring users to rerun generation. Hosted access conditions and package metadata are governed by the accompanying artifacts, so the paper does not depend
on an unrestricted-hosting claim.
The package can be installed with . It emits the Person Object schema described above, so a generated profile can be consumed as nested JSON, converted into normalized tables, or used as a seed object for downstream NLP artifacts. Table [tab:release_package_surface] summarizes the command guide.
ProfileFoundry-Synthetic-Person-Objects is the fixed reference artifact for direct use and comparison. It is intended for users who want a stable population without rerunning the generator, while the package supports task-specific
generation under the same object contract. Table [tab:release_reference_metadata] lists the release contents and reproducibility
pins.
The release is deliberately more than a flat profile table. The canonical JSONL preserves nested Person Objects, while the Parquet views expose scalar, temporal, relational, household, employer, education, address, social-handle, and allergy views for downstream analysis. The 14-file local bundle contains 709,228 events, 518,564 directed relationships, 167,089 addresses, 111,955 employment rows, 74,738 education rows, 40,338 households, and 52,491 employers. Appendix Figure 8 maps the release inventory and object topology, Appendix Table 3 gives the complete row-counted inventory, and Appendix Figure 9 reports profile-level coverage.
The reference bundle and associated reports are rebuilt through the repository release workflow, "". The fixed data identity is pinned by its manifest identifier, per-file hashes, row counts, seed, and dates. Appendix Figure 18 and Table 14 record the reproducibility pin and the command-level verification checklist.
The ProfileFoundry-Synthetic-Person-Objects audit asks whether the reference release is usable as a synthetic person-object substrate: whether its limited population comparisons are disclosed, its declared references and covered histories
resolve, its objects satisfy the implemented rules, its coincidence risks are screened, and its reports remain tied to the artifact. These forms of evidence answer different questions and are not combined into one quality score.
For the five full-validation locales—US, UK, IN, CA, and AU—the validator compares generated age-by-sex, education, and marital-status bucket shares with public reference tables. For each marginal, it reports the largest absolute bucket-share difference, an \(L_{\infty}\) marginal gap rather than a Kolmogorov–Smirnov statistic. Separately, it checks whether every generated object in those locales satisfies the declared structural and covered replay invariants. IE, NZ, and PH are included in the release but excluded from the locked marginal-fit table because their reference coverage is lighter.
The locked targets were maximum gap \(\le 0.10\) per attribute and mean gap \(\le 0.07\) per locale. The release does not meet the mean target, and we report the miss directly: locale means range from 0.074 to 0.089, with IN largest because its male and female age gaps are both approximately 0.124. In contrast, all 90,000 profiles in the five full-validation locales pass the declared consistency suite. This pass establishes agreement with implemented constraints; it does not independently validate the realism of those constraints, joint distributions, household topology, or event rates.
The object audit covers age gates, address validity after DOB, phone and locale rules, reserved-domain contacts, identifier uniqueness, employer foreign keys, relationship endpoints, household closure, whole-household selection, and partial replay. Across the full 100K normalized release, relationship source and target endpoints have zero misses; employment rows and current profile employer references have zero missing employer foreign keys; household member counts sum to 100,000; and represented spouse links are mutual in 49,072 of 49,072 cases. Parent–child, partner, sibling, household-member, and colleague reciprocal commitments have zero reported reverse-edge misses. External spouse references are explicit sentinel cases rather than broken edges.
Temporal checks cover 709,228 typed events. All 167,089 address rows retain source-event identifiers, every profile has one current address, and no event predates date of birth. Latest covered move and job-change events agree with current address and employment. These checks establish source linkage and partial replay for covered fields; they do not establish complete event sourcing or realism of real-world transition rates.
We screen coincidence and drift separately from privacy claims: 7 repeated name+DOB tuples, 1,038 repeated name+birth-city tuples, 0 personal-email self-collisions, 0 email-syntax findings, and 342 Wikidata Bloom flags. The Bloom filter covers 683,897 humans with known birth dates and at least five sitelinks, indexing and keys at target false-positive rate \(10^{-4}\) [32]. Reserved domains make email evidence syntax/uniqueness-only; a report-quality verifier checks manuscript counts, figures, validation, leakage, and manifest metadata for drift. Appendix Figures 13, 10, and 14–17 and Appendix Tables 8, 4, 5, 9–13, and 10 give the supporting ledger, closure, inventory, leakage, and provenance evidence.
ProfileFoundry supports downstream datasets by rendering audited fields, links, and events into text or records; intervening through masking, corruption, updates, withholding, or temporal shifts; and evaluating outputs against canonical profile, field, relationship, and event IDs. This covers document understanding, memory and agent-state evaluation, privacy and PII rendering, and record linkage while preserving deterministic provenance and controlled near-misses: shared households, employers, cities, or surnames without identity; stale facts superseded by later events; and graph-grounded ambiguous pairs. Appendix Table 7 summarizes recommended, caveated, and discouraged uses.
ProfileFoundry argues for a different unit of synthetic personal data: not isolated fake fields, fixed personas, or unreleasable real traces, but schema-governed people whose identities, households, links, histories, exports, and provenance can be inspected together. This matters for stateful NLP because memory, privacy, document, agent, and linkage evaluations often depend on the same hidden requirement: a coherent source person that can be rendered, perturbed, partially replayed, and audited.
The v1.0 release makes that substrate concrete through an executable generator and a 100K reference population with normalized views, manifest hashes, validation reports, closure checks, coincidence screens, and reproducibility commands. The release is intentionally not presented as a perfect population model, a formal privacy mechanism, or a completed downstream benchmark. Its contribution is a reusable, accountable baseline for building evaluations in which the synthetic person behind each artifact remains visible.
ProfileFoundry v1.0 is English-only, adult-only, and limited to eight locales; Faker and project-specific references constrain field coverage and cultural fidelity. Binary sex/gender conditioning, surname sharing, household composition, education–occupation mappings, salary/credit heuristics, disability/health categories, and social-platform rules are simplifying assumptions that may be narrow or stereotyped; Appendix Table 1 lists risks and disclosures. Household “children” are represented adults, so pediatric, school, custody, guardian-consent, and child-safety workflows are unsupported; family links are household-local with external-partner sentinels, limiting extended kin and non-household graphs. Several full-validation locales miss marginal targets, and the population audit covers univariate age-by-sex, education, and marital-status marginals rather than joint distributions, household composition, age gaps, graph degrees, employer structure, or event rates. Invariants test implemented rules, not realism; temporal history is snapshot-backfilled partial replay. The paper includes no downstream benchmark, human study, or household-first ablation; finance/health/ID/salary fields are synthetic plausibility attributes, and package/card/report/manifest metadata require synchronization.
Synthetic person objects can still be misused for impersonation, fraud rehearsal, spam, credential testing, or misleading demonstrations. The release uses reserved email domains, excludes minors, records synthetic provenance, and publishes collision and notable-person coincidence screens. These safeguards do not provide differential privacy, proof of non-resemblance, or authorization to use generated contact-like fields outside controlled research. Generated phone numbers, government identifiers, addresses, names, and other identity-like values should not be used to contact, authenticate, evaluate, or make decisions about real people.
Because demographic and socioeconomic rules may reproduce stereotypes, downstream studies should report which fields and locales they use, preserve synthetic labeling and provenance, audit group-conditioned outcomes, and avoid treating the resource as demographic ground truth. Derived text or documents should retain the dataset card, license, and relevant risk disclosures. ProfileFoundry should not be used to train or validate consequential decision systems about real people.
We gratefully acknowledge the open-source and open-science infrastructure that made ProfileFoundry practical. Faker provides important localized synthetic-data providers used at the leaf-field level, while Pydantic and JSON Schema support the typed object contract and public schema export. We also thank the maintainers of the scientific Python and columnar-data ecosystem, especially NumPy, pandas, and PyArrow, as well as Hugging Face tooling and the LaTeX venue templates used to package and disseminate the release.
This appendix collects the supporting evidence for ProfileFoundry and follows four buckets. Appendix 12.1 documents the generation logic: the age-gated constraint atlas, the education–career–finance signature, the outlier policy, snapshot-aligned partial replay, and modeling assumptions. Appendix 12.2 describes the released artifacts, covering the Python package command surface, the 100K reference set, its inventory and object topology, per-profile coverage, household and employer graph structure, temporal surface, schema, and use guidance. Appendix 12.3 gives the audit evidence: validation against public marginals, reference-data provenance, referential and temporal closure, leakage and collision screening, invariant families, claim-to-evidence mapping, and reproducibility. Appendix 12.4 provides the resource-by-resource related-work comparison. Counts are descriptive of the fixed reference release unless a caption states otherwise. Internal consistency, distributional fit, coincidence screening, formal privacy, and downstream utility remain separate forms of evidence.
These figures expand the constrained-generation mechanics summarized in the main text. Age is the master gate that conditions education, marital state, occupation, and finance; the generator then preserves plausible rare combinations rather than collapsing every profile toward the modal path, and finally reconstructs history backward from the finalized snapshot.
The generator deliberately preserves some rare combinations after feasibility checks. These weighted outliers are different from contradictions: a doctorate holder may still appear outside high-professional work, a high-income person may still have a lower credit tier, and household members may have different employers unless a shared-employer draw fires. The validator blocks impossible or unsupported combinations, but it does not collapse every profile toward the modal path.
Table 1 records the high-level modeling assumptions that downstream users should disclose when using generator outputs.
| Assumption family | Implementation role | Main risk | Recommended downstream disclosure |
|---|---|---|---|
| Binary sex/gender conditioning | Conditions selected names and demographic tables | Excludes non-binary identities and can conflate sex and gender | State which field is used; do not infer identity categories beyond the schema |
| Household and surname rules | Produces represented family context | Locale-specific family forms may be underrepresented | Report household types used and avoid generalizing to official demographics |
| Education, occupation, and salary links | Produces internally compatible work and finance fields | Can encode socioeconomic stereotypes | Audit group-conditioned outputs and treat salaries as synthetic plausibility fields |
| Credit and finance tiers | Produces coarse correlated financial state | Not calibrated to real bureau or wealth distributions | Do not use for consequential scoring or population claims |
| Health and disability fields | Adds sparse personal-state attributes | Simplification and stigmatizing associations | Use only when task-relevant; test for harmful correlations |
| Social-platform rules | Adds age- and locale-gated handles | Rapidly changing policies and usage patterns | Record generator version/date and avoid behavioral prevalence claims |
| Names, phones, IDs, addresses | Produces contact-like surface forms | Accidental resemblance or unsafe reuse | Preserve synthetic labels, reserved domains, and collision reports; do not contact or authenticate |
The release ships as both an executable Python package and a fixed 100K reference bundle. Table 2 lists the package command surface; the remaining figures and tables describe the reference set, which is an object graph rather than a flat profile table: one canonical Person Object fans out into normalized address, employment, education, event, household, employer, and relationship views.
| Command | Role |
|---|---|
| Generates one deterministic profile per supported locale as a smoke test | |
| Generates one inspectable Person Object | |
| Generates one linked household | |
| Generates household-preserving JSONL at larger scale | |
| Runs configured marginal, consistency, replay, collision, Wikidata, and email checks | |
| Writes JSONL, normalized Parquet, manifest, and validation/leakage summaries |
| File | Rows | Rows/profile | Purpose |
|---|---|---|---|
| 100,000 | 1.00 | Canonical nested Person Objects, one JSON object per line. | |
| 100,000 | 1.00 | Complete one-row-per-person viewer table, with nested sections encoded as JSON strings. | |
| 100,000 | 1.00 | Flat scalar snapshot for quick tabular analysis. | |
| 167,089 | 1.67 | Current and historical addresses with validity intervals and source event IDs. | |
| 111,955 | 1.12 | Employment records, including current and historical jobs. | |
| 74,738 | 0.75 | Education records. | |
| 135,103 | 1.35 | One row per emitted social handle. | |
| 36,792 | 0.37 | One row per allergy entry. | |
| 709,228 | 7.09 | Long-format typed event timeline with payload columns. | |
| 40,338 | 0.40 | Household dimension table with members, inferred composition, and shared address. | |
| 52,491 | 0.52 | Employer dimension table aggregated from current and historical employment records. | |
| 518,564 | 5.19 | Directed relationship graph: family, cohabitation, household membership, and colleague edges. |
| Households | Directed relationships | ||||
|---|---|---|---|---|---|
| 1-3(lr)4-6 Composition | Households | Share | Kind | Edges | Share |
| single | 10,026 | 24.85% | colleague | 295,982 | 57.08% |
| couple, no children | 9,937 | 24.63% | child | 54,246 | 10.46% |
| couple, adult children | 9,454 | 23.44% | parent | 54,246 | 10.46% |
| single parent, adult children | 3,534 | 8.76% | spouse | 42,506 | 8.20% |
| unrelated adults | 2,242 | 5.56% | sibling | 34,930 | 6.74% |
| cohabiting, no children | 2,103 | 5.21% | household member | 30,088 | 5.80% |
| multigenerational | 1,862 | 4.62% | partner | 6,566 | 1.27% |
| cohabiting, adult children | 1,180 | 2.93% | Total | 518,564 | 100% |
| Event inventory | Temporal age summaries | ||||
|---|---|---|---|---|---|
| 1-3(lr)4-6 Event type | Events | Share | Check | Age | Interpretation |
| 173,688 | 24.49% | birth median | 0.00 | anchored to DOB | |
| 167,089 | 23.56% | education median | 19.93 | completion or event timing | |
| 111,955 | 15.79% | job-change median | 22.83 | employment timing | |
| 100,000 | 14.10% | marriage median | 25.39 | represented commitment | |
| 74,738 | 10.54% | credit-event minimum | 21.07 | configured age gate | |
| 65,748 | 9.27% | move minimum | 0.00 | can encode birthplace/current-address origin | |
| 10,720 | 1.51% | ||||
| 5,290 | 0.75% | ||||
| Schema group | Representative fields | Release evidence |
|---|---|---|
| Identity | Names, DOB, gender, marital status, nationality, birth city/country | Pydantic types; leakage audits over name-DOB and name-city tuples; display-name collision checks. |
| Contact | Personal/work emails, phones, social handles | Reserved domains, syntax audit, uniqueness counts, platform age/banned-platform checks. |
| Addresses | Line, city, region, postcode, country, valid-from/to | One current address maximum; current and historical rows projected from move events. |
| Employment | Employer ID/name, title, salary, valid-from/to | Employer foreign keys, current/historical rows, current employee counts, colleague edges. |
| Education | Institution, degree, field, start/completion dates | Education events, field-of-study checks, age-at-completion gates, and marginal validation. |
| Finance/health/IDs | Income, net worth, credit score/scale, allergies, emergency contact, government IDs | Credit scale validators; age gates; allergy export; uniqueness for issued IDs. |
| Linkage | Household ID, spouse/partner, parents, children, siblings | Household/member rows, family edges, directed relationship table. |
| Timeline/provenance | , , generation metadata | Replay checks, UUID5 event IDs, seed/version/date/manifest hash. |
Table 7 summarizes recommended, caveated, and discouraged uses of the released package and reference population.
| Category | Guidance |
|---|---|
| Recommended uses | Agent state tracking, CRM/KYC test harnesses, document extraction prototypes, record-linkage experiments, synthetic identity handling in privacy research, dataset-card and validation-method case studies. |
| Allowed with caveats | Email, form, and document workflows that require public email-domain deliverability or rendered artifacts; users must substitute domains or create documents and then run separate audits. |
| Not recommended | Training consequential decision systems about real people, simulating official population statistics, impersonation, credential testing, or treating the release as privacy-proof data. |
Audit evidence is reported as several distinct forms rather than a single pass/fail summary. Each generation stage carries its own validator family into the release audit (Figure 14): distributional fit against public marginals, referential and temporal closure, leakage and collision screening, structural invariants, and reproducibility are stated separately.
Figure 13 and Table 8 map each headline claim about the release to the concrete public artifact that backs it and to the metric or check that verifies it. The figure is a visual ledger of this correspondence; the table states the same mapping in full.
| Claim | Evidence artifact | Notes |
|---|---|---|
| Structured | Schema source plus exported JSON Schema | Pydantic source of truth plus JSON Schema export. |
| Executable | Python package, CLI, and repository scripts | Command surface for single profiles, households, validation, exports, and full release runs. |
| Declared-suite consistency | Validation report plus invariant tests | 100% pass in US/UK/IN/CA/AU full-validation locales. |
| Linked | , , | 40,338 households, 52,491 employer IDs, 518,564 directed edges. |
| Temporal | ; replay validator | 709,228 typed events; latest covered move/job events agree with snapshot. |
| Leakage audited | Release leakage report | Self-collision, Wikidata Bloom, and reserved-domain email evidence. |
| Reproducible | generation metadata, fixture, manifest hashes | Seed/version/date/reference hash identify the release. |
| Documentation-checked | Report-quality verifier | Counts, validation, leakage, figure, and manuscript claims are checked against reports. |
| Locale | \(N\) | age M | age F | education | marital | mean | Interpretation |
|---|---|---|---|---|---|---|---|
| US | 35,000 | 0.104 | 0.100 | 0.004 | 0.091 | 0.075 | Close to target; age-male slightly above 0.10 after rounding. |
| UK | 20,000 | 0.101 | 0.093 | 0.011 | 0.095 | 0.075 | Close to target; age-male slightly above 0.10. |
| IN | 20,000 | 0.124 | 0.124 | 0.002 | 0.104 | 0.089 | Largest disclosed mismatch; age and marital marginals need future work. |
| CA | 8,000 | 0.109 | 0.102 | 0.007 | 0.080 | 0.074 | Closest mean gap, but age gaps remain above the per-attribute threshold. |
| AU | 7,000 | 0.116 | 0.102 | 0.010 | 0.083 | 0.078 | Age gaps exceed target; education and marital gaps are small. |
The full-validation report uses public age-by-sex, education, and marital-status reference tables for US, UK, IN, CA, and AU. The metric is a maximum absolute bucket-share discrepancy (\(L_{\infty}\) marginal gap), not a KS statistic. The report does not tune the generator repeatedly against the target because that would overfit the release to its own audit. IE, NZ, and PH are included in the release but excluded from the locked marginal-fit and consistency table in v1.0.
| Locale | Validation tier | Reference sources recorded in the project manifest |
|---|---|---|
| US | full | ACS 2023 one-year tables, SSA names, US Census surnames, ZCTA and business-pattern references. |
| UK | full | ONS 2021 Census tables, Family Resources Survey/HBAI income references, ONS baby-name and surname references. |
| IN | full | Census of India 2011 tables, NSS/PLFS 2022–23 and related government statistical sources. |
| CA | full | Statistics Canada 2021 Census tables and income/labor-force references. |
| AU | full | ABS 2021 Census and Survey of Income and Housing references. |
| IE | light | CSO Census references, bootstrap marginals only in v1.0. |
| NZ | light | Stats NZ Census references, bootstrap marginals only in v1.0. |
| PH | light | PSA Census references, bootstrap marginals only in v1.0. |
| Graph or entity check | Result | Temporal/source check | Result |
|---|---|---|---|
| Missing relationship source endpoints | 0 | Address rows with source event IDs | 167,089 / 167,089 |
| Missing relationship target endpoints | 0 | Current addresses | 100,000 / 100,000 |
| Missing employer foreign keys | 0 | Events dated before DOB | 0 |
| Represented spouse links mutual | 49,072 / 49,072 | Current address rows | 100,000 |
| Parent–child reciprocal misses | 0 | Historical address rows | 67,089 |
| Sibling reverse-edge misses | 0 | Current employment rows | 61,428 |
| Partner reverse-edge misses | 0 | Historical employment rows | 50,527 |
| Colleague reverse-edge misses | 0 | Total typed events | 709,228 |
| Household member sum | 100,000 / 100,000 | Events/profile, mean/median/90th/max | 7.09 / 7 / 11 / 17 |
| Audit | Findings | Unique tuples | What the result means |
|---|---|---|---|
| name + DOB | 7 | 99,993 | Exact within-release duplicates are rare at 100K scale. |
| name + birth city | 1,038 | 98,906 | Expected to be higher because city is lower-cardinality than date of birth. |
| personal email | 0 | 100,000 | Every personal email local-part/domain pair is unique in the release. |
| Wikidata Bloom scan | 342 | – | Conservative notable-person coincidence screen, not proof of copying. |
| Email syntax audit | 0 | – | Release emails use reserved domains and pass syntax checks. |
The Wikidata filter is constructed over humans with a known birth date and at least five sitelinks. The released filter covers birth years 1850–2015, contains 683,897 records, and indexes 667,179 name-year keys plus 631,907 name-city keys. Bloom filters introduce false positives; the configured target false-positive rate is \(10^{-4}\). Because the filter is a screening tool over common names and places, its output is best interpreted as a conservative coincidence rate.
The HIBP prototype audit is intentionally not a release metric. The public-email-domain prototype demonstrated that realistic patterns can overlap breached-account corpora even when no real identity was copied. The current release changes the design by using reserved domains, so the correct release audit is syntax and uniqueness rather than breached-account lookup.
| Invariant family | Examples |
|---|---|
| Pydantic structural checks | No extra fields; event dates sorted; events do not predate DOB; at most one current address and at most one current employment. |
| Age gates | Minors cannot have employment, work emails, credit scores, or finance status; under-13 profiles cannot have social handles. The release is adult-only, so these are regression checks. |
| Locale/contact checks | US territories excluded from US state field; phone numbers normalized; mobile prefixes checked by locale; TikTok blocked for IN profiles; reserved email domains. |
| Partial replay checks | Birth event matches DOB; education events match records; latest job-change matches current employment; latest move matches current address; represented married profiles have marriage events. |
| Referential integrity | Employment records resolve to employer rows; relationship endpoints resolve to profiles; household member lists resolve to profiles; whole-household selection prevents orphaned family references. |
| Collision guards | Personal emails are unique; issued synthetic national IDs, passports, and licenses are collision-checked; same-household display-name ambiguity is guarded. |
| Reproducibility and drift | Pinned fixture byte-compares under deterministic seed/version/manifest hash; release-report verifier checks counts, validation, leakage, figures, paper, and docs. |
| Check | Evidence or command |
|---|---|
| Install package | ; source installs use . |
| Smoke CLI | ; generates one profile per supported locale. |
| Generate linked household | . |
| Regenerate release bundle | . |
| Generate normalized subset | . |
| Verify deterministic fixture | ; committed fixture guards against byte-level drift. |
| Verify release reports | ; catches stale counts, validation, leakage, manuscript, and figure claims. |
| Verify release bundle | ; compares manifest, row counts, hashes, and referential integrity. |
| Rebuild schema | ; emits . |
| Rebuild Wikidata Bloom | ; long-running due to public endpoint rate limits. |
| Run tests | ; covers schema, factory, linkage, validation, normalized export, leakage, and reproducibility tests. |
The main-text comparison is intentionally descriptive. The rubric below distinguishes public artifacts from generation-time internals, persistent identifiers from ordinary co-occurrence, explicit state change from timestamps, localized fields from multilingual text, and formal privacy from quality or provenance checks. The resource rows are kept individual rather than grouped into heterogeneous families.
| Resource | Publicly exposed artifact | Persistent linking | Temporal mechanism | Primary scope |
|---|---|---|---|---|
| This work | Typed Person Objects in JSONL and keyed Parquet views | Household, family, employer, and colleague identifiers and edges | Snapshot-aligned typed events with partial replay and source checks | Domain-general personal-state source layer |
| Pseudopeople | Census, survey, tax, and administrative-style records | Stable simulant, household, employer, and linkage-truth identifiers | Multi-decade individual-based population dynamics | US entity-resolution research |
| Synthea | Synthetic patient records and interoperable EHR exports | Patient, provider, and organization entities | Forward lifespan and clinical-state simulation | Healthcare-specific longitudinal simulation |
| Mimesis 19 | Schema-generated structured records | Generic foreign-key references between schemas | No built-in longitudinal person-state process | Localized fake-data generation |
| SDV | Learned single-table, multi-table, and sequential synthetic data | Relationships and sequence keys supplied through metadata | Learned sequential structure when configured | Input-driven tabular synthesis |
| PANORAMA | Profile-grounded PII-rich web-style text | Sample-to-profile association; no released cross-person graph is central | No persistent state-update layer | Memorization and privacy corpus |
| PersonaBench | Timestamped private documents and QA tasks | Social graph used during generation; source profiles are not the benchmark interface | Timestamped sessions and selected updates | Personal-information retrieval benchmark |
| LoCoMo | Long multi-session dialogues and memory tasks | Dialogue participants and event grounding | Dated sessions and temporal event graphs | Long-term conversational memory |
| Privasis | Privacy-rich text with attribute annotations | Auxiliary profile conditioning; no reusable person graph is central | Text or document chronology rather than a person-state substrate | Privacy-rich text and sanitization |
3.1pt
| Resource | Released artifact | Linking/time characteristics | Evidence and scope |
|---|---|---|---|
| Privasis | Large privacy-rich text with personal-attribute annotations | Auxiliary profiles condition generation; no reusable cross-person source graph is the central release | Diversity, automated and human quality, overlap screening, and sanitization evaluation |
| PANORAMA | Profile-grounded PII-rich web-style text | Sample-to-profile grounding; no persistent person-state update layer | Memorization corpus and experiments |
| SynthPAI | Reddit-like interactions with verified personal-attribute labels | Synthetic profiles seed interacting agents; not a released longitudinal person-object population | Human realism checks and personal-attribute-inference experiments |
| PersonaBench | Timestamped private documents and personal QA tasks | Social graph and profiles support generation; evaluated models interact with benchmark documents rather than a reusable source graph | Retrieval-augmented personal-information QA |
| SPY | Synthetic PII-detection text with span labels | No cross-person graph or state process is central | PII detection data and benchmark evaluation |
| Nemotron-PII | Persona-grounded structured and unstructured records with PII spans | Persona context within examples; no linked population is central | PII/PHI detection; US and international conventions |
| Gretel finance PII | Multilingual financial text with PII annotations | Record-level examples; no person graph is central | Conformance and quality-oriented release scores |
| PIIBench | Unified multi-source PII detection corpus | Corpus unification rather than persistent people | Canonical PII types and evaluated baselines |
| LaMP | Personalized classification and generation tasks with user histories | Historical profile items and user/time splits; not a replayable state object | Personalization benchmark |
| LoCoMo | Long multi-session conversations and memory questions | Dated sessions and temporal event graphs | Human editing for consistency and long-term memory evaluation |
| LongMemEval | Multi-session memory tasks | Explicit temporal reasoning, knowledge updates, and abstention cases | Long-term assistant-memory benchmark |
| PersonaMem | Multi-session user interactions and personalized responses | Evolving user profiles and current-state evaluation | Dynamic profiling and personalization benchmark |
| PersonaChat | Persona-conditioned dialogue | Static persona statements; no persistent linked population | Dialogue consistency and engagement |
| Persona Hub | Large persona-description collection | Persona prompts rather than stable linked people | Conditioning source for synthetic data generation |
| Generative Agents | Interactive simulated agents with memories, reflection, and planning | Social interactions unfold over simulated time | Behavioral simulation and component ablations |
3pt
| Resource | Released artifact | Linking/time characteristics | Evidence and scope |
|---|---|---|---|
| Pseudopeople | Census, survey, tax, and administrative-style tables | Stable simulant, household, and employer IDs across multi-decade dynamics; linkage truth provided | Census-scale US entity-resolution research |
| GeCo | Configurable personal-data generation and corruption | Generates linked/corrupted records for linkage experiments; not presented here as a general temporal population | Entity-resolution data generation |
| Febrl | Cleaning, standardization, deduplication, generation, and linkage toolkit | Record linkage and corruption workflows | Entity-resolution tooling |
| synthpop | Synthetic versions of input microdata | Preserves modeled relationships among input variables; no person-life process is required | Statistical disclosure control and microdata synthesis |
| SDV | Single-table, multi-table, and sequential synthesis | Metadata describes relationships and sequence keys | Input-driven learned synthesis and statistical-quality evaluation |
| PrivBayes | Differentially private tabular synthesis | Bayesian-network dependency structure; not a person-object graph | Formal DP mechanism and utility evaluation |
| PrivSyn | Differentially private tabular synthesis | Optimized marginal selection and data synthesis | Formal DP mechanism and utility evaluation |
| Synthea | Longitudinal synthetic EHRs and interoperable exports | Patient, provider, organization, disease, and care-process state over lifespans | Healthcare-domain simulation and interoperability |
| Faker | Localized fields and composite profiles | Values can be composed, but release-level cross-record commitments are not built in | General fake-data generation |
| Mimesis 19 | Localized fields and schema-generated records | Current schemas support foreign-key references between generated schemas; no built-in person-life process | General fake-data generation |
3pt