The flow
- Upload source materials — N free-form text blobs, each with a title
- Generate a draft — async job synthesizes them into one markdown playbook
- Review — read the draft, request more if you want
- Publish — promote to the org’s active playbook (auto-applied to every future analysis)
When to use this
Good fits
- Onboarding a new partner — turn their existing collateral into a Parlay-formatted playbook
- Refreshing an outdated playbook — feed in recent top-performer call notes
- Generating role-specific playbooks (SDR vs AE vs CSM) from segmented inputs
When to skip
- You already have a polished playbook in markdown — use
create_playbookinstead - You want to fine-tune the playbook prose word-by-word — generate, then
update_playbookto edit - The org has zero source material — the model needs something to synthesize from
Step 1 — Upload source materials
Step 2 — Kick off the draft
Step 3 — Poll until complete
status === "completed":
generated_content is the full markdown playbook, ready to publish.
Step 4 — Review and publish
If the draft looks good:- Inserts the
generated_contentinto theplaybookstable as version 1, is_active=true - Marks the draft as
published, setspublished_playbook_id - Fires a
playbook.publishedwebhook - Returns
{ playbook_id, draft_id, published: true }
demo-acme automatically uses this playbook in the analysis prompt.
Don’t like the draft?
You have a few options:- Generate a new draft with different sources or a different combination
- Edit the draft externally, then
create_playbookdirectly with your edited content (skippingpublish_playbook_draft) - Publish anyway, then
update_playbookto edit the content. This bumps the playbook version and snapshots history.
Doing this from MCP
upload_playbook_source (×2), generate_playbook_draft (auto-polls), shows you the preview, and (if you confirm) calls publish_playbook_draft.
Cost + latency
| Operation | Cost | Latency |
|---|---|---|
upload_playbook_source | $0 | under 1s |
generate_playbook_draft | ~0.05 | 15–30s typical, up to 3 min worst case |
publish_playbook_draft | $0 | under 1s |
What happens to the previous active playbook?
publish_playbook_draft does not automatically deactivate older playbooks. If you want only the new one active, follow up with:
publish_playbook_draft to deactivate other active playbooks atomically.
