Skip to content

PeachStateAI/Coldread

Repository files navigation

Coldread

A reaction panel that runs before you spend. 510 specific Americans react to your ad. You ship the version they wouldn't roll their eyes at.

Built by PeachStateAI (Newnan, GA). Open repo, transparent costs, ~$0.40 per run on the full panel.

The people. Mike Donovan the 34-year-old plumber from Toledo. Curtis Reed the Wisconsin electrician with the lake house. Tasha Darnell the Memphis ER nurse. Each one a particular human with a job, a region, a politics, a religion, a voice — built from U.S. Census-matched profiles across occupation, region, age, race, religion, and political lean, then hand-written and reviewed against the demographic targets. Browse them in personas/americans/ — one Markdown file per person, readable directly on GitHub.

git clone https://github.com/PeachStateAI/Coldread
cd Coldread && bun install && bun run build
export ANTHROPIC_API_KEY=sk-ant-...   # your key, your account — your asset never touches our servers
./dist/coldread run my-ad.txt --panel americans

In ~5 minutes you get back: how each of 510 specific Americans reacted, who scored it highest, who hated it, the recurring objections, and the edits that close them.

What you get back

A real example — one ad copy, one panel, one terminal:

=== reaction summary: "30-day free trial — no credit card needed" ===
avg score: 6.8/10   •   would act: 52%
sentiment: love 8%   like 51%   neutral 26%   dislike 13%   hate 2%

TOP RESPONDERS
  9/10  Curtis Reed (electrician, Green Bay WI)
        "No card up front means I'll actually try it. That's the whole game."
  8/10  Tasha Darnell (ER nurse, Memphis TN)
        "Free trial without a card is rare enough I'd tell my sister."

BOTTOM RESPONDERS
  2/10  Walt Finch (retiree, rural PA)
        "If it's free, what are they really after? I've been around the block."
  3/10  Trinity Bell (stylist, Baltimore MD)
        "Trial of what? Tell me what it does before you tell me it's free."

OBJECTIONS
  - 'Free trial' reads as low-trust to ~30% of the panel; anchor it to a number or a person
  - No mention of what happens on day 31 — six panelists asked the same question
  - Working-class panelists want one sentence on what the product does before the offer

RECOMMENDATIONS
  1. Lead with the outcome, not the offer ('Cut your monthly invoicing time in half — 30 days free, no card')
  2. Add a one-line guarantee for day 31 ('cancel in one click, no email, no call')
  3. Move the offer below the value prop, not above it

Plus the same data on disk as CSV, JSON, and Markdown for anything downstream.

What it actually is

You hand it a marketing asset and a panel. It returns a structured reaction.

  • americans panel (the default) — 510 hand-written Americans, bundled in the binary, each a particular person with a job, a region, a politics, a religion, a voice. Built from U.S. Census-matched profiles across occupation, region, age, race, religion, and political lean, then written one-by-one and reviewed against the demographic targets — open the folder and read them. Every person is one Markdown file in personas/americans/.
  • Audience mode — describe an audience in one sentence, get 100 auto-generated archetypes × 10 variant personas = 1,000 reactions. Use when you want population-level breadth instead of named individuals.
  • Hybrid — Americans panel + auto-generated archetypes in one run. Specific people for the qualitative read, broad archetypes for the statistical shape.
  • Custom panels (advanced) — yes, you can drop your own JSON or YAML in .coldread/panels/ if you want to use your customer list, ICP, or kids' soccer parents. But most users will never need to. The bundled panels are the product.

The output is a structured run on disk. CSV for spreadsheets, Markdown for docs, JSON for downstream tools. Plus a synthesized verdict: top-line, themes, objections, ranked edits.

Three ways to use it

Ships as a compiled CLI binary, an MCP server, and a Next.js web UI — pick whichever fits your loop. All three run locally and call Anthropic with your key; we never see your asset, your reactions, or your bill.

Surface When
CLI (coldread) scripts, CI, fast local feedback while you write copy
MCP server (coldread-mcp) inside Claude Code, Codex, Claude Desktop, or any MCP-speaking agent — iterate on copy and re-run mid-conversation
Web UI (bun run web) local browser, paste asset, pick panel, hit run, export the report

Per-client install — Claude Code, Codex, Claude Desktop, generic stdio → docs/INSTALL.md

Cost

Approximate, current Anthropic pricing (Haiku 4.5 inner loop with prompt caching, Sonnet 4.6 archetype gen + judge):

Run Reactions Time Cost
Quick check (10-person panel) 10 ~20s ~$0.05
Full Americans panel 510 ~5m ~$2.00
Audience 100 × 10 (default) 1,000 ~3m ~$1.50
Hybrid Americans + audience 1,510 ~8m ~$3.50

The coldread preview command shows estimated cost and time before you spend a cent.

./dist/coldread preview my-ad.txt --panel americans
# → 510 reactions, ~5m, ~$2.00

Browse the panel

Each of the 510 Americans is one readable Markdown file in personas/americans/. You can click any name on GitHub and read who they are before you run anything.

A taste:

