A food-industry news platform needed a support assistant that could handle the recurring questions — how to become a member, pricing, services, where to get in touch — without someone answering the same thing all day. I built a chatbot that answers from the site’s own content, not a generic model guessing.
How it works
A Python crawler walks the whole site and pulls out the real content — articles, PDFs, image alt text, link text — across languages, and turns it into a structured, search-ready knowledge base. When a visitor asks something, the bot retrieves the relevant passages and answers from those. So the answers come from the platform’s own material, and stay current as the crawler re-runs.
The conversation logic runs as an n8n workflow rather than a hard-coded backend, which means the behaviour can be tuned without redeploying anything.
Light on the page
- A 43 KB drop-in widget — vanilla JavaScript, no heavy framework, so it doesn’t drag down page speed or Core Web Vitals.
- Multilingual — it detects the page language (NL/FR/EN) and answers in kind, with the right prompts and contact details per language.
- UX from real support use — quick-prompt buttons that hide once you start typing, markdown answers, file icons for PDFs and docs, and scrolling that keeps your question in view while the answer arrives.
The stack
- Content ingestion — Python crawler (BeautifulSoup, pdfminer) producing a vector-ready knowledge base.
- Retrieval & logic — retrieval-augmented generation orchestrated in an n8n workflow.
- Front end — a lightweight vanilla-JS widget, embedded straight into the site.
It quietly deflects the repetitive questions, in three languages, from content the site already had.
