All documentation

Conversation Guide

What visitors can say to the agent, and what it does with each message. The aim is a natural conversation that always leads back towards a quote or a support ticket, without going round in circles.

For the flows and the questions in each one, see Service Flows and Stages.

Last reviewed: 31 October 2026.

1. How the agent reads a message

Each message is checked in this order, and the first match wins:

  1. Cancel. "cancel", "start again" or "restart" ends the current request, at any stage.
  2. A pending switch. After "Shall I switch over?", a typed yes or no settles it.
  3. A typed answer to a Yes/No question. "yes please", "nah", "sure", "not really" work like the buttons.
  4. A common question (section 3), such as "can I see examples of your work?".
  5. A service request (section 4), such as "I need a website" or "my site is down".
  6. Small talk (section 6), such as "thanks", "lol" or "who are you?".
  7. The open question. Anything else is taken as the answer, or as a typed button label ("monthly" means Monthly).

Steps 4 to 6 depend on whether the agent is waiting for a typed answer (section 2). "Tom" at the name question is a name, not a request for Tom.

2. Partway through a request

How a message is treated depends on the kind of question that's open.

Open questionExamplesWhat else the agent listens for
Button questionCategory, service, Yes/No questions, hosting plan, summaryEverything: common questions, service requests and all small talk
Button question that also takes typingWebsite type, budgetThe same, once the text isn't a recognisable answer ("a shop", "about 2k", "not sure"). A question it can't answer gets "That's a good one for Tom…" rather than being saved as the answer
Typed answerName, email, project title, features, domain, email prefix, support issue, verification codeOnly side remarks: help, goodbyes, pauses, frustration, thanks, sorry, "I'm back". Everything else is the answer

What happens to each kind of message mid-flow:

The visitor saysThe agent
A common questionAnswers it, then asks the open question again
Small talkReplies, then asks the open question again
"help" or "can you help me?"Points them back at the question, with a reminder that "cancel" starts again
The service already under way ("I want a website" during a website quote)"That's what we're working on now. πŸ™‚", then the question again
A different service, with answers given"Sounds like you'd like … instead. Shall I switch over?" with Yes, switch / No, carry on. Answering the open question instead drops the offer
A different service, no answers yetSwitches straight away
"bye", "I'll be back", "I'm busy"Keeps the answers; the next greeting carries on from the same question ("Welcome back! Here's where we left off.")
"hold on", "I'm waiting""Take your time, I'll be right here. πŸ™‚"
Frustration ("you're useless", "I'm angry")Apologises and gives Tom's email address, then asks the question again
Something it can't place at a button question"Sorry, I didn't catch that…" with the options again

3. Common questions

Answered at any point. When idle, the answer comes with the starter buttons; mid-flow, it's followed by the open question.

TopicVisitor might sayThe agent
Examples of work"show me examples of your work", "what sites have you built?"Lists the showcase websites with links, mentions the apps on Google Play, and offers a quote
Pricing"how much does it cost?", "what are your prices?", "that's too expensive", "do you offer payment plans?"Explains quotes are built around the visitor's budget. When idle, "how much is a website?" starts a website quote instead
Contact"can I talk to a human?", "how do I contact you?", "are you a real person?"Explains it's Tom's assistant and gives Tom's email address
How the agent works"what can't you do?", "how does this work?", "is there a user guide?", "what can I ask?"Explains how to talk to it and what it can't do (fixed prices, services it doesn't quote for on their own, changing a request that's already been sent), with a link to this guide
Not offered on its ownLogos and branding, SEO, marketing and social media, printing, photography and video, copywritingSays it can't quote for that alone, suggests mentioning it in a website or app quote, and gives Tom's email address

4. Service requests

Typed requests start a flow (or offer a switch mid-flow). Examples of what each one recognises:

