AI AssistantPrompting

Writing a Good Bot Prompt

The prompt is the brain of your AI assistant. A thin prompt produces a thin assistant — vague answers, missed edge cases, the wrong tone. A rich prompt produces an assistant that handles real conversations confidently and stays in character. Here is how to get there.

The rule of thumb

The more relevant context you give the bot, the better it answers. A bot with two lines of instructions guesses; a bot with the right scenarios, examples, and live data answers like an experienced colleague. Aim to give it everything a new hire would need on their first day.

💡
If you would have to explain it to a new teammate, write it in the prompt. If a new teammate would need to look it up, put a link to the knowledge source.

Cover edge cases and scenarios

The single biggest difference between a usable bot and a great one is the number of concrete situations the prompt anticipates. Don't stop at "answer guest questions" — list the specific scenarios that come up in your business.

For a guest-facing assistant that might include:

  • Late-night arrival on the arrival date
  • Early check-in request before 3 PM
  • Guest asking for the WiFi password
  • Guest unsure how to find the building entrance
  • Guest asking about parking when the listing has none
  • Refusal to fill the check-in form / share ID
  • Mechanical lockout (broken key, code not working)
  • Question about cancellation policy without cancelling
  • Question about pet policy when no pet info is in the listing
  • Guest asking to bring extra people beyond the booked headcount

For each scenario, write what the bot should say and what it should not say. Include the wording you would use yourself if you picked up the phone. The bot picks up tone from your examples.

â„šī¸
You don't need to predict everything on day one. The prompt is a living document — see "Keep self-improving on" below.

Static first, dynamic later

Build the prompt in layers, from static to dynamic:

  1. Static knowledge base. Things that don't change per conversation — your check-in hours, parking rules, cancellation policy, brand voice, what you do and don't handle. This is the bulk of your prompt at the start. Treat it as your bot's "long-term memory."
  2. Per-reservation context (Hostaway, your PMS). Once the bot can handle generic questions, layer in reservation-specific variables: who the guest is, their arrival date, what they booked, which channel, whether they've checked in. These are filled in automatically at message time using template variables like {{reservation.guest_first_name}} and {{reservation.arrival_date}}.
  3. Per-caller context (HubSpot, CRM, other systems). Eventually you can pipe in information about the specific person calling — their CRM record, past tickets, lifetime value. This makes the bot situational rather than generic. Adding these sources comes later, after the first two layers are solid.

Trying to do all three at once usually means none of them gets done well. Get the static knowledge solid, ship it, then add context layers as the bot starts handling real conversations and you see where it's missing information.

💡
See Bot Context Sources for the mechanics of attaching knowledge bases, snippets, and live URL sources.

More context = better answers (within reason)

Counter-intuitively, longer prompts often produce better answers — as long as the extra content is relevant. The bot uses your wording, your examples, and your edge cases as anchors. Vague prompts force it to fall back on generic language and best guesses.

What "relevant" looks like:

  • Specific scenarios from your day-to-day operations
  • Example phrasings you actually use with customers
  • Edge cases and what to do about them
  • What NOT to say (e.g. never promise refunds, never share off-platform contact)
  • Brand voice cues (formal vs casual, language preference)

What padding looks like (avoid):

  • Long marketing copy that doesn't change behaviour
  • Generic AI-assistant boilerplate ("be helpful and concise" repeated five times)
  • Listing every possible variable when only a few apply
  • Repeating the same rule in three different wordings
âš ī¸
Token cost and response latency scale with prompt length. A prompt that's 3000 words of focused scenarios is great; a prompt that's 3000 words of vague pep talk just slows the bot down.

Keep self-improving on

Every bot has an Improvements tab that watches real transcripts and proposes prompt edits weekly. Leave it on. It's the fastest way to improve coverage — the bot surfaces gaps you didn't anticipate by analysing actual conversations.

Review the proposals it generates:

  • Approve the ones that fix real issues
  • Reject the ones that don't fit your voice or business rules
  • Per-block approve / reject is supported — you don't have to accept or reject the whole proposal at once

Set a calendar reminder to review proposals once a week. Over a month or two, the prompt becomes substantially richer without you having to predict everything up front.

â„šī¸
Approvals are versioned. If a change turns out to be wrong, you can roll back to an earlier version from the bot's history.

It's a process, not a setup

The first version of your prompt won't be the best one — and that's fine. Good prompts emerge from real conversations, not from one good writing session. Plan for:

  • Week 1: Ship a starter prompt covering the top 5–10 scenarios you know about. Send a few test messages.
  • Week 2–4: Watch real transcripts daily. Note the gaps. Add a scenario to the prompt each time you spot one.
  • Month 2 onward: Rely on the Improvements tab to surface gaps automatically. Edit ad-hoc when something specific comes up.
  • Quarterly: Re-read the full prompt with fresh eyes. Trim outdated scenarios, sharpen wording, check that examples still match how you actually talk.
💡
The more you use it, the better it gets. Operators who treat the prompt as a living document and review it regularly end up with bots that handle 80%+ of conversations confidently within a few months.

Common mistakes to avoid

  • One-sentence prompts. "Answer guest questions" produces a generic assistant that fails on every nuance. Aim for at least one section per major scenario.
  • Mixing static and dynamic prematurely. If the bot doesn't handle the generic case well, adding CRM data won't fix it.
  • Setting it and forgetting it. A prompt that hasn't been touched in three months is missing three months of edge cases.
  • Hardcoding values that should be variables. If you write "the apartment is on the 3rd floor" in the prompt, the bot says that for every listing. Use {{listing.floor}} instead.
  • No escalation rules. Always include explicit instructions for when the bot should hand off to a human (complaint, emergency, request to speak to a manager).
  • Inventing what you don't know. Tell the bot to say "I'm not sure, our team will check and get back to you" rather than guessing. A bot that guesses politely is worse than a bot that admits uncertainty.

Where to go next