Skip to content

Add knowledge

Knowledge is what the agent grounds its answers in: Sources for unstructured material, Facts for the questions people ask most, Things for the structured catalog, and Business info for the structured facts about the business itself. The concept is covered in Capabilities; this guide is about building all four. They live in the agent's Knowledge area, under Sources, Facts, Things, and Business info.

Sources

A Source is material the agent answers from: an uploaded file or an imported website page. Upload policy pages, pricing explanations, marketing copy, internal reference. For the handful of questions people ask most, write Facts instead; the agent treats those as the answer rather than as passages to retrieve. On every turn, Anychat retrieves the passages most relevant to what the user said and supplies them to the agent, which grounds its answer in them instead of improvising. The agent cites public sources where appropriate and does not reveal internal file names or Source identifiers.

Documents are prose the agent reads, so AML markup in one is not rendered. To control how something is presented — a card, a carousel, a picture — put the copy in a Message Template or a Fact answer and name it from a Playbook.

Add a Source three ways: upload a file, import a page by URL, or paste text (a title plus the body copy, useful for content that doesn't live on a page of its own). A URL Source keeps the page it came from and can be refreshed on demand — re-fetching and re-indexing it in place, without deleting and re-adding it, so links to it (and its id) stay stable. Refresh only applies to URL Sources; uploads and pasted text have no page to re-fetch. Every write is also available through the API and the MCP server — upload is console-only, since the write path expects a file. Opening a Source shows the indexed text — what the agent actually retrieves from, not necessarily the original file's formatting.

Importing from a website

Point the importer at a public website and it crawls the relevant pages into Sources. This is the fastest way to seed a new agent: an import typically captures services, pricing, and company background in one pass, and a page of frequently asked questions (schema.org FAQPage data) becomes Facts rather than a Source. If the site publishes machine-readable business hours, the import also fills the agent's contact-availability line with them (only when you haven't set one yourself). Review what arrived: a crawl picks up what the site says, which is not always what you want the agent to say.

What makes Sources work well

  • Curate for the agent's job. A support agent needs troubleshooting content; a sales agent needs offering and pricing content. Material outside the job adds retrieval noise.
  • Prefer prose the agent can quote. Pages written for humans work; slide-deck fragments and tables of unlabeled numbers retrieve poorly.
  • Keep it current. The agent answers from what's here, including anything stale.

Facts

A Fact is a question and the answer you have confirmed. Where Sources are material the agent retrieves from and paraphrases, a Fact is the answer itself: on every turn the agent reads every enabled Fact as authoritative, matches the question in any wording, and keeps every detail, number, and price exactly as written. The questions people ask most are answered your way, whatever the agent has learned from Sources. A list of 5 to 30 entries is typical; the cap is 200.

Write a Fact rather than a Source when the answer is short and must not drift: a price, a cancellation policy, what to bring to a first visit, whether you take walk-ins. Leave long-form material (a full policy page, a product guide) in Sources, where retrieval pulls the relevant passage.

An answer can carry AML, so a verified answer is not limited to prose. Chips, a card, a carousel and image:<id> media references all render the same way they do in a Message Template:

We're open 9 to 5, Monday through Friday.
[[chips: Get directions | Book a visit]]

How the agent reads the list depends on its size. Up to about 40 short entries (a 3,000-token budget) the agent sees all of them on every message. Above that it sees the 8 most relevant to each message, and the rest stay searchable. An Always include Fact is never dropped by that budget or ranking, and a Fact scoped to specific Playbooks rides only while one of them is active. Every Fact is also indexed alongside the Sources, so an agent with only Facts and no Sources still has something to search, and the search ranks Facts ahead of Source passages.

Each entry has:

  • Question: the canonical wording. The agent matches the same question in any phrasing, so write it the way a customer would say it.
  • Answer: plain text you have confirmed. By default the agent works the answer into its reply in its own voice.
  • Exact: send the answer word for word instead of rephrasing it. Use it for prices, policies, and legal or medical wording where the exact text matters.
  • Also asked as: other ways people phrase the question. Alternates sharpen matching and are never shown to the person. Click Suggest wordings to have the console propose some, then keep the ones that fit.
  • Enabled: switch an entry off to keep it without using it.
  • Always include: put this Fact in every conversation regardless of ranking or budget. Use it for the handful of details that must never drop out of view: hours, address, a policy you want flagged every time it's relevant.
  • Only in Playbooks: restrict this Fact to the Playbooks you pick, so it rides only while one of them is active. Leave it empty and the Fact is available under every Playbook.

Every Fact you save is confirmed. Once the Knowledge inbox ships, Facts proposed from an import will arrive unconfirmed and sit out of use until you confirm them; nothing today produces an unconfirmed Fact.

Website import turns any FAQ page it finds (schema.org FAQPage data) into Facts instead of a Source. Imports that ran before this change left a website-faq.html Source behind; it is untouched. Convert it with one click from its row on the Sources page (or through the API): each question/answer pair joins the list with source "import", questions you already have are kept as they are, and the Source stays until you delete it.

Two checks show whether the list is doing its job. The API reports per-Fact usage from the agent's turn traces (the last 30 days by default, up to 90): how often each Fact was asked, how often an Exact answer went out word for word, and how often it was reworded instead. Every Fact is listed, so one that nobody asks stands out. Under Test in the console, or through the API and the MCP server, generate a Fact coverage suite: one Test case per enabled Fact and wording, each checking the live agent's reply against the confirmed answer. Re-run it after editing an answer; the cases refresh in place.

Behavior lint checks the list. It warns about placeholder answers, duplicate questions, and contact details that differ from what Identity holds (keep phone numbers and email addresses in Identity, so there is one place to change them), and it notes when the list has outgrown the always-in-view budget. Facts are part of the agent's export document (capabilities.knowledge.facts; older exports and hand-written documents may still use the historical faqs key, which imports the same way) and can be carried by an agent template.

Things

A Thing is one record in your catalog: a product, a restaurant, a rental, a room, a service, anything the agent should present as its own card rather than a paragraph of prose. Each entry carries a name, description, and picture, plus optional links and metadata. The agent uses the catalog three ways:

  • It presents Things as rich cards, with pictures and links, on channels that support them.
  • It answers questions about a Thing from the catalog entry before reaching into Sources.
  • It records a person's interest against the catalog, so People records and reports use your Thing names, not free text.

Write descriptions as you'd want the agent to say them: the entry is agent-facing copy, not an internal SKU record.

You never have to make something a Thing. A restaurant that turns up through an imported Source still renders as a card when the agent talks about it. Making it a Thing is how you control exactly how that card looks: which picture, which links, which details show.

Pictures

A Thing's picture comes from the agent's Media library: pick an uploaded item and the agent shows it wherever the Thing appears. Entries created before Media existed, or added through the API without one, fall back to a raw image URL stored on the entry itself.

Actions

An action is a labelled button on the card. A Thing carries up to four, and each does one of four things:

  • Link opens a web page: Book a table, View menu, See availability.
  • Call dials a phone number: Call the front desk. Type the number in any usual format; a number without a country code is read as a US number.
  • Reply sends the button's label back to the agent as if the person had typed it: Book this, Tell me more. The agent also learns which card was tapped, so three cards can each carry a Book this button. To send the agent something other than the label, fill in the optional reply text.
  • Map opens the Thing's location in the phone's maps app: Directions, Find us. Add a location to the Thing first.

On a channel that can't show a button, a link, call or map shows as text with the address, number or map link, so nothing is lost.

Location

A Thing that is somewhere, such as a marina, a restaurant or a trailhead, can carry its location. Type the address, or paste a Google Maps link or a latitude and longitude. When you save, Anychat finds the place and pins it, and the Thing shows Pinned on the map with a link to check the pin in Google Maps. If the address can't be found, saving tells you so you can correct it. Use business address fills in the address from Business info.

The agent also knows each Thing's address, so it can answer "where is it?" without a separate FAQ.

Set no actions and the classic product page URL field still works: it renders as one View details button. Set at least one action and it replaces that button.

Collections

A collection groups related Things under one heading, Dining, Rooms, Rentals, so the agent can show the right group instead of the whole catalog. Give a collection a name and, optionally, a one-line purpose ("restaurants and bars on the lake") that shows up wherever the agent explains what it can present.

A collection also controls how its cards look:

  • Fields: which details show on the card, in order. The default is picture, name, and description.
  • Actions: which of a Thing's action labels show, and in what order. Leave this unset and a card shows all of a Thing's actions.

Once your Things are grouped into collections, the agent can send a whole collection, such as every rental boat, as one carousel: asked what is available, it names the collection instead of listing each Thing, and Things you add later show up without editing anything. A collection sends its Things in collection order, up to the channel's carousel maximum (10 on RCS).

A Thing in several collections

A Thing can belong to more than one collection. A Jet Ski Rental can sit in an overall Watercraft rentals collection and in a location-specific Wahweap Marina watercraft rentals one. When someone asks what they can rent, the agent can show every watercraft rental; when they say they're staying near Wahweap, it can show just that marina's, without you keeping two copies of the same Thing in step. If you guide the agent to make location-specific recommendations, collections per location are the easiest way to give it that map.

A collection's card settings apply to that collection's carousel. A Thing sent alone uses the standard card: picture, name, description, and all its actions. So the same Thing can look slightly different in each of its collections.

A Thing without a collection still renders, grouped under the agent's default. Deleting a collection that Things still reference is blocked until you either move those Things to another collection or confirm the removal, which takes that collection off them. They keep any other collections they're in.

Hours will come with typed collections: a restaurant type carries hours, a product type doesn't. Until then, use Business info for the business's own hours.

Business info

Business info is the structured card of facts about the business itself: address, phone, website, weekly hours, holiday hours, amenities ("Pets allowed", "Outdoor seating"), price range, and, for restaurants, cuisine and a menu link. Where Sources are prose the agent quotes from, business info is typed data the platform can compute with, so everyday customer questions ("are you open right now?", "where are you?", "do you allow pets?") are answered from facts you control.

The open-right-now answer is the flagship: the platform computes the current open-or-closed status from your stored hours and timezone (overnight windows and holiday overrides included) and hands the result to the agent each turn. The agent never does the clock math itself, so the answer is always consistent with the hours you've published. For that to work, the timezone must be set: every stored time is read in it, and without it the agent won't claim the business is currently open or closed.

Website import fills business info automatically, from the site's machine-readable business data where it's published and from what the pages say otherwise, and never overwrites a value you've already set. Any FAQ page it finds along the way lands in Facts. Review what arrived the same way you review imported Sources.

The pieces worth knowing:

  • Hours are weekly windows: day, opening time, closing time. A window that closes at or before it opens crosses midnight (a bar open 17:00–02:00 is one window, not two).
  • Special hours override a single date: mark the day closed or give it different hours, with a label like "Thanksgiving". On that date they replace the weekly windows entirely.
  • Amenities are name/value facts in your own vocabulary: "Pets allowed: yes", "Parking: street only". The agent answers amenity questions from these and declines gracefully when asked about one you haven't listed, rather than guessing.

What's next