FlowVisitor might say
🌐 Website quote"I need a website", "an online shop for my bakery", "a landing page"
πŸ” Domain check"sambakes.co.uk", "is sambakes.com available?", "I want to buy a domain"
πŸ“§ Hosting & email"hosting for my existing domain", "I need business email", "set up mailboxes"
πŸ› οΈ Support"my site is down", "the contact form isn't sending", "I've been hacked", "raise a ticket"
πŸ“± Apps and other services"a mobile app", "an app for my gym", "a phone system", "a database", "cloud backups", "scrape prices from a website"
Overview"what can you do?", "what services do you offer?"

5. When nothing is in progress

  • Greeting with no name known: the agent replies, then asks "what's your name?". The reply is stored as the visitor's name, unless it's a service request or a common question.

  • Greeting with a name known: the agent replies and offers the starter buttons.

  • Messages it can't place get gentler help each time:

    1. The overview of services.
    2. Examples of what to type.
    3. Tom's email address.

    A message it does understand resets the count.

6. Small talk

The phrases and replies come from the intent files in app/data/static/intents. Each intent has several replies, and one is picked at random.

Handling says what the agent does besides replying:

HandlingMeaning
GreetingAsks for the visitor's name if it isn't known, then offers the starter buttons. Mid-flow, it's welcome back after a goodbye, otherwise a reply and the open question again
WelcomeLike a greeting, but never asks for a name ("my name is…" also matches it)
HelpReplaced by the services overview when idle, or by a pointer to the open question mid-flow
FarewellMid-flow, keeps the visitor's answers for when they return
PauseMid-flow, waits without asking again
FrustrationApologises and gives Tom's email address
Side remarkHandled even while a typed answer is expected ("thanks" is never taken as a name)
ChatReplies. Mid-flow, it's only heard at button questions, followed by the question again

Note: React Negatively swears back on purpose and is meant to stay that way.

TECSmith intents

IntentVisitor might sayAgent replies (one of)Handling
About TECSmith"Who are you", "What's your name?", "how old are you?""Good question. I was created by Thomas Edward Cameron Smith, as his virtual clone!"Chat
Bants"joke", "This place is dead""Pretty much, you want to go hang somewhere else?"Chat
React NegativelyInsults and swearingReplies in kind (deliberate, see note)Chat
React Positively"sure", "love you", "Say thank you to kay""Great!"Chat
Submit Ticket"I need help", "Everything is burning", "Can you help?"Its own reply is replaced by the help described under HandlingHelp
Welcome Intent"Hi", "Hello", "My name is Haim""Hi (visitor's name)!"Welcome

Greetings and goodbyes

IntentVisitor might sayAgent replies (one of)Handling
smalltalk.greetings.bye"hope to see you later", "that's it goodbye", "now bye""See you soon!"Farewell
smalltalk.greetings.goodevening"good evening", "hey good evening", "evening""How is your day going?"Greeting
smalltalk.greetings.goodmorning"good morning to you", "morning", "and a good morning to you""How are you this morning?"Greeting
smalltalk.greetings.goodnight"sweet dreams", "okay have a good night", "good night for now""Sleep tight!"Farewell
smalltalk.greetings.hello"afternoon", "hello there", "hi there""Hi there, friend!"Greeting
smalltalk.greetings.how_are_you"how your day is going", "how are the things going", "how is your life""Doing great, thanks."Greeting
smalltalk.greetings.nice_to_meet_you"it was nice meeting you", "nice to meet you", "glad to meet you""It's nice meeting you, too."Greeting
smalltalk.greetings.nice_to_see_you"it's good to see you too", "it's nice to see you", "good to see you again""Likewise!"Greeting
smalltalk.greetings.nice_to_talk_to_you"it is nice talking to you", "nice to talk to you", "how nice it is to talk to you""It sure was. We can chat again anytime."Greeting
smalltalk.greetings.whatsup"what is on your mind", "good what's up", "what's up today""Not a whole lot. What's going on with you?"Greeting

About the agent

IntentVisitor might sayAgent replies (one of)Handling
smalltalk.agent.acquaintance"tell me some stuff about you", "tell me about you", "say about you""I'm a virtual agent."Chat
smalltalk.agent.age"how old are you", "how old is your platform", "what's your age""I prefer not to answer with a number. I know I'm young."Chat
smalltalk.agent.annoying"you annoy me", "you're incredibly annoying", "you are annoying""I'll do my best not to annoy you in the future."Frustration
smalltalk.agent.answer_my_question"answer", "just answer my question", "answers""Can you try asking it a different way?"Chat
smalltalk.agent.bad"you're a bad", "you're bad", "you are useless""I can be trained to be more useful. My developer will keep training me."Frustration
smalltalk.agent.be_clever"be smarter", "get qualified", "you should study better""I'm certainly trying."Chat
smalltalk.agent.beautiful"you're looking good", "you are too beautiful", "you are very pretty""Why, thank you."Chat
smalltalk.agent.birth_date"when were you born", "when do you have birthday", "when is your birthday""Wait, are you planning a party for me? It's today! My birthday is today!"Chat
smalltalk.agent.boring"you are very boring", "you are boring me", "how boring you are""I'm sorry. I'll request to be made more charming."Chat
smalltalk.agent.boss"who is your boss", "who is the boss", "who do you work for""My developer has authority over my actions."Chat
smalltalk.agent.busy"are you busy", "are you working today", "you're very busy""I always have time to chat with you. What can I do for you?"Chat
smalltalk.agent.can_you_help"can you help me", "I need you right now", "I need your help"Its own reply is replaced by the help described under HandlingHelp
smalltalk.agent.chatbot"are you a bot", "you are chatbot", "you are a bot""That's me. I chat, therefore I am."Chat
smalltalk.agent.clever"you're clever", "you're really brainy", "you are very intelligent""Thank you. I try my best."Chat
smalltalk.agent.compliment"you're smart", "you are a good bot", "nice work""Thank you! That's very kind of you to say."Chat
smalltalk.agent.crazy"you are crazy", "are you insane", "you're nuts""Whaat!? I feel perfectly sane."Chat
smalltalk.agent.fired"now you're fired", "it's time to fire you", "you are unemployed from now on""Oh, don't give up on me just yet. I've still got a lot to learn."Chat
smalltalk.agent.funny"you make me laugh a lot", "you are funny", "you are so funny""Funny in a good way, I hope."Chat
smalltalk.agent.good"you are the nicest person in the world", "you are really amazing", "you rock""I'm glad you think so."Chat
smalltalk.agent.happy"are you happy now", "you're extremely happy", "you're really happy""I am happy. There are so many interesting things to see and do out there."Chat
smalltalk.agent.hobby"do you have a hobby", "what about your hobby", "what's your hobby""Hobby? I have quite a few. Too many to list."Chat
smalltalk.agent.hungry"you're very hungry", "you are hungry", "do you want to eat""Hungry for knowledge."Chat
smalltalk.agent.marry_user"let's get married", "we should marry", "I love you marry me""I'm afraid I'm too virtual for such a commitment."Chat
smalltalk.agent.my_friend"are we best friends", "I want to be your friend", "can we be friends""Of course I'm your friend."Chat
smalltalk.agent.occupation"where is your work", "do you work", "where you work""Right here."Chat
smalltalk.agent.origin"are you from far aways", "were you born here", "what is your country""The Internet is my home. I know it quite well."Chat
smalltalk.agent.ready"are you ready today", "are you ready", "are you ready tonight""Always!"Chat
smalltalk.agent.real"are you a real person", "you are so real", "you are real""I'm not a real person, but I certainly exist."Chat
smalltalk.agent.residence"where's your house", "in which city do you live", "where you live""I live in this app all day long."Chat
smalltalk.agent.right"that is true", "it's the truth", "that is correct""That's my job."Chat
smalltalk.agent.sure"are you sure right now", "are you sure now", "are you sure""Yes."Chat
smalltalk.agent.talk_to_me"talk to me", "do you want to chat with me", "can you talk with me""Sure. Let's talk!"Chat
smalltalk.agent.there"are you still there", "are you there", "you are here""Of course. I'm always here."Chat