Person Role Region
Mike Donovan plumber Toledo, OH
Curtis Reed electrician Green Bay, WI
Tasha Darnell ER nurse Memphis, TN
Officer Walsh police officer Cincinnati, OH
Dr. Priya Shah cardiothoracic surgeon Boston, MA
Amos Ng public defender San Francisco, CA
Trinity Bell hair stylist Baltimore, MD
Brian Tate shift foreman southern MI
Caleb Walsh row-crop farmer central IA
Nia Blackelk tribal court clerk Pine Ridge, SD
…104 more in the folder

Or from the CLI:

coldread panel show americans

Quick start — CLI

# the fast path
coldread run my-ad.txt --panel americans

# preview the cost first
coldread preview my-ad.txt --panel americans

# audience mode — auto-generate from a description
coldread run my-ad.txt --audience "early-stage B2B founders evaluating dev tools"

# hybrid — your specific people + breadth
coldread run my-ad.txt --panel americans --audience "broader US adults"

# inspect a past run, export it
coldread show <run-id>
coldread export <run-id> --format md   # or json, csv

Quick start — MCP

Once the binary is registered with your agent (per-client setup → docs/INSTALL.md), the agent gets these tools:

Tool What it does
run_simulation Run a panel/audience/hybrid simulation against an asset
preview_simulation_cost Estimate cost + time before spending
define_panel Save a panel of specific people for reuse
list_panels / get_panel Inspect saved panels
list_runs / get_run Browse past runs
sample_reactions Drill into reactions, filter by person/sentiment/archetype
list_seed_archetypes See the calibration library

Example prompt to your agent:

Run Coldread against this email using the americans panel. Pull the three angriest quotes and tell me what they had in common.

Quick start — Web UI

npm install
npm run dev
# → http://localhost:3000

A Next.js app: paste your Anthropic API key — it lives in your browser's localStorage, rides along with each simulate request, and is never persisted server-side. Your asset goes from your browser to Anthropic and the reaction comes back; we don't store, log, or see any of it. Pick a panel, watch the cost preview update live, hit run, export the report as Markdown / JSON / CSV.

To deploy the same UI to Vercel see docs/DEPLOY.md. Two commands and you're live.

Architecture

                ┌──────────────────────────────────────────────┐
                │  agent (Claude Code / Codex / Hermes / …)    │
                └────────────────────┬─────────────────────────┘
                                     │ MCP (stdio)
                       ┌─────────────▼─────────────┐
   browser ─── HTTP ─── │  dist/      │ ── Anthropic API
   CLI     ─── direct ──│  audience / coldread-mcp  │
                       └─────────────┬─────────────┘
                                     │
                ┌────────────────────▼─────────────────────────┐
                │  src/core/                                   │
                │  ├─ archetype-gen   (Sonnet 4.6)             │
                │  ├─ person-react    (Haiku 4.5)              │
                │  ├─ archetype-react (Haiku 4.5, batched/cached)│
                │  ├─ judge           (Sonnet 4.6)             │
                │  └─ panel.ts        (load JSON/YAML)         │
                └──────────────────────────────────────────────┘

Two-tier persona model means a 100×10 = 1,000-reaction audience-mode run is ~100 API calls, not 1,000. Panel mode batches 8 members per call — a 510-person Americans run is ~64 calls. Prompt caching keeps the asset cheap across the inner loop.

Project layout

Coldread/
├─ README.md                          you are here
├─ docs/
│  ├─ INSTALL.md                      multi-client MCP setup
│  └─ DEPLOY.md                       Vercel deploy guide
├─ personas/                          ← THE PEOPLE (one .md file per person, browseable on GitHub)
│  ├─ README.md
│  ├─ build.mjs                       compiles .md files → embedded JSON at build time
│  └─ americans/                      510-person default panel
│     ├─ README.md                    table of contents linking to every person
│     ├─ panel.json                   panel metadata
│     ├─ mike-donovan.md              one person, one file
│     ├─ curtis-reed.md
│     └─ … (112 more)
├─ app/                               Next.js App Router (web UI)
│  ├─ page.tsx                        the main UI
│  ├─ layout.tsx
│  ├─ globals.css                     peach palette, Fraunces + Inter + JetBrains Mono
│  └─ api/{panels,panel,preview,simulate}/route.ts
├─ src/                               engine
│  ├─ cli/index.ts                    coldread CLI entrypoint
│  ├─ mcp/index.ts                    coldread-mcp entrypoint
│  └─ core/                           simulate, panel, judge, storage
├─ next.config.ts
├─ vercel.json                        maxDuration: 300 on /api/simulate
├─ package.json
└─ .claude/skills/marketing-sim/      optional Claude Code slash-command skill

Built by PeachStateAI

An Applied AI Firm based in Newnan, Georgia. We diagnose where money is leaking in mid-market commercial businesses, build the AI-native systems that stop the leaks, and operate them until they compound.

Coldread is one such system. We use it on our clients' marketing every week. The repo is open. The panel is open. The cost model is transparent. The bar is: it should be useful before you finish your coffee.

peachstateai.com · hello@peachstateai.com

Acknowledgements

  • Audience packs (one-click presets like "Tech professionals", "College students", etc. above the audience input) were proposed by @sebasfresco. Thanks Sebastian.

License

MIT

About

A reaction panel that runs before you spend. 114 hand-written Americans react to your marketing copy and tell you what works, what doesn't, and what to change. From PeachStateAI.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors