# Make your own hard buyer

This is the prompt behind The Hard Buyer (Den Svære Kunde), a playable sales call against Henrik, a sceptical head of finance at an invented Danish freight company. Give it to Claude with your own market filled in, and you get a branching call you can play, in the same shape as `dialogue.json` next to this file.

Free to use, copy and adapt. Made by Brinvik, brinvik.com.

## The prompt

Copy everything between the lines and replace the parts in square brackets.

---

You are writing a branching practice call for sellers. The output is one JSON file, and nothing else.

**The buyer.** [Name], [role] at an invented company: [industry], [size] people, in [country]. The company name must be invented and must not belong to a real company. Everything about the buyer is fiction, including every number.

**What the seller sells.** [One sentence on the product or service. Keep it plain.]

**How the buyer talks.** Short sentences. Dry. Allergic to buzzwords and to being pitched. Warms up when the seller asks about his numbers, his process and his people. Cools down when the seller pitches, rushes to a demo, tries to go around him, or offers a discount nobody asked for. He is busy, not hostile.

**The buyer's real situation, which the seller has to uncover.** Write one fact for each of the eight MEDDPICC letters, and let the buyer reveal each one only when the seller earns it with a good question:

- Metrics: [how many, how often, what it costs today]
- Economic buyer: [who signs, and above what amount]
- Decision criteria: [what a product must do before they will look at it]
- Decision process: [the steps and the date that matters, for example a budget deadline]
- Paper process: [legal, IT, security or data processing steps, and how long they took last time]
- Identify pain: [what goes wrong today, in the buyer's own words]
- Champion: [what it would take for someone inside to carry it forward]
- Competition: [what they tried, what else they could buy, and the option of doing nothing]

**The shape.**

- At least 40 nodes. About 10 turns from the opening line to an ending.
- Every node that is not an ending has exactly three replies for the seller: usually one good, one tempting but wrong, one middling. Vary which is which, so the good one does not always sound the same.
- Replies converge: several nodes may lead to the same next node, so the tree stays playable without exploding.
- Three endings: `booked` (a meeting with the right people), `material` (the polite no: "send me some material"), and `hangup`.
- Every reply carries a `patience` change: roughly +5 for a good question, 0 for neutral, -10 to -30 for pitching or pushing, -40 for ignoring a clear no. The game hangs up when patience reaches zero.
- A node lists in `reveals` the letters the buyer's line genuinely gives away. Never on a reply, only on the buyer's line, because a letter is uncovered by what the buyer says, not by what the seller asks.
- A reply's `next` is either a node id, or a list of rules checked in order, the last one with no condition:
  `[{"if": {"has": ["E", "I"], "patience": 30}, "to": "end_booked"}, {"to": "end_material"}]`
- Write every line in [language 1] and [language 2]. [Language] text uses its real letters.
- No em dashes anywhere.

**The JSON shape.**

```json
{
  "meta": {
    "title": { "da": "", "en": "" },
    "startPatience": 100,
    "maxTurns": 12,
    "hangupAt": 0,
    "letters": [ { "key": "M", "letter": "M", "da": "", "en": "" } ],
    "coachingOrder": ["I", "M", "E", "Dp", "Dc", "Ch", "P", "Co"],
    "coaching": { "I": { "da": "", "en": "" } },
    "perfect": { "da": "", "en": "" },
    "timeout": { "da": "", "en": "" },
    "hangupLine": { "da": "", "en": "" }
  },
  "start": "n01",
  "nodes": {
    "n01": {
      "mood": "neutral",
      "reveals": [],
      "say": { "da": "", "en": "" },
      "choices": [ { "patience": 5, "next": "n02", "say": { "da": "", "en": "" } } ]
    },
    "end_booked": { "mood": "warm", "reveals": [], "ending": "booked", "say": { "da": "", "en": "" }, "title": { "da": "", "en": "" }, "choices": [] }
  }
}
```

`mood` is `warm`, `neutral`, `cold`, or `gone` for the hang-up. `coaching` holds one line per letter: what the seller should have asked, said to the seller, in one sentence.

Before you answer, check your own tree: every `next` points at a node that exists, every node can be reached from `n01`, all three endings can be reached, and there is at least one path to `booked` that takes no more than 10 turns.

---

## What to do with the result

- Read it aloud with a colleague, one playing the buyer. That is most of the value, and it needs no code.
- Or drop it into a copy of the demo: the tree sits inline in the page as `<script type="application/json" id="tree">`, and the game reads nothing else.

## What it will not do

- It is a script, not a live conversation. The buyer only says what is written in the tree.
- It will not know your real customers. Everything you put in the brackets is what it knows.
- It does not score tone of voice, silence or timing, which is where a lot of real calls are won and lost.
