
focus-group
Clone your customers from real sales-call transcripts and run them as a standing focus group — /focus-group Agent Skill for Claude Code, Codex, Cursor, and more
Install with your AI
Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.
Install and set up focus-group (claude-plugin project) into my current project. Found on https://claudeers.com/focus-group Repo: https://github.com/bradautomates/focus-group Homepage/docs: — Detected install method: claude-plugin → /plugin install focus-group@bradautomates/focus-group Category: mcp-servers. Platforms: cli, api, desktop, web. Read the repo's README for exact setup and env vars, then install it and wire it into my project. Claudeers Health Verdict: slowing; community-verified: false. Confirm the source before running anything.
/plugin marketplace add bradautomates/focus-group /plugin install focus-group@bradautomates/focus-group
git clone https://github.com/bradautomates/focus-group
// compatibility
| Platforms | cli, api, desktop, web |
|---|---|
| Operating systems | — |
| AI compatibility | claude |
| License | MIT |
| Pricing | open-source |
| Language | Python |
/focus-group
Give Claude a standing focus group cloned from your own sales calls.
Clone your customers with Claude. Point it at all your sales call transcripts once. It discovers the 3-5 customer archetypes hiding in them, builds each into a grounded composite persona, then convenes them as a standing focus group you can pitch anything to — an offer, a hook, a price, a landing page, an email — before it goes live.
/focus-group # first run: analyze transcripts + confirm panel
/focus-group "$3k tier for the workshop" # pitch the panel anything
/focus-group rebuild # ingest new transcripts incrementally
What people actually use it for
- Price tests — "Juno buys at $3k, Dana stalls and asks who else is on the call."
- Hook and headline reads — which seats scroll past, which lean in, with receipts.
- Landing page and email teardowns — objections attributed to the archetype that raised them on real calls.
- ICP correction — "you say you sell to ops leads, but every closed deal was a founder." The transcripts talk back.
How it works
Setup (once): Claude indexes every transcript, extracts decision behavior per call (their words, their objections, their price reactions), and clusters the real people into archetypes by how they buy — not demographics. Then it shows you what it found — "here are your archetypes, and here's who your customer appears to be" — you rename, merge, or cut seats and correct the ICP. Your corrections plus the closed/won patterns become business.md, and each confirmed archetype becomes a named fictional composite with a dossier: identity, buying journey, objection map, style guide, a 20-30 line quote bank, and a coverage map of what it can and can't speak to.
Run (every time): a moderated panel, not an LLM council.
- Round 1 — one isolated subagent per seat, loaded with only its dossier and prior positions. Each emits a pre-verbal signal (attention / valence / arousal) before any words; clones can shrug ("I'd have scrolled past this") or flag NO-DATA.
- Moderator pass — extracts the 2-3 sharpest splits. Adds zero opinions.
- Round 2 — only the contested seats, shown just the opposing take, with an anti-convergence instruction. Position flips are recorded as high-value events.
- Readout — reports the distribution, never resolves it: unanimous points, splits with attribution, top objections with receipts, what would flip each holdout.
- Live room — stay in and grill any clone ("Dana, what if it's half price?").
Every objection or enthusiasm must trace to dossier evidence or be tagged as extrapolation. Disagreement is the product — nothing ranks, synthesizes a winner, or manufactures consensus.
Composites, never real people
Panel seats are fictional blends clustered from many calls, never a named real client. Every seat needs 3+ real people behind it — enforced structurally by the clustering step. If your library only supports 2 clean archetypes, you get 2; it never pads with a thin one.
Memory
Everything lives in a folder you own:
~/Documents/FocusGroup/
business.md # ICP + business context; converges over time
panel/
juno/dossier.md # modules + quote bank + coverage map
juno/positions.md # appended every session
sessions/
2026-07-06-pricing-page.md # stimulus, reactions, splits, verdict
inventory.json # transcript index + cluster assignments
Sessions are flat dated markdown — "what has the panel said about pricing" is a grep, not a rebuild. Each seat's positions.md loads into the clone next session, so verdicts accumulate instead of contradicting.
Install
Claude Code
/plugin marketplace add bradautomates/focus-group
/plugin install focus-group@focus-group
Codex, Cursor, and other Agent Skills hosts
npx skills add bradautomates/focus-group -g
claude.ai (web)
Upload dist/focus-group.skill from the latest release via the claude.ai skill UI (or build it locally: bash skills/focus-group/scripts/build-skill.sh).
Manual (developer)
git clone https://github.com/bradautomates/focus-group
ln -s "$(pwd)/focus-group/skills/focus-group" ~/.claude/skills/focus-group
Setup
Run /focus-group once. It will:
- Ask where your transcripts live — a local folder of downloaded transcripts (recommended, token-free) or your meeting tool's MCP server (Fireflies, Granola, Google Drive). It tells you how to download them from your tool, or walks you through connecting the MCP server and pulls with a capped, cached, one-time cost.
- Index, extract, and cluster the transcript library into archetypes.
- Show you what it found — "here are your archetypes, and here's who your customer appears to be" — you rename, merge, or cut seats and correct the ICP.
- Write
business.mdand the confirmed dossiers, then mark setup complete.
After that, preflight is silent: setup.py --check exits 0 with no output and the panel just runs. Stale dossiers (>60 days) and pending transcripts warn; they never block.
Transcript sources
- Local folder (recommended) — download your transcripts and point
TRANSCRIPTS_DIRin~/.config/focus-group/.envat the folder. This is by far the most token-efficient path: file reads are free, while every document pulled through an MCP tool call passes through model context. From Google Drive: right-click "Meet Recordings" → Download, unzip, done. Fireflies/Otter/Zoom all have transcript exports. Any text format works (.txt,.md,.docx-exported text,.vtt,.srt,.json). - MCP — connect your meeting tool's MCP server instead: Fireflies (
https://api.fireflies.ai/mcp), Granola (claude.ai connector), or Google Drive (Anthropic's connector or any Drive MCP server). The wizard recordsTRANSCRIPT_MCP=<provider>and pulls calls through the connected tools under strict token rules (newest-50 cap, one doc per call, permanent local cache under~/Documents/FocusGroup/transcripts/). You connect and authenticate the server yourself (Claude Code:claude mcp add; claude.ai/Desktop: Settings → Connectors; other hosts: their MCP config); the skill never handles your credentials.
The .env is never overwritten — setup only appends missing keys.
Structure
focus-group/
.claude-plugin/
plugin.json # Claude Code plugin manifest
marketplace.json # Claude Code marketplace manifest
.codex-plugin/plugin.json # Codex/agents manifest
.github/workflows/ # CI (tests) + tagged release (.skill build)
hooks/
hooks.json # SessionStart status line (Claude Code only)
scripts/check-setup.sh
skills/focus-group/
SKILL.md # the runtime: setup wizard + panel protocol
scripts/setup.py # preflight (--check / --json) + builder
scripts/build-skill.sh # claude.ai bundle builder (dev-only)
tests/
test_setup.py
dev-sync.sh # mirror working tree into installed plugin cache
Develop
# Run the test suite (stdlib + pytest; no network):
python3 -m venv .venv && .venv/bin/pip install pytest
.venv/bin/python -m pytest tests/ -q
# Build the claude.ai upload bundle:
bash skills/focus-group/scripts/build-skill.sh # → dist/focus-group.skill
# Dev-sync local edits into the installed Claude Code plugin:
./dev-sync.sh # --dry-run to preview
Releasing: update CHANGELOG.md, keep the version in sync across skills/focus-group/SKILL.md, .claude-plugin/plugin.json, and .codex-plugin/plugin.json, then tag vX.Y.Z and push — the release workflow runs tests, builds the .skill, and attaches it to the GitHub release.
Open source
MIT. Personas are built from your transcripts on your machine; nothing is uploaded anywhere.
Built by Brad Bonanno — I make content about building with AI on YouTube (@bradbonanno), and build AI operating systems for businesses at Solaris Automation. If /focus-group saves you from guessing what your customers think, come say hi on the channel.
Star History
github.com/bradautomates/focus-group · @bradbonanno · Solaris Automation · LICENSE
// faq
What is focus-group?
Clone your customers from real sales-call transcripts and run them as a standing focus group — /focus-group Agent Skill for Claude Code, Codex, Cursor, and more. It is open-source on GitHub.
Is focus-group free to use?
focus-group is open-source under the MIT license, so it is free to use.
What category does focus-group belong to?
focus-group is listed under mcp-servers in the Claudeers registry of Claude-compatible tools.
// embed badge
[](https://claudeers.com/focus-group)
// retro hit counter
[](https://claudeers.com/focus-group)
// reviews
// guestbook
// related in MCP Servers
f.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source — self-host for your organization with complete…
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Gemini CLI & Hermes Agent. Only official website: ccswitch.io
An open-source AI agent that brings the power of Gemini directly into your terminal.
🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman