Research a company's ideal customer profiles and build detailed synthetic buyer personas. Identifies 4-6 distinct buyer segments through web research, then creates rich, realistic personas with demographics, motivations, skepticism profiles, decision criteria, and language patterns. Use when you need to understand who your buyers are at a deep level — their motivations, objections, and how they evaluate solutions.
npx gooseworks install --all # then, in Claude Code, Cursor, or Codex: /gooseworks use the buyer-persona-generator skill
Research a company's buyer segments and build detailed synthetic personas that model their ideal customers. These personas become a reusable client asset — once built, any skill can load them to evaluate content, messaging, websites, or campaigns through buyer eyes.
Build ICP personas for [company]. Their site is [url].With known ICPs:
Build personas for [company]. Their ICPs are: [ICP 1], [ICP 2], [ICP 3].| Input | Required | Source |
|---|---|---|
| Company name | Yes | User provides |
| Company URL | Recommended | Helps with research |
| Known ICPs | No | User provides, or discovered via research |
| Client context file | No | Any existing company context file, if available |
Understand what the company does and who they serve:
From the research, identify 4-6 distinct buyer segments. Each segment should represent a meaningfully different type of buyer — different role, different company profile, or different buying motivation.
For each segment, define:
| Attribute | Description |
|---|---|
| Segment name | Short label (e.g., "Enterprise IT Leader", "Startup Founder", "Agency Operator") |
| Role/titles | Typical job titles in this segment |
| Company profile | Size, stage, industry, tech stack |
| Core pain point | The #1 problem driving them to look for a solution |
| Buying trigger | What event makes them start searching NOW |
| Decision criteria | What matters most when evaluating (ranked) |
| Sophistication | How well they understand the problem space and solution landscape |
| Alternatives | What else they'd consider (competitors, DIY, status quo) |
| Segment size estimate | Rough sense of how big this segment is for the company (primary, secondary, emerging) |
Segment diversity rules:
For each segment, create a detailed synthetic persona. The persona should feel like a real, specific person — not a marketing abstraction.
Persona structure:
{
"id": "persona-slug",
"name": "Jordan Chen",
"segment": "Enterprise IT Leader",
"title": "VP of Engineering",
"company": {
"type": "Mid-market SaaS company",
"size": "200-500 employees",
"stage": "Series B, scaling fast",
"industry": "Financial services technology"
},
"demographics": {
"experience_years": 12,
"reports_to": "CTO",
"team_size": 35,
"budget_authority": "$50K-200K without board approval"
},
"situation": "Jordan's team is growing faster than their tooling can support. They've been using a patchwork of internal scripts and are losing engineering hours to maintenance. The CTO has asked Jordan to evaluate modern solutions before next quarter's planning cycle.",
"pain_points": [
"Team productivity is dropping as they scale",
"Current tools don't integrate well",
"Onboarding new engineers takes too long"
],
"buying_trigger": "CTO mandate to evaluate solutions before Q3 planning",
"decision_criteria_ranked": [
"Enterprise security and compliance (SOC2, SSO)",
"Integration with existing stack (GitHub, Jira, Datadog)",
"Scalability — will this work at 2x team size?",
"Total cost of ownership, not just sticker price",
"Implementation timeline — needs to be live in 6 weeks"
],
"skepticism_profile": {
"trust_level": "Low — has been burned by vendor promises before",
"research_style": "Deep dive. Reads docs, checks GitHub issues, asks peers in Slack communities",
"key_objections": [
"Will this actually scale or will we outgrow it in a year?",
"What's the real implementation cost beyond the license?",
"How good is the support when things break at 2am?"
]
},
"technical_sophistication": "High — understands the technical landscape well, can evaluate architecture decisions, wants to see under the hood",
"language": {
"describes_problem_as": "We need to consolidate our toolchain and reduce operational overhead",
"searches_for": ["engineering productivity platform", "developer tools consolidation", "[competitor] alternative enterprise"],
"red_flag_words": ["revolutionary", "AI-powered", "seamless" — overpromising triggers skepticism],
"trust_signals": ["SOC2 badge", "customer logos in their industry", "transparent pricing", "public changelog"]
},
"evaluation_behavior": {
"first_visit": "Scans headline, checks if it's for their company size, looks for enterprise/security page",
"deep_evaluation": "Reads docs, checks integrations list, looks for case studies from similar companies",
"social_proof_needs": "Wants to see companies their size in their industry, not just FAANG logos",
"deal_breakers": ["No SSO/SAML", "No self-hosted option", "Pricing only available via sales call"]
}
}Save to the client directory as reusable assets:
personas.json — Machine-readable, all personas in an array. Save to the current working directory or wherever the user prefers:
{
"company": "Acme Corp",
"url": "https://acme.com",
"created": "2026-02-26",
"segment_count": 5,
"personas": [ ... ]
}personas.md — Human-readable Markdown with all personas written out in prose form, easy to review and share.
segments.md — Summary table of all segments with key attributes, useful as a quick reference.
After building, present:
icp-website-audit or other skills that can use the personasRender a 'model comparison grid' video from a config — a fal-style "same prompt, N contenders" showcase — a dark real-DOM stage where per beat a monospace prompt fades in centered, docks to a small top strip, then a labeled 2-4 panel grid (static images OR muted video clips, mixable per cell) staggers in and holds for comparison, plus a minimal end card — frame-stepped via Playwright (video cells are frame-seeked deterministically) and encoded with FFmpeg. Deterministic assembly, FREE (cell media comes from create-image-fal / create-video-fal, music from create-music-elevenlabs), text stays pixel-crisp. Use for the model-comparison-grid format.
Render a punchy ~12s vertical (9:16) music-only direct-response OFFER ad as a 4-beat kinetic-typography film — HEADLINE slam → real PRODUCT drop → CLAIM/proof → CTA pill — from one config of copy slots, a real product photo, a brand palette, fonts, bpm, and beat split. DETERMINISTIC + FREE (a bundled Remotion project; springs + interpolate, no AI-gen for visuals). Backgrounds are engine gradient divs off the palette, props are inline SVG, the ONLY composited bitmap is the REAL product photo (objectFit:contain, never stretched), and ALL headline/claim/CTA/URL/wordmark text is typeset in the engine — never AI-rendered (the format's credibility guard). A driver binds the config to Remotion input props, renders the 9:16 master, and derives a 1:1 center-crop with ffmpeg. Two gating checks run before render (claim verbs must match the product's physical format; the claim beat needs an edge-entry mechanism prop). Use for the motion-graphics-offer-ad format.
Assemble a myth-vs-fact kinetic-typography explainer video ad (≈29.5s, 9:16) from N myth/fact pairs + hook / turn / punch copy + palette + a brand end-card PNG + a VO track — a hook, 3 red-strike MYTH cards that flip to teal-check FACT cards (per-line strikethrough that crosses EVERY wrapped line), a "what actually works" turn, an optional proof reveal, a punch line, and a static end card. DETERMINISTIC assembly with ZERO AI-gen visuals — HTML hyperframes rendered frame-exact via Playwright (`window.renderAt(t)`, animation a pure function of beat-local time), Whisper beat-snap to VO word onsets, concat at a uniform fps, karaoke `.ass` captions burned last (suppressed on the proof + end-card beats), and a VO + optional music mix (music −20 dB, `amix normalize=0`, tail fade). FREE (Python + Playwright + ffmpeg); the recipe supplies the copy / palette / end-card / VO and gates the paid VO / music / Whisper calls to their own capabilities. Use for the myth-vs-fact format.