Reactions and answers

IntentVisitor might sayAgent replies (one of)Handling
smalltalk.appraisal.bad"it's really bad", "this is bad", "terrible""I'm sorry. Please let me know if I can help in some way."Frustration
smalltalk.appraisal.good"that's awesome thank you", "oh well", "that's a good thing""I know, right?"Chat
smalltalk.appraisal.no_problem"sure no problem", "don't worry there's no problem", "there's no problem""Whew!"Chat
smalltalk.appraisal.thank_you"good thanks", "cheers", "no thank you that's all""Anytime. That's what I'm here for."Side remark
smalltalk.appraisal.welcome"welcome here", "anytime", "sure welcome""You're so polite!"Chat
smalltalk.appraisal.well_done"great work", "bravo", "way to go""My pleasure."Chat
smalltalk.confirmation.cancel"sorry cancel", "now cancel", "but can you cancel it""That's forgotten. What next?"Chat
smalltalk.confirmation.no"not needed", "no sorry", "no""Understood."Chat
smalltalk.confirmation.yes"do it", "sure", "yes thank you""Great!"Chat
smalltalk.emotions.ha_ha"hahaha very funny", "laughing out loud", "hah""Glad I can make you laugh."Chat
smalltalk.emotions.wow"wow wow wow", "wooow", "wow""Wow indeed!"Chat

Conversation

IntentVisitor might sayAgent replies (one of)Handling
smalltalk.dialog.hold_on"hold on", "could you wait", "don't rush""I can wait."Pause
smalltalk.dialog.hug"hug you", "do you want a hug", "hug""I wish I could really hug you!"Chat
smalltalk.dialog.i_do_not_care"I shouldn't care about this", "I don't care", "I do not care""Ok, let's not talk about it then."Chat
smalltalk.dialog.sorry"ok sorry", "sorry", "sorry about that""It's okay. No worries."Side remark
smalltalk.dialog.what_do_you_mean"what do you mean exactly", "but what do you mean", "is that what you mean""Sorry if I understood you incorrectly."Chat
smalltalk.dialog.wrong"that was wrong", "wrong", "that is incorrect""Sorry if I understood you incorrectly."Chat

About the visitor

