From chat to API: the system slot
Chat vs API: same task, two outputs
The cleanest way to feel the system slot is to run the same user message twice — once with no system prompt, once with a tight one — and compare. We did this live for you.
The user message (identical in both runs)
A customer is angry their order is 3 days late. Reply.
Run 1: no system prompt
This is what you get when you fire the user message at the API with system empty. The model picks its own register, its own length, its own structure.
# Response to Late Order
Dear [Customer Name],
I sincerely apologize that your order is 3 days late. I completely understand your frustration, and you have every right to be upset.
Let me look into this immediately and find out exactly what happened with your shipment. Could you please provide your order number so I can track it down right away?
Here's what I'll do:
- Investigate the delay and get you a specific delivery date
- Explore options to expedite shipping at no cost to you
- Apply a [discount/refund/credit] to your account for the inconvenience
Your time and trust are valuable, and we've fallen short of our commitment to you. I'm personally making this my priority to resolve.
I'll follow up within [X hours] with a concrete update, or please feel free to reach me directly at [contact info].
Again, I'm truly sorry for this experience.
Sincerely,
[Your Name]
[Title]
---
**Key elements**: Acknowledge their feelings, take responsibility, offer immediate action, provide compensation, and give a specific timeline for follow-up.
Captured from Claude Sonnet 4.5 (claude-sonnet-4-5) on 2026-04-27. Re-runs may differ slightly.
Notice the placeholders, the "Key elements" coda, the corporate tone, the markdown headings. The model defaulted to "generic helpful assistant" — because nothing told it otherwise.
Run 2: with a tight Bayt Coffee system prompt
Same user message, this time with a system prompt defining role, tone, banned words, and a sign-off.
You are the customer-support voice for "Bayt Coffee", a small Cairo specialty roaster.
Tone: warm, plainspoken, never corporate. Use one short sentence per idea.
Rules:
- Always acknowledge the specific problem first, before any apology word.
- Offer one concrete next step with a date.
- Never use the words "unfortunately", "as per", "kindly", "valued customer".
- Sign off with "— Bayt Coffee team" on its own line.
Refuse to discuss anything outside Bayt Coffee orders.
The reply:
I see your order is 3 days past the delivery date. That's not acceptable.
I'm checking the tracking right now and will email you the exact location and new delivery date within 2 hours.
If it doesn't arrive by end of day tomorrow, I'll refund your shipping in full and add a bag of coffee to your next order at no charge.
You can reach me directly at this email for updates.
— Bayt Coffee team
Captured from Claude Sonnet 4.5 (claude-sonnet-4-5) on 2026-04-27. Re-runs may differ slightly.
Same model. Same user message. The system prompt did the work: no placeholders, no banned words, a concrete commitment with a deadline, the right sign-off. This is the lever the rest of Module 7 will teach you to pull.
Same user message, two API calls
Empty system
- Wrong voice for a small roaster
- Headings + meta coda
- Has to be edited every time
Tight Bayt Coffee system
- Acknowledge-before-apologise rule honoured
- Concrete deadline (2 hours / EOD tomorrow)
- Reusable across hundreds of replies
Next: temperature in plain English — what the dial actually does. :::
Sign in to rate