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:

  1. 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.
  2. 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.
  3. Generate a brief. /briefs/new → pick the brand + personas + purpose (new business / campaign / quarterly / launch / crisis / content). Leave Adversarial pass on. ~75s.
  4. 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

Every brand we work with or want to work with. Carries positioning, voice, comms goals, challenges, distinctive assets, sector, location, keywords and competitor handles. Status flags (client / prospect / lapsed / internal) tell you who's in active flight.

Audience personas reusable archetypes

"Heritage Day Tripper", "Luxury Event Planner","Sustainability-Curious Traveller". Globally available — once created, every brand can tag the same persona. Carries demographics, psychographics, media consumption, values, pain points, decision triggers, content preferences, trust signals and example quotes (verbatim things they'd say).

Brand × persona links where the nuance lives

When you tag a persona to a brand, that link carries brand-specific nuance, hooks, proof points, opportunity size, current/desired perception and priority (primary, secondary, tertiary). The base archetype stays clean and reusable; the strategy flexes per brand.

Signals evidence

Observations that feed the learning loop. Three real sources: (1) tracked web sources — Instagram, RSS, Substacks, Google News and websites, scraped live; (2) anything you log manually or via Quick Capture; and (3) on the Chapter instance only, cross-tool pulls from Newsroom (journalist moves + outreach outcomes), Actions (live work) and Grid (engagement). Standalone instances (e.g. Earl) use sources 1 and 2 only.

Strategy briefs the output

Brand × persona(s) × purpose → executive summary, body, recommendations split across PR / Marketing / Social / First-90-days / Hooks / Proof points / Risks / Suggested journalists.

Profile evolutions the audit log

Every time the learning loop proposes a change to a profile, it lands here for your approval. Status flows proposed → approved → applied (or rejected). Nothing changes silently.

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 identifier
  • actions_client_slug — Actions client identifier
  • grid_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.