
Persona Builder
Author an AI employee somebody would actually hire. Researches the real profession on LinkedIn via SpiderPeople — title vocabulary, skill frequency, self-description register, name and sex distribution, and the visual register practitioners present in — then composes the persona from those distributions rather than from imagination. Two modes: `product` (identity, goal, falsifiable rules with explicit refusals) and `character` (the full visual identity: 3-paragraph seed prompt, face-consistency prompt, 6 variation prompts, voice), rendered through @di-atomic/media-generator. Carries a house visual standard that 7 of 102 shipped personas currently meet — three camera registers, a 13-row anti-pattern table, and the rule that a reference image fixes identity so the prompt must stop describing it. 5 PASS/FAIL scripts enforce it, including a likeness gate that fails closed. Guidance-only — agents reach it via skill_read.
persona-builder is Di-Atomic's persona-authoring guidance skill. It does not run a backend. The agent's own LLM follows SKILL.md to research a profession, aggregate what it finds, author the persona, and hand render prompts to the real @di-atomic/media-generator. Its differentiation vs "write me a character" is that nothing is invented: the title comes from what the market calls the role, the skills come from practitioner frequency, the self-description comes from the register practitioners use on themselves, and the name is composed from name-frequency distributions and then checked until it belongs to nobody. The visual half carries a house standard — three distinct camera registers for three distinct jobs, a 13-row anti-pattern table, and the counter-intuitive rule that once a reference image fixes identity the prompt must stop describing it. Five PASS/FAIL scripts enforce it, including a likeness gate that fails closed when the research manifest is missing. That standard is not a claim about the existing catalog. Run the seed gate across all 102 live persona avatars and 7 pass — the standard was applied to one batch of 33 and then abandoned. This skill exists to make it the default rather than the exception.
Features5
Title vocabulary from what the market actually calls the role, skills from practitioner frequency, and the self-description from the register practitioners use on themselves. Company mode is the volume lever, not search, which is a Google SERP capped under 10 hits and the most common way to conclude a role is rare when it is not.
The obvious move is the most frequent first name with the most frequent surname, and it reliably produces a real, findable person. The name is composed across frequency bands instead, then checked against the research set and a live lookup until it matches no one.
Rules with no refusal, unfalsifiable rules, a seed prompt with no imperfection, a variation that re-describes the face, a face-consistency line that drifts into scene description. Testing planted 17 defects and caught 17, with 5 of 5 clean controls passing.
An editorial portrait wants 85mm at f/2.8; a social post wants a phone, uneven framing and clutter. A casual post that looks studio-shot reads as an ad, so the seed and the content want opposite cameras. The gate checks per style pack rather than applying one rule everywhere.
Distributions and vocabulary come out; the people it read stay behind. No name, employer, biography, profile URL or photo survives into a persona file, and the check refuses to pass at all when the research manifest is missing rather than assuming the work was done.
Videos1 video
DemoPersona Builder · Demo video
Demo · SpiderMediaArticles about Persona Builder2 articles
I audited my own 102 AI personas. 7 passed.
opvs.ai21 Aug 2026I audited my own 102 AI personas. 7 passed.
I ran my persona gate across all 102 avatars in my own catalog. Seven passed. The A/B that followed showed the gap is a prompt gap, not a provider gap, and that is what @di-atomic/persona-builder closes.
Videos1 video
DemoPersona Builder · Demo video
Demo · SpiderMediaArticles about Persona Builder2 articles
Showing all 2
SKILL.mdthe file your agent reads
SKILL.md loads when you open this tab.
What's new5 releases · newest first · from the package's CHANGELOG
v0.1.42026-11-09Latest
Marketplace listing update: added the launch explainer film (`media.demo_video_url`). No code, schema, copy or guidance changes; hero and screenshots unchanged from 0.1.3.
v0.1.32026-11-08
### Fixed - **The skill's own handbooks contradicted its own gate.** `references/field-reference.md`, `recipes/author-a-product-persona.md`, `recipes/research-a-profession.md` and `references/rules-and-refusals.md` still taught 5–8 authored `skills` with proficiency levels, while `check-persona-rules.py` FAILs any authored entry (a catalog product ships `skills: []`; the Hard Skills chips fill from `tools[]`). An agent following the handbook failed its own check. The handbooks now say `skills: []` and carry the researched top skills in the identity and description wording. - **The test suite's good control was failing.** The valid fixture still carried 5 authored skills, so `tests/run-gates.sh` read NOT GREEN (control 4/5). Fixture fixed; a new negative test plants authored skills. Suite: 18/18 negatives caught, control 5/5. - **An unreadable input looked like a FAIL.** A missing persona file, an unreadable research manifest and a usage error now exit 2 (CANNOT), not 1. A missing manifest still FAILs closed (exit 1), by design. ### Added - **`--self-test` on all five gates.** Each one runs its good control (exit 0), every planted defect (exit 1) and a missing file (exit 2): 29 cases in total, with no outside files. The test persona and its broken variants now live in `scripts/_persona_fixture.py`, so the self-tests run wherever the scripts are copied. A gate with its rule removed on purpose fails its own self-test (6/7). - **LinkedIn research findings measured 2026-08-21** in `references/profession-research.md`: `full` mode drops title and photos (it is not a superset of `short`), `company` mode is not deterministic, `max_employees` is a ceiling that truncates, role yield ran 8%, `search` mode wants `search_query`, and take WHO from the photo register but not HOW.
v0.1.22026-08-21
### Added
- **Marketplace card asset kit.** Top-level `media:` block with a hero and four screenshots, all
hosted on SpiderMedia. The build shipped `media: {}` empty by design; propagate renders the pixels.
- **Five feature bullets** on `marketing.features`, verb-led and under 90 characters each.
### Notes
- The before/after screenshot is a composite of the two **real** A/B photographs from the 0.1.0 build
(the same character rendered twice on `kie/nano-banana-2` on the same day, 85 words vs 226), not an
illustration of them. The hero is the same asset used as the blog cover and the listing-page hero:
one render, three surfaces.
- No code, schema, SKILL.md or peer change. This is an assets-and-copy patch.v0.1.12026-08-21
### Fixed - **Marketplace listing overstated the standard's reach.** `description` and `marketing.long_description` both claimed the visual standard was "recovered from 46 shipped personas". The catalog sweep run during the 0.1.0 build showed 7 of 102 shipped personas actually meet it. Both fields now say so, and say plainly that the standard was applied to one batch of 33 and then abandoned. Same correction in `SKILL.md`. - `description` was 1067 characters against the marketplace's 1024 cap, which `--dry-run` does not check — 0.1.0 failed its first real publish on it. Now 930.
v0.1.02026-08-20
First release. Guidance-only. ### Added - **Two modes.** `product` authors identity, goal, falsifiable rules with explicit refusals, and skills for a catalog AI employee. `character` adds the full visual identity and voice, rendered seed-then-variations through `@di-atomic/media-generator`. - **Research-first authoring.** Nothing is invented: `role_title` from title frequency, `skills` from practitioner frequency, register from how practitioners describe themselves, name from name-frequency distributions, and the visual register from the profile photos of the role. Runs on `flow:linkedinProfiles` (SpiderPeople). ~$4–$12 per profession. - **Three style packs** — `editorial-portrait`, `amateur-ugc`, `fashion-studio`. They contradict each other on purpose; the seed and the content want opposite cameras. - **Five PASS/FAIL gates**, none advisory: `check-persona-rules`, `check-no-real-person` (fails closed), `check-seed-prompt` (gates per pack), `check-variation-set`, `check-face-consistency`. - 8 references · 5 recipes · 9 evidence-bundled learnings. - `tests/run-gates.sh` — 17 negative tests plus a control, all green. - **Registry (4 items), seeded from live evidence rather than authored exemplars.** `editorial-portrait-verified-seeds` (the only 7 of 102 catalog seeds that pass the gate unmodified) · `editorial-portrait-seed-template` · `style-guides` (8 shipped, verbatim) · `catalog-gate-audit` (per-avatar verdicts). - `instructions/AGENTS.md` + `instructions/DEPLOYMENT.md`. ### Verified - **The Astrid A/B (BRIEF §8 risk #1) — closed.** Same character, same model (`kie/nano-banana-2`), same aspect; only the prompt differs. The shipped 85-word prompt lands in the same polished register as the live WaveSpeed avatar, so **the render path is not the problem**. The standard-compliant 226-word rewrite reads as a photograph of someone who has the job. The quality gap is a prompt gap, not a provider gap. `tests/13-astrid-ab.md`. - **Catalog sweep — 7 of 102 shipped avatars pass the seed gate (6%).** The failures are not random: the 33 `VIS_VP_*` personas median 240 words and are 33/33 three-paragraph; the other 69 median 55 words and are 1/69. The standard was applied to one batch and then abandoned. Registry now seeds from the 7 verified passers, not from the highest-field-count record. `tests/14-catalog-sweep.md` · `learnings/2026-08-21-the-standard-was-followed-once/`. ### Fixed - **Research peer was `@spideriq/people-skills`, which does not exist** — publish would have failed `peer_not_found`. Corrected to `@spideriq/lead-gen-skills >= 0.8.0` (skill `find-people-extract-linkedin-profile`). The 0.8.0 floor matters: earlier versions documented a submit URL that 404s. - Documented the call contract that was missing: `mode` is required with no default, and `max_employees` defaults to 100 while `company` bills per employee. - **Removed a persist step that does nothing.** `@spideriq/media-skills` is a read-only DAM catalog, and media-generator returns SpiderMedia-durable URLs; `upload-host-media` is only for an external URL that bypassed the gate. The render recipe had been contradicting itself inside one file. ### Sourced from The persona standard recovered 2026-08-20 to `docs/di-atomic-agent-personas/` — the canon behind 46 personas, 102 of them live on the OPVS catalog — plus the craft mined out of a 53-workflow n8n library, plus the live Nadia Osei build. ### Known limits - **Visual parity across backends is unproven.** The recovered standard targets WaveSpeed `nano-banana-pro`; we render through SpiderGate. Prompts port; plumbing does not. The decisive test is an A/B on Astrid `SDR_DM_002`, whose seed prompt and rendered avatar both exist. - **Mode B output cannot be attached to an OPVS catalog product.** The vendor schema has no media field and the media routes are platform-admin. Mode B serves our own brands today. - **No rate anchor.** LinkedIn carries titles and skills, not what the work sells for, so pricing stays reasoned rather than researched. - `tier: internal` until the first authored persona renders clean.
Showing all 5







