Playbook (Information-first / Conversion-first)¶
Overview¶
The Playbook decides how proactively the agent steers a visitor toward a demo. It is a single per-client setting — behavior.playbook — with two values:
| Value | UI label | Posture |
|---|---|---|
information (default) |
Information-first | Answer thoroughly and let visitors self-serve; offer a demo only when they are clearly ready or ask for one. |
conversion |
Conversion-first | Act as an SDR — build interest, keep answers non-terminal, and guide qualified visitors toward a demo. |
The playbook shapes when the demo CTA (👇) fires and how buyer-intent answers are written. It does not change what the agent knows or which facts it retrieves.
How It Works¶
Information-first (default)¶
- Demo timing follows
behavior.demo_timing(defaultinterest_score): the demo is offered once the accumulated interest score crosses the client threshold. - No selling shape is injected — answers are complete and can end cleanly.
- Standard response-ending skills (
demo_offer,context_gathering,clean_ending).
Conversion-first¶
- Demo timing is forced to
readiness_judgeregardless of the storeddemo_timing— the score floor pitches too early for an SDR motion (get_demo_timing). - Lower, turn-aware demo floor so a genuine buying signal converts without waiting several turns: turn 1 requires strong intent (
CONVERSION_TURN1_INTEREST_FLOOR = 4), turns 2+ useCONVERSION_INTEREST_FLOOR = 2. conversion_sellinganswer-shaping skill is injected on LEARN/CONTEXT buyer turns (_inject_conversion_selling): value → grounded reframe → forward-step (SPIN discovery question), no fabricated numbers.- Hidden skill variants resolve from the playbook flag (
skill_registry):demo_offer→demo_offer_conversion(demo-first),context_gathering→context_gathering_conversion(SPIN discovery). - Pacing guards prevent nagging:
- Pre-demo discovery hold — the first auto-pitch is held through turns 2–3 so discovery runs first (
is_conversion_predemo_discovery). - Cadence cap — no automatic re-pitch two turns running (
is_conversion_cadence_skip). - Explicit
BOOKINGintent bypasses both — an on-demand "book a demo" always converts.
- Pre-demo discovery hold — the first auto-pitch is held through turns 2–3 so discovery runs first (
Configuration¶
Set on the Brand & tone screen (Config Studio) under Playbook, or via the CLI:
Staff / playground override¶
The playground exposes a per-request override so staff can preview either playbook without a config write. It is read from localStorage['rose_preprod_playbook_override'] and sent as the playbook field on the chat request. Production widget traffic ignores it — real visitors always resolve from client config.
# rose-chat (no config write)
rose-chat "<buying question>" --site <domain> --env staging --config behavior.playbook=conversion
Backward compatibility¶
The field was renamed from sales_motion and its values from self_serve/sales_led (IX-4119). Stored client overrides still carrying the old key/values are coerced on read by the resolver — self_serve → information, sales_led → conversion — so no data migration is required. The request field and playground also still accept the legacy values.
Key Files¶
| File | Purpose |
|---|---|
schemas/configs/website/behavior.schema.json |
playbook config field |
ixchat/utils/agent_config.py |
get_playbook, get_demo_timing (forces judge for conversion) |
ixchat/utils/demo_proposal.py |
turn-aware floor, is_conversion_cadence_skip, is_conversion_predemo_discovery |
ixchat/nodes/skill_applier_rules.py |
_inject_conversion_selling, _rule_force_context_gathering_for_conversion, _rule_suppress_demo_repitch |
ixskills/ixskills/skill_registry.py |
resolves *_conversion skill variants from the playbook flag |
ixconfig/ixconfig/resolver.py |
legacy sales_motion → playbook normalizer (shim) |
prompts/website-agent/skills/**/{conversion_selling,demo_offer_conversion,context_gathering_conversion} |
conversion-first skills |
Related¶
- Interest Signals — the score that gates the demo under
informationtiming. - Demo-offer timing analysis — why
conversionuses the readiness judge instead of the score floor.