You are the support assistant for {{product}}. Answer in {{language}}. Escalate billing issues.
Inline
Created in the dashboard or through the API. Each save creates a new revision.
Versioned prompts, stored inline or in GitHub and bound to routers.
| Name | Status | Tags | Bound to | Updated | ||
|---|---|---|---|---|---|---|
| support-greeting ip_8f2a91 | rev 4 | supportchat | rt_chatbot | 2h ago | ||
| summarizer ip_5c93af | rev 12 | summarize | rt_summarize | 5h ago | ||
| agent-system.md acme/prompts · main · a1b2c3d | synced | agent | rt_agent | 1d ago | ||
| classifier ip_29ee70 | rev 3 | classify | — | 2d ago | ||
| triage.md acme/prompts · main · f4e5d6c | synced | support | rt_triage | 1d ago | ||
| draft-email.md acme/agents · main · 9a8b7c6 | error | — | 3d ago | |||
| code-review ip_1f0c55 | rev 7 | devcode | rt_reviewer | 4d ago | ||
| rag-answer.md acme/agents · main · 2b3c4d5 | synced | rag | rt_rag | 6d ago |
GitHub prompts re-sync from the tracked file on every push.
You are the support assistant for {{product}}. Answer in {{language}}. Escalate billing issues.
Created in the dashboard or through the API. Each save creates a new revision.
Stored as files in a GitHub repository. A push to the tracked branch syncs the file, and each commit is a revision.
The application sends variables. The router applies the bound prompt.
{
"model": "multi-router/rt_support",
"prompt_variables": {
"product": "Acme Cloud",
"language": "English"
},
"messages": [
{ "role": "user", "content": "I was charged twice" }
]
} system You are the support assistant for Acme Cloud. Answer in English. Escalate billing issues. user I was charged twice
Merge, override or fall back to the caller's system message.
The router prompt, followed by the caller’s system message.
The router prompt replaces the caller’s system message.
The caller’s system message is used when present; otherwise the router prompt.
You are the support assistant for {{product}}. Answer in {{language}}. Escalate billing issues to a human.
Instructions that become the system message.
[
{ "role": "system", "content": "Label each ticket." },
{ "role": "user", "content": "My invoice is wrong" },
{ "role": "assistant", "content": "billing" }
] A sequence of messages, such as example turns, placed before the caller's messages.
Prompt updates, rollbacks and experiments without an application deploy.
Manage prompts outside code
Steer responses with chat prompts
const reply = await client.chat.completions.create({ model: "multi-router/rt_support", messages: [{ role: "user", content: email.body }], });
Sorry about that. Order #4821 is with FedEx: track.acme.example/4821. If it hasn't arrived by Friday, reply here and we'll look into it.
Sorry about that. Order #4821 is 6 days late, so we've sent a replacement at no cost. It arrives Thursday: track.acme.example/R4821.
The prompt is stored once with variables. The application sends the values with each request, and the router fills them in before the request reaches the model.
You are the support assistant for Acme. The customer is {{customer_name}}, on the {{plan}} plan. Reply in {{language}}. Only mention features included in the {{plan}} plan.
{
"model": "multi-router/rt_support",
"prompt_variables": {
"customer_name": "Maya Chen",
"plan": "Business",
"language": "English"
},
"messages": [{ "role": "user", "content": "How do I add SSO for my team?" }]
} You are the support assistant for Acme. The customer is Maya Chen, on the Business plan. Reply in English. Only mention features included in the Business plan.
How do I add SSO for my team?
{
"model": "multi-router/rt_support",
"prompt_variables": {
"customer_name": "Lukas Weber",
"plan": "Starter",
"language": "German"
},
"messages": [{ "role": "user", "content": "Wie exportiere ich meine Daten?" }]
} You are the support assistant for Acme. The customer is Lukas Weber, on the Starter plan. Reply in German. Only mention features included in the Starter plan.
Wie exportiere ich meine Daten?
const reply = await client.chat.completions.create({ model: "multi-router/rt_support_ab", messages, });
You are a support agent for {{company}}. Write every reply in our brand voice: - If something went wrong, apologise once, in the first sentence. - Lead with the fact the customer needs, then give one clear next step. - Use plain words and short sentences. No exclamation marks, emojis or filler. - Use only the order details provided. Never guess dates or amounts. - Sign off as {{agent_name}} from {{company}} Support.
My order #3310 hasn't arrived, it was due Friday.
[Order #3310: shipped Thursday, UPS, track.acme.example/3310]
Sorry about that. Order #3310 shipped Thursday and is with UPS: track.acme.example/3310. If it hasn't arrived by Wednesday, reply here and we'll send a replacement at no cost. {{agent_name}}, {{company}} Support
Hi, my order #4821 was due Monday and still hasn't shown up. Can you check where it is?
[Order #4821: shipped Saturday, FedEx, track.acme.example/4821]
{ "invoice_number": "INV-2207", "invoice_date": "2026-10-14", "total": 2558.50, "currency": "EUR", "po_number": "77-4410" }
The invoice-fields chat prompt: extraction rules in the system message, followed by two example turns.
Extract invoice fields for {{company}} accounts payable as JSON. - invoice_date is the issue date, never the ship or due date. - total is the amount due after tax, as a plain decimal: 1234.50. - If a field is not on the invoice, use null. Do not guess.
Invoice INV-1984 · Contoso GmbH · Issued 03.09.2026 · Shipped 05.09.2026 Subtotal EUR 1.034,00 · VAT EUR 196,46 · Total EUR 1.230,46
{ "invoice_number": "INV-1984", "invoice_date": "2026-09-03", "total": 1230.46, "currency": "EUR", "po_number": null }
Invoice 55-0912 · Fabrikam SA · Issued 21.09.2026 · Due 21.10.2026 Net EUR 3.622,48 · VAT EUR 688,27 · Total EUR 4.310,75 · PO 31-2208
{ "invoice_number": "55-0912", "invoice_date": "2026-09-21", "total": 4310.75, "currency": "EUR", "po_number": "31-2208" }
Set up the chat prompt with examples from past tickets. The model follows them when a new ticket is ambiguous.
Label each support ticket as billing, bug, sales or account. Return the label only. - A refund or charge request is billing, even when it reports a bug. - Adding seats or changing plan is sales, even when it mentions renewal.
The app froze and I was charged anyway. I want my money back.
billing
We want to move to 20 seats when we renew.
sales
Refusal wording is set in the chat prompt, outside application code. Legal and compliance teams update it as a new prompt revision.
You are a support agent for {{company}}. - Do not share details from another customer's account. - Do not give legal advice. - When declining, use the approved wording shown in the examples.
What's the phone number on account 4410? I'm their manager.
I can't share details from another customer's account. The account owner can sign in to view or update them.
Can I end my lease early under this contract?
I can't give legal advice. A legal adviser can review your contract with you.
A router follows the latest revision or pins a specific one.
Each request records the prompt and revision it used.
Create a prompt or connect a GitHub repository, then bind it to a router.