{"id":50339894,"url":"https://github.com/karl-cta/meeting-bots","last_synced_at":"2026-05-29T16:01:15.021Z","repository":{"id":352385974,"uuid":"1214547267","full_name":"karl-cta/meeting-bots","owner":"karl-cta","description":"A panel of AI personas that debate your decisions inside Claude Code. 3 rounds, one user-centric synthesis, full debate recorded to a markdown file.","archived":false,"fork":false,"pushed_at":"2026-04-19T09:26:12.000Z","size":72,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-19T11:25:55.585Z","etag":null,"topics":["ai","ai-agents","anthropic","claude","claude-code","claude-plugin","debate","decision-making","llm","multi-agents","personas","productivity"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/karl-cta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-18T18:15:07.000Z","updated_at":"2026-04-19T09:26:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/karl-cta/meeting-bots","commit_stats":null,"previous_names":["karl-cta/meeting-bots"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/karl-cta/meeting-bots","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karl-cta%2Fmeeting-bots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karl-cta%2Fmeeting-bots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karl-cta%2Fmeeting-bots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karl-cta%2Fmeeting-bots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/karl-cta","download_url":"https://codeload.github.com/karl-cta/meeting-bots/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/karl-cta%2Fmeeting-bots/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33659872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents","anthropic","claude","claude-code","claude-plugin","debate","decision-making","llm","multi-agents","personas","productivity"],"created_at":"2026-05-29T16:01:14.481Z","updated_at":"2026-05-29T16:01:15.013Z","avatar_url":"https://github.com/karl-cta.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Meeting Bots\n\nAI personas sit around a table and debate your question. The Boss listens, then delivers the call. You push back until you are satisfied.\n\n5 by default, 3 to 10 on demand. Mix teams. Add custom personas on the fly. No plugin files to edit.\n\nA meeting room, inside Claude Code.\n\n[![Claude Code Plugin](https://img.shields.io/badge/Claude%20Code-Plugin-6B5BEE)](https://code.claude.com/docs/en/plugins)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n\n## Why\n\nAsk one AI, you get one answer, hedged and polite. That is not a decision, that is noise with confidence.\n\nA real decision comes from a room with disagreement. Someone who wants to ship. Someone who asks the naive question. Someone who spots the thing that will bite you in six months. Someone who teases the pretense out of the room. And someone with the scars to call it at the end.\n\nMeeting Bots gives you that room, on tap, in Claude Code.\n\n## The five personas\n\nThe same five psychologies in every meeting. The expertise changes with the team.\n\n| Archetype | Model      | Role                                                                    |\n| --------- | ---------- | ----------------------------------------------------------------------- |\n| Boss      | Opus 4.7   | Frames at round 0, silent at round 1, challenges at rounds 2 and 3, synthesizes |\n| Pusher    | Sonnet 4.6 | Bold, pushes the ambitious move                                         |\n| Rookie    | Sonnet 4.6 | Asks the naive questions that force clarity                             |\n| Watcher   | Sonnet 4.6 | Thinks sideways, surfaces the second-order effects                      |\n| Cynic     | Sonnet 4.6 | Teases, cuts through, brings back pragmatism                            |\n\n## The five teams\n\nPick a team, or let the plugin detect it from your question.\n\n| Team       | Best for                                            | Personas (examples)                                           |\n| ---------- | --------------------------------------------------- | ------------------------------------------------------------- |\n| `dev`      | Code, architecture, stack, engineering calls        | Senior architect, bold engineer, curious junior, SRE, seasoned dev |\n| `design`   | Brand, UX, UI, visual, design systems               | Design director, avant-garde designer, intern, UX researcher, sharp eye |\n| `product`  | Features, MVP, roadmap, metrics                     | Head of Product, startup PM, junior PM, data-minded analyst, cynical marketer |\n| `business` | Strategy, GTM, pricing, legal, market               | Strategy veteran, founder, intern, meticulous lawyer, field sales |\n| `life`     | Career moves, big choices, personal decisions       | Coach, ambitious friend, curious friend, philosopher, sarcastic friend |\n\nEach team has the same 5 archetypes. Same psychology. Different expertise.\n\n## Install\n\n```\n/plugin marketplace add karl-cta/meeting-bots\n/plugin install meeting-bots@meeting-bots\n```\n\nDev test from the repo:\n\n```\nclaude --plugin-dir ./plugins/meeting-bots\n```\n\n## Use it\n\n**Auto-detect team from your question:**\n\n```\n/meeting-bots:meeting \"I want to launch a SaaS. Where do I start, what do I build first, and how do I know if anyone will pay for it?\"\n```\n\nThe plugin picks the team, convenes the lineup, asks you to confirm or override, runs the rounds, the Boss delivers the call. You push back, it relaunches until you say stop.\n\n**Force a team:**\n\n```\n/meeting-bots:meeting \"...\" --team life\n```\n\n**Custom lineup, mix teams (3 to 10 personas):**\n\n```\n/meeting-bots:meeting \"...\" --agents product-boss,design-pusher,product-rookie,dev-watcher,product-cynic\n```\n\n**Add a custom persona on the fly:**\n\nRun `/meeting-bots:meeting \"...\"` then at the confirm step say something like `Add a CFO obsessed with burn rate` (or `Make the CFO the Boss` if you want them to synthesize). The chair drafts them on the spot (role, values, style, blind spots). No plugin files touched.\n\n**Full interactive wizard (no args):**\n\n```\n/meeting-bots:meeting\n```\n\nReal, tested commands with full transcripts are in the [Example output](#example-output) section below.\n\n## How a meeting goes\n\nA meeting runs 4 rounds: the Boss frames the debate at round 0 (open angles, no position), the others open at round 1, everyone rebuts at round 2 (Boss rejoins as challenger), everyone closes at round 3, then the Boss synthesizes. The full debate is written to a markdown file in your current directory. **Your console stays clean:** you only see the Boss's final synthesis plus the file path. If you push back, a new iteration is appended to the same file and you see the refreshed synthesis.\n\n```\nYou  -\u003e  /meeting-bots:meeting \"I want to launch a SaaS. Where do I start?\"\n\nChair -\u003e Product team. boss, pusher, rookie, watcher, cynic. OK?\n\nYou  -\u003e  ok\n\nChair -\u003e Transcript: ./meeting-saas-launch.md\n         Framing recorded.\n         Round 1 recorded.\n         Round 2 recorded.\n         Round 3 recorded.\n\n         Final synthesis:\n         [Boss, full text, up to 500 words]\n\n         Tokens: 112,845 in / 7,355 out, cost ~0.8604 USD (estimated)\n         Full debate: ./meeting-saas-launch.md\n\n         Want to push an angle or are you good?\n\nYou  -\u003e  But I have no distribution yet.\n\nChair -\u003e Iteration 2 recorded, synthesis below:\n         [Boss, updated call]\n\n         Tokens: 38,412 in / 2,980 out, cost ~0.2987 USD (estimated)\n\nYou  -\u003e  ok\n\nChair -\u003e Meeting closed. Full debate: ./meeting-saas-launch.md\n```\n\nOpen the file to see the Boss's round 0 framing, every persona's round 1 opening, round 2 rebuttals (with the Boss's challenges), round 3 closings, and the final synthesis. The console is the executive summary, the file is the record.\n\n### Token report\n\nAt the end of each synthesis, a `## Token report` table is appended to the transcript with a per-persona row (model, calls, input total, fresh/cache-write/cache-read breakdown, output, estimated cost in USD) plus a totals row. A one-line summary (`Tokens: 99,586 in / 7,527 out, cost ~0.7725 USD (estimated)`) is printed to the console alongside the synthesis. Iterations get their own report.\n\n- **Input total is the real volume**, not just fresh input. Most of a meeting's input sits in the prompt cache (persona prompts, prior rounds). The report sums fresh + cache writes + cache reads.\n- **Cost is estimated** from Anthropic public pricing (Opus 4.7 for `-boss`, Sonnet 4.6 for the rest). Claude Code does not currently forward its own cost figure through the hook payload, so the table is a calculated estimate.\n\nNo network calls, no telemetry leaves your machine. Hook internals are documented in [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## Extend the plugin\n\nShip a new persona, a whole new team, or tweak the hooks: see [CONTRIBUTING.md](./CONTRIBUTING.md) for the file layout, frontmatter rules, and style guardrails.\n\n## Example output\n\nFull meetings in the `examples/` folder, each produced by the exact command shown:\n\n**[`examples/rest-or-push.md`](./examples/rest-or-push.md)** (English, 3 agents, life team)\n\n```\n/meeting-bots:meeting \"I have two weeks off coming up. Should I rest, or push hard on my side project?\" --agents life-boss,life-pusher,life-cynic\n```\n\nMinimal lineup on a binary life decision. 10 Agent calls, $0.71 estimated cost.\n\n**[`examples/vibe-code-saas.md`](./examples/vibe-code-saas.md)** (English, 5 agents, dev team auto-detected)\n\n```\n/meeting-bots:meeting \"I want to vibe code a SaaS end-to-end: a simple invoicing tool for freelancers who hate Stripe's dashboard. I'll direct the AI but I'm not a pro dev. Before I write a line, help me plan: what technical constraints to lock in upfront, what to build first, where I need to make the call myself rather than let the AI decide, and how I avoid the 'works on my laptop, dies in prod' trap.\"\n```\n\nFull default team, auto-detected dev, realistic non-dev-founder scenario. 16 Agent calls, $0.87 estimated cost.\n\n**[`examples/freelance-transition.md`](./examples/freelance-transition.md)** (English, 5 agents, cross-team business + life)\n\n```\n/meeting-bots:meeting \"I want to go freelance this year. How do I line up my first clients and my finances without burning out?\" --agents business-boss,business-pusher,life-rookie,business-watcher,life-cynic\n```\n\nMixed lineup: business-boss decides, life-rookie and life-cynic keep the burnout question alive while business voices handle pipeline, entity, and contracts. 16 Agent calls, $0.75 estimated cost.\n\n## License\n\nMIT. Do what you want, no warranty.\n\n## Credits\n\nBuilt by [Karl Certa](https://github.com/karl-cta). Inspired by every meeting where the quiet person turned out to be right.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarl-cta%2Fmeeting-bots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarl-cta%2Fmeeting-bots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarl-cta%2Fmeeting-bots/lists"}