Why our bot understands long pages

Why our bot understands long pages.

Most chatbots cut your docs into 500-word blocks. The result: tables get split from their headers, code samples lose their setup, and a paragraph that says 'this' loses the thing it's pointing at. We don't do that — and you can see why below.

It splits by your headings, not by a word counter.

Imagine your installation guide has three sections: Prerequisites, Install on macOS, Install on Windows. A standard chatbot will cut that page in arbitrary 500-word slices — so a retrieved snippet might end mid-sentence in the macOS section and start again three sentences into Windows. The bot then has to guess which OS the question was about, and you get answers that mix the two.

We split on your document’s own structure — the headings you wrote. A question about "installing on macOS" pulls the whole macOS section. The Windows section stays separate. The tables and code blocks inside each section never get split in half.

The bot understands what came before.

Long pages have a flow. A sentence that says "This means you should also…" only makes sense if you remember what this is — and in the typical chatbot pipeline, by the time that sentence is retrieved on its own, the context is two paragraphs away in a different chunk. The bot answers like it missed the lecture.

We solve this by reading the whole page first, with full awareness of how each section relates to the rest, and only then organising it for retrieval. The result: a snippet that comes back already knowing what it’s referring to. About 10–12% more questions get answered correctly on long-prose docs — the kind with explanations, not just bullet lists.

Every section travels with its document context.

A snippet about "the export button" means very different things in your billing docs and in your account-settings docs. Most chatbots retrieve the snippet without that context and the answer comes back wrong.

We make sure every section knows which document and which subsection it came from. So a retrieval of "the export button" travels with Account › Settings › Data Export as context — and the bot writes an answer that’s about your export button, not the one in your billing flow.

See the difference.

Below, a sample doc page from Stripe’s API reference. Toggle between FlowChat’s splitting and a typical chatbot’s splitting — and watch what gets destroyed when the cuts fall mid-content.

docs.stripe.com/api/authenticationStripe API — Authentication

Authentication

The Stripe API uses API keys to authenticate requests. View your keys in the Dashboard.

Authentication to the API is performed via HTTP Basic Auth. Provide your API key as the basic auth username value. You do not need to provide a password.

Live mode keys

Live mode keys begin with sk_live_ and pk_live_ for the secret and publishable keys, respectively.

curl https://api.stripe.com/v1/charges \
  -u sk_live_xxxx:
Test mode keys

Test mode keys begin with sk_test_ and pk_test_. Use test keys to develop and test against the API without affecting live data.

Key prefixModeUse
sk_live_LiveServer-side production calls
pk_live_LiveClient-side production calls
sk_test_TestServer-side test calls
pk_test_TestClient-side test calls

Every chunk carries its parent heading. Every code block stays whole. Every table stays with its column headers. The retrieved chunk for "what's a sk_live_ key?" is the entire "Live mode keys" subsection, including the curl example and the prefix definition.

The visual is the argument. When the cuts fall in the wrong places, the retrieved snippets become useless — even if the answer is technically "in the docs." This is why most chatbots feel like they’re missing the obvious answer.

Why this matters at the support team level.

The thing that determines whether your bot resolves a tier-1 ticket isn’t the AI model. It’s whether the bot retrieved the right chunk of your docs to answer with. Get that wrong and the AI writes a confident-but-irrelevant answer; get it right and the AI basically reads the answer back to your customer.

So we obsess over getting the splits right — before any AI writes a single word. It’s the unglamorous work most chatbot platforms skip. It’s also the reason ours holds CSAT while other bots tank it.