Strategy engine
How Strategise works.
Brand truths × audience archetypes × live signals → targeted PR, marketing and social briefs. This page walks through the model, the workflow, and the things that catch people out.
Quick start
The fastest path from nothing to a pitchable brief:
- Add a brand — paste a prospect URL into the Discover panel. Claude reads their homepage + about/story pages and scaffolds the full profile. Hit Save.
- Tag personas. On the brand page → Personas tab → Suggest personas with Claude. It proposes 2–4 distinct audiences, reuses existing ones where they fit, creates new ones otherwise. Bulk-apply and brand-specific nuance is pre-drafted on every link.
- Generate a brief. /briefs/new → pick the brand + personas + purpose (new business / campaign / quarterly / launch / crisis / content). Leave Adversarial pass on. ~75s.
- Use it. Save as PDF for the pitch deck. Push to Actions to turn the 90-day plan into cards in chapter-actions.
The data model
Three primary entities, each strictly globally-scoped. Per-pairing nuance lives on the join, not on the entity.
Brands — clients, prospects, internal
Audience personas — reusable archetypes
Brand × persona links — where the nuance lives
Signals — evidence
Strategy briefs — the output
Profile evolutions — the audit log
How the personas always learn
Personas evolve as evidence accumulates. There are two pipelines feeding the learning loop:
1. Internal pipeline (the Chapter instance only)
On the Chapter instance, cross-tool syncs pull signals from the other live Chapter Tools (on demand from /learn → Pull signals, and overnight):
- Newsroom — journalist moves, outreach outcomes per client
- Actions — recent live work per client
- Grid — social engagement per client
For these to wire to a brand, each brand needs the matching slug field set: newsroom_client_slug, actions_client_slug, grid_client_slug. Edit the brand to set them. (Newsbeat is supported but dormant until a live feed endpoint is configured; standalone instances like Earl skip this pipeline entirely.)
2. External pipeline (the world the audience lives in)
On each persona page there's a Sources section. Track the IG handles, RSS feeds, Substacks, Google News queries and websites this audience actually pays attention to. Click Suggest sources with Claude to get ~15 specific suggestions in one shot — tick/untick, bulk-add.
Each source is scraped daily. Items become signals tagged to that persona. The learning loop digests them and proposes profile updates with rationale and citation back to the source.
3. Quick Capture (the working context)
The richest intelligence lives in your emails, strategy chats and call notes — but raw-ingesting all of that would flood the signal feed with noise. So instead: paste it in. Quick Capture(also on each brand’s Signals tab) takes an email thread, chat excerpt or rough notes, and Claude distils only the strategy-relevant bits into clean signals tagged to the brand. You review and approve before anything is saved. You’re the filter; Claude does the extraction. If the material contains a durable document (a PR strategy, a glossary), it’ll suggest you add it as a Reference instead.
The loop itself
On /learn:
- Pull signals — runs all syncs + scrapes all sources
- Process signals — Claude reads what's accumulated, groups by brand, proposes evidence-backed profile updates
- You review each proposal with its rationale + signal citations, approve or reject
- Approved updates apply to the profile; profile versions bump
Brief generation
Briefs draw on the full strategic picture: the brand profile, every tagged persona (with its brand-specific nuance), recent signals from all sources, and — if you've set newsroom_specialism_slugs on the persona — named journalists from the Newsroom CRM.
Adversarial pass
Default on. Adds ~30s to generation. After the first draft, a second Claude call reads it like a senior editor — hunting agency clichés, generic phrasing, hedging, missing specificity — and rewrites the weak parts shorter and sharper. The model name on the brief tags with (adversarial) so you can tell sharpened briefs apart.
Suggested journalists
On each persona, set newsroom_specialism_slugs — the specialism slugs from your Newsroom CRM (e.g.travel-lifestyle, rural-affairs, sustainability). When you generate a brief for a brand tagged with that persona, the brief includes named journalists from Newsroom covering those beats, each with a pitch angle. No other agency tool produces this — it's only possible because the data sits next to your live journalist database.
Save as PDF
Cmd+P or click Save as PDF on any brief. The print stylesheet renders a Chapter-branded cover page (title + exec summary + prepared-for + date), then the brief body with proper page breaks. Drops cleanly into a pitch deck.
Push to Actions
Closes the loop from strategy to execution. Walks the brief's 90-day plan, creates one planned card per item in chapter-actions under the brand's actions_client_slug. Channels (PR / Social / Email / Web / Events) are inferred from the item text. Cards link back to the brief.
Cross-tool integration
Strategise lives alongside Newsroom, Newsbeat, Grid, Actions, Pulse and Vision. To wire a brand into the family, set its slug fields:
newsroom_client_slug— Newsroom client identifieractions_client_slug— Actions client identifiergrid_client_slug— Grid client identifier
Without these, syncs and push-to-Actions silently skip the brand (better than creating orphan records). All four tools share a Supabase project, so reads and writes are direct.
Things that catch people out
"Devon, not Oxfordshire"-style mistakes
When you draft a brand from a name, Claude can guess wrong about locations. The form now requires hq_location, and the draft-from-name prompt is instructed to leave it blank rather than invent. Prefer Draft from URL — it scaffolds from real content, not speculation.
URL discovery failures
Some sites block cloud IPs at the CDN. Strategise tries a direct fetch first (Chrome-like User-Agent), then falls back to Apify's residential-proxy crawler if direct fails. If both fail you'll see a specific reason — not just "could not fetch".
Personas don't show up across brands
They do — personas are global. If you've just created one on Brand A and don't see it on Brand B, hard-reload Brand B (⌘⇧R) to clear the soft-navigation cache.
Brief generation is slow
With adversarial pass on, briefs take ~75s (45s draft + 30s critique). That's by design. Turn it off if you're iterating quickly and re-run with it on before sharing.
Domain status
App runs at chapter-strategise.vercel.app. Custom domain strategise.chaptercommunications.co.uk pending Darren's CNAME (DNS-only, target cname.vercel-dns.com).
Built by Neil + Claude. Source: github.com/chaptercomms/chapter-strategise.