All workflows

Test ad drafts against your buyer personas before you spend

Asks Jev whether each buyer persona would stop for, understand and believe each ad draft, ranks the drafts, and saves the grid in Notion.

Outcome

  • A grid of every ad draft against every persona, with the probability that the persona stops, understands the offer and believes the claim.

  • The drafts ranked for each persona, with the ones no persona would stop for marked to cut and the ones that stop people without making the offer clear marked to rewrite.

  • A Notion page with the grid and the ranking.

How it works

  1. 1

    Ask the panel

    TypeSafe AI

    For each pair of a draft and a persona, send the persona's description, channel and the draft as the state, with a noul stops (this person would stop scrolling for it), a noul understands_offer (after one read they could say what is offered), a noul believes_claim (they would believe the main claim) and a noul feels_like_them (it speaks to their situation). Keep the four probabilities for every pair.

  2. 2

    Rank the drafts

    Your agent

    Show the user the pairs whose stops or understands_offer is unsure, and keep what the user decides. For each persona, rank the drafts by stops, breaking ties by understands_offer. Mark the drafts whose stops is no for every persona to cut, and the ones whose stops is yes while understands_offer is no to rewrite.

  3. 3

    Save the report

    Notion

    After the user approves, create a page under report_parent, found with a read-only Notion search, with the grid, the ranking for each persona and the drafts to cut.

You'll be asked for

  • The ads to test, each with a short name, its headline and its body

    e.g. speed: "Launch campaigns in minutes"; proof: "How Globex cut churn 18%"

  • Your buyer personas, each a few lines on who they are, what they care about and what they are tired of hearing

    e.g. ops_lead: runs sales operations at a 200-person company, measured on forecast accuracy, ignores "AI-powered" claims

  • Where the ads will run

    e.g. LinkedIn feed

  • How sure Jev must be before its answer is used without you

    e.g. 0.8; a yes-or-no answer counts as yes at or above it and as no at or below 1 minus it

  • The Notion page the report goes under, by name

    e.g. Ad tests

The file your agent runs

ad-persona-panel.md

Test ad drafts against your buyer personas before you spend

Asks Jev whether each buyer persona would stop for, understand and believe each ad draft, ranks the drafts, and saves the grid in Notion.

Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.

Outcome

  • A grid of every ad draft against every persona, with the probability that the persona stops, understands the offer and believes the claim.
  • The drafts ranked for each persona, with the ones no persona would stop for marked to cut and the ones that stop people without making the offer clear marked to rewrite.
  • A Notion page with the grid and the ranking.

Inputs

Ask the user for these before you start.

  • ad_drafts: the ads to test, each with a short name, its headline and its body, e.g. speed: "Launch campaigns in minutes"; proof: "How Globex cut churn 18%"
  • personas: your buyer personas, each a few lines on who they are, what they care about and what they are tired of hearing, e.g. ops_lead: runs sales operations at a 200-person company, measured on forecast accuracy, ignores "AI-powered" claims
  • channel: where the ads will run, e.g. LinkedIn feed
  • min_confidence: how sure Jev must be before its answer is used without you, e.g. 0.8; a yes-or-no answer counts as yes at or above it and as no at or below 1 minus it
  • report_parent: the Notion page the report goes under, by name, e.g. Ad tests

Set up

Answer typed questions (TypeSafe AI, tool:typesafe/answer-typed-questions)

Use the API.

Note: Put every question about one record in one request. GET /v1/models lists the models and is the cheapest check of a key; a request over the rate limit gets a 429 with a Retry-After header.

Note: Send state, model (jev-latest) and named questions, each with type, instructions and criteria: a choice maps labels to descriptions, a score lists its levels in order, a noul's is optional. Read a score by its most likely level; send unsure answers to a person.

Create a page (Notion, tool:notion/create-page)

Use the first option your agent supports.

Note: To add a row to a database, set the parent to its data source and match that data source's property schema.

MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

{ "mcpServers": { "notion": { "url": "https://mcp.notion.com/mcp" } } }

Call the MCP tool notion-create-pages.

CLI (official)

Install the command, then confirm it runs.

npm install --global ntn
ntn --version

Run ntn api v1/pages.

Set $NOTION_API_TOKEN in your environment first (get a key: https://www.notion.so/developers/tokens).

Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.

Steps

  1. Ask the panel with Answer typed questions (TypeSafe AI). For each pair of a draft and a persona, send the persona's description, channel and the draft as the state, with a noul stops (this person would stop scrolling for it), a noul understands_offer (after one read they could say what is offered), a noul believes_claim (they would believe the main claim) and a noul feels_like_them (it speaks to their situation). Keep the four probabilities for every pair.
  2. Rank the drafts yourself. Show the user the pairs whose stops or understands_offer is unsure, and keep what the user decides. For each persona, rank the drafts by stops, breaking ties by understands_offer. Mark the drafts whose stops is no for every persona to cut, and the ones whose stops is yes while understands_offer is no to rewrite.
  3. Save the report with Create a page (Notion). After the user approves, create a page under report_parent, found with a read-only Notion search, with the grid, the ranking for each persona and the drafts to cut.

Notes

The panel narrows the drafts before you spend on them; it does not replace a live test. Spend on the drafts that rank well for the persona you are buying, and use the live results to rewrite the persona descriptions, since those descriptions are what Jev judges against.

Each draft-and-persona pair is one request with four questions, so a grid of 20 drafts and 5 personas is 100 requests.

Rules

  • Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
  • Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
  • Never print API keys.