A persona model is easier to trust when people can inspect it. Which attributes are represented? How are they connected? What changes when a prior, category, or relationship is adjusted? Until now, answering those questions required working directly with the MatrAIx synthesis code and data.
Two new draft pull requests propose a different interface: a self-contained Synthesis Studio that runs entirely in the browser. The work is deliberately split into two phases so the graph explorer can be reviewed independently from the generative workflow.
Explore the persona DAG
- Search and filter 1,308 graph nodes
- Inspect nodes, values, and directed edges
- Navigate with URL-backed state
- Use keyboard-accessible desktop and mobile layouts
Adjust and generate
- Apply four kinds of model adjustments
- Generate deterministic persona samples
- Compare adjusted and baseline marginals
- Overlay a selected persona on the graph
Phase 1: making the graph legible
The first draft introduces a read-only Persona DAG Studio at /synthesis/. The interface offers an overview of the full graph and hop-bounded drill-down views, with details for the currently selected node. Search, category filters, and URL-backed navigation make an otherwise large model approachable and shareable.
The graph is not downloaded from a mutable service. It is built from a pinned MatrAIx source commit and committed as an immutable v1 release. A manifest binds the source, generator, dataset, byte sizes, and SHA-256 digests. The browser verifies those artifacts before it renders them.
Phase 2: controlled experimentation
The second draft builds on the explorer with an Adjust & Generate workflow. A user can pin a value, replace a prior, scale a category, or scale an incoming edge. The studio compiles those edits into a strict request, samples personas with a reproducible seed, and summarizes the resulting marginals.
Generation runs inside a dedicated Web Worker, keeping the interface responsive. Starting a newer request supersedes the previous one, while worker failures are isolated and recoverable. Results remain local to the page and are intentionally excluded from the URL.
Static does not mean unverified
The studio has no API server, database, or runtime dependency on the source repository. That smaller operational surface is paired with unusually strict provenance checks. The v2 runtime independently verifies the graph core, sampler pack, and dimensions snapshot before using them. The existing v1 release remains byte-checked so Phase 2 cannot silently rewrite Phase 1.
Reproducibility tests rebuild the artifacts from the pinned source and compare them with committed fixtures. Fidelity checks cover graph structure, probability tables, conditional masks, seeded samples, marginals, and rendered persona text.
The stacked design creates a clean rollback boundary. Removing Phase 2 returns the page to the verified, read-only v1 explorer without a data migration or service change.
Testing across browsers and architectures
The drafts include Node tests and Playwright flows for Chromium and WebKit at desktop and 390-pixel mobile viewports. Because the runtime is browser JavaScript with committed data, it is architecture-neutral and can also be exercised on ARM64 systems such as Apple Silicon and ARM Linux.
git fetch origin pull/14/head:pr-14 pull/15/head:pr-15
git switch pr-15
python3 -m http.server 4173
# Open http://127.0.0.1:4173/synthesis.html
The artifact toolchain is pinned to Node 18.19.1. Reviewers who run the complete test suite should use that version to reproduce the documented build environment.
What we want reviewers to examine
Both pull requests remain drafts. We are especially interested in feedback on whether the graph is understandable without prior knowledge of the synthesis system, whether the adjustment vocabulary is clear, and whether the baseline comparison helps explain what an intervention changed.
Phase 2 is stacked on Phase 1 and must not merge first. After Phase 1 lands, its commits will be removed from the Phase 2 review diff.
