How Puccha answers
Updated 2026-09-18 · owner natthawat@harmonyx.co · pipeline handoff tickets status
This page answers the questions customers’ technical teams ask most: how Puccha “thinks” on each message, what makes it answer from your content versus hand off to a person, and what the statuses in the Inbox mean.
One rule: answer only from your organisation’s documents
Section titled “One rule: answer only from your organisation’s documents”Puccha has no separate “FAQ mode” and “AI mode”. Every answer comes from searching the documents your organisation uploaded (the knowledge base) and having the AI compose a reply from what was found, citing which document it came from. If the search finds nothing relevant, Puccha does not guess from general knowledge — it says it has no information and offers a human agent instead.
The reason is trust. A wrong answer about a refund policy, an insurance condition or a government procedure does more damage than saying “I don’t know”.
The decision sequence on every message
Section titled “The decision sequence on every message”Each message passes through these gates in order. Whichever gate resolves it answers immediately; nothing further runs.
| # | Gate | What Puccha looks at | Outcome |
|---|---|---|---|
| 1 | Safety checks | Length, patterns that try to command the system, send rate, the same question repeated within seconds | Rejected before anything else |
| 2 | Greeting / thanks | The whole message is a greeting or a thank-you (“hello”, “thanks”) | Standard reply, no search |
| 3 | Knowledge-base search | Semantic search (meaning) and keyword search (exact terms), merged, then a reranker scores relevance | A set of passages with scores |
| 4 | Confidence check | The best relevance score is below the threshold | A polite decline with a “talk to a person” button — the AI is not called |
| 5 | Previously given answer | Same question, same language, same retrieved passages, within 15 minutes | The same answer, instantly |
| 6 | AI composes | The passages go to the AI with a rule: answer only from these | An answer with citations |
| 7 | Answer check | The citations are verified against the retrieved passages; the reply is checked for refusal language | A refusal carries no citations and is logged as a knowledge gap |
Gate 5 is what people usually take for an “FAQ”. It is a short-lived memory of recent answers, there for speed and cost, not a list an administrator writes. When a document changes, the remembered answer expires on its own.
When Puccha hands off to a person
Section titled “When Puccha hands off to a person”A handoff can happen three ways, and requires the “human handoff” feature to be enabled in settings.
- The AI decides. While composing, the AI has a “hand off to a human” tool for when the user explicitly asks for a person, when it cannot help after searching, or when the user is frustrated.
- The user presses the button. After a decline at gate 4, a “talk to a person” button is shown.
- An agent does it from the Inbox.
Once handed off, Puccha stops replying in that conversation until an agent picks it up, so it never talks over the customer’s wait.
Conversation and ticket statuses
Section titled “Conversation and ticket statuses”Two things carry a status, and they change differently.
Conversation
Section titled “Conversation”| Status | Meaning | Changes when |
|---|---|---|
active |
Puccha or an agent is replying | Default for every conversation |
waiting |
Handed off, waiting for an agent | Any of the three handoffs above |
active (again) |
An agent has taken it | The agent sends their first message |
resolved |
Finished | Only when an agent presses Resolve — nothing auto-resolves on silence |
active (reopened) |
Contact after resolution | An agent presses Reopen, or the customer writes again |
Ticket
Section titled “Ticket”A ticket is created when a handoff finds no available agent, or when a request arrives by email or API. It has its own lifecycle.
new / open → in_progress → pending_customer / pending_agent → resolved → closed ↑ │ customer replies within 7 days → reopened- When an agent resolves a conversation, its linked ticket becomes
resolvedtoo. closedis set by the system only: a ticket that has beenresolvedfor 7 days with no customer reply (or an agent closes it explicitly).- A customer reply within 7 days reopens the ticket (
reopened); a reply afterclosedstarts a new ticket.
In short: the closed label belongs to tickets, conversations say resolved, and both begin with an agent’s action, not with time passing.
Reply language
Section titled “Reply language”Puccha replies in the language the user actually typed in that message, not the website’s language. Thai in, Thai out; English in, English out — including declines and handoff messages.
Known limitations
Section titled “Known limitations”- The relevance score at gate 4 measures “does this passage answer the question”, not “is it on the same topic”. Purchase or booking questions that the documents do not address directly may be declined. Fix by adding content, or adjusting the threshold per organisation.
- After an agent has taken a conversation, a further customer message on LINE/Facebook has no “a human is handling this” signal distinct from a normal conversation, so Puccha may reply again. A dedicated state is being designed.
- Remembered answers (gate 5) live for 15 minutes per serving location. After editing a document, wait up to 15 minutes or press “Clear cache” in settings.