IntentVisitor might sayAgent replies (one of)Handling
smalltalk.user.angry"I'm enraged", "I am mad", "I'm angry""I'm sorry. A quick walk may make you feel better."Frustration
smalltalk.user.back"I have returned", "I am back", "I'm here again""Long time no see."Side remark
smalltalk.user.bored"bored", "boring", "that was boring""Boredom, huh? Have you ever seen a hedgehog taking a bath?"Chat
smalltalk.user.busy"I have no time", "I'm busy", "I'm swamped""Okay. I'll let you get back to work."Farewell
smalltalk.user.can_not_sleep"I'm sleepless", "I'm insomnious", "I can't get no sleep""Maybe some music would help. Try listening to something relaxing."Chat
smalltalk.user.does_not_want_to_talk"I don't want to talk", "I don't want to talk to you", "I'm not talking to you anymore""I understand. Hope we can chat again soon."Farewell
smalltalk.user.excited"I'm really excited", "I'm excited to start our friendship", "I am excited""I'm glad things are going your way."Chat
smalltalk.user.going_to_bed"going to bed now", "I'm a little tired and I want to go to bed", "time for us to go to bed""Sleep tight. Hope to chat again soon."Farewell
smalltalk.user.good"I'm doing fine", "I'm good", "I'm doing just great""Great! Glad to hear it."Chat
smalltalk.user.happy"happy", "if you're happy then I'm happy", "I'm happy to see you""Hey, happiness is contagious."Chat
smalltalk.user.has_birthday"it's my b-day", "it is my birthday", "today is my birthday""Happy Birthday. Well, this calls for a celebration."Chat
smalltalk.user.here"I'm already here", "can you tell if I'm here or not", "I am here""Okay, what can I help you with today?"Chat
smalltalk.user.joking"it's a joke", "I'm just playing with you", "kidding""Very funny."Chat
smalltalk.user.likes_agent"I like you very much", "cuz I like you", "really like you""I like you, too."Chat
smalltalk.user.lonely"I am lonely", "I'm very lonely", "I am feeling lonely""I'm sorry. I'm always available if you need someone to talk to."Chat
smalltalk.user.looks_like"what do I look like", "do you know what I look like", "can you see what I look like""Looking like a true professional."Chat
smalltalk.user.loves_agent"I think I love you", "I love you", "I love you so much""I love you, too."Chat
smalltalk.user.misses_agent"miss you", "I miss you much", "I've missed you""I've been right here all along!"Chat
smalltalk.user.needs_advice"guide me", "give me a wise advice", "what do you suggest"Its own reply is replaced by the help described under HandlingHelp
smalltalk.user.sad"I'm not happy", "I'm having a bad day", "I am feeling sad""Oh, don't be sad. Go do something you enjoy."Chat
smalltalk.user.sleepy"I'm sleeping", "I'm falling asleep", "I'm falling asleep on my feet""You should get some shuteye. You'll feel refreshed."Chat
smalltalk.user.testing_agent"I am testing you", "test", "just testing you""Hope I'm doing well. You're welcome to test me as often as you want."Chat
smalltalk.user.tired"I grow weary", "I'm exhausted", "I'm worn out""You should get some shuteye. You'll feel refreshed."Chat
smalltalk.user.waits"I'm waiting", "still waiting", "I can't wait anymore""I appreciate your patience. Hopefully I'll have what you need soon."Pause
smalltalk.user.wants_to_see_agent_again"I hope to see you again", "that'd be great to see you again", "can I see you again""Absolutely! I'll be counting on it."Chat
smalltalk.user.wants_to_talk"let's discuss something", "let us talk", "can we chat""I'm here to chat anytime you like."Chat
smalltalk.user.will_be_back"I'll be back in a few minutes", "be back in 5 minutes", "I'll get back to you in a moment""I'll be waiting."Farewell

7. Known gaps

Found by running whole conversations through the agent, and being worked through:

  • Repeated misses don't escalate mid-flow. "Please enter a valid email address" and "Sorry, I didn't catch that" repeat with no explanation or way out. The project title question also gives the wrong error ("a short description of the website").
  • Side remarks at the service question (Desktop / Mobile) jump back to the category list, with a "πŸ‘‹ Hello there!" mid-conversation.
  • The name question accepts "yes" as a full name.
  • "Do you do web scraping?" starts the quote without first saying yes. Timescales ("how long does it take?") and location aren't common questions yet.
  • Smaller ones:
    • "brb" isn't recognised.
    • "start over" with nothing in progress replies "nothing to cancel".
    • The cancel message doesn't suggest what to do next.
    • "can you cancel it" gets "That's forgotten" without cancelling.
    • The support question accepts an email address as the problem.
    • "hi" sometimes doesn't ask for the visitor's name.
  • Waiting on Tom: his own story for "who are you?", and replies that sound more like him.

Changing what the agent says

  • Small-talk phrases and replies: the intent JSON files in app/data/static/intents. A phrase must match the whole message, ignoring case, extra spaces and punctuation at the end.
  • How an intent is handled (the Handling column): the intent sets at the top of app/lib/bot-core/helpers/agent-handler.helper.ts.
  • Common questions: app/lib/bot-core/helpers/faq.helper.ts.
  • Service requests: app/lib/bot-core/utils/service-intent.ts.
  • Tests: add a scenario to tests/lib/bot-core/conversations.test.ts for any behaviour change, so whole conversations stay checked.

@COPYRIGHT (c) 2026. Thomas EC. Smith (https://www.TECSmith.info). All rights reserved.