← All projects

Company chatbot that answers from your own documents

Employees ask technical questions in Slack and get an instant answer from the company documentation, with the sources linked, instead of interrupting an expert.

Client
Internal deployment
Year
2026
Focus
Knowledge base, Chatbot, Slack, Confluence
Result
About 1,100 hours a year saved, roughly €51,000 net

Problem

The answers to technical questions are spread across Confluence, internal PDFs and old Slack threads. People search for a while, give up, and ask one of the few experts who know the answer. Those experts stop their own work to answer the same questions again and again. Nobody can see which questions keep coming back or which pages are out of date.

Approach

A chatbot, deployed in the company and used every day to get technical information out of the company documentation. It is connected to Confluence, internal PDFs and selected Slack channels. Employees ask in plain language, right in Slack, and get an answer straight away, with links to the sources it came from.

  • Stays up to date. Changed pages and documents are re-read automatically, so answers reflect the current state.
  • No developer needed to run it. Admins choose channels and spaces to learn from with simple Slack commands.
  • Learns from feedback. People rate answers with a thumbs up or down, and the ratings improve later results.
  • Shows what is missing. It records questions it could not answer well, so the team knows which documentation to write or fix next.

How it is built

Answers from search, not from memory. The bot uses retrieval-augmented generation: it first finds the passages that answer the question, and the model writes its answer only from those, naming the ones it used. Before the search, the model rewrites the question, expanding acronyms, fixing typos and adding synonyms. The search combines meaning (vector search, 70%) with exact words (full-text search, 30%), so it finds a paraphrased question as well as an exact error code. The answer streams into the Slack thread as it is written.

Documents prepared for search. Confluence pages are split along their headings into passages of a sensible size. Tables are split row by row, with the header repeated on each, so a question about one row finds that row, and a matching passage brings its neighbours along for context. The model boils each Slack thread down to a problem and its resolution, with topic tags, and near-duplicates are set aside. Internal PDFs have an ingest flow of their own. Anything unchanged since the last sync is skipped.

Honest about confidence. When the match is weak, the answer says so and suggests checking with the team. When nothing matches, it recommends asking a person instead of guessing, and records the question as a knowledge gap, which closes itself once matching content is added.

Feedback that changes the ranking. Every answer has Helpful and Not helpful buttons. Sources that keep getting helpful votes rank a little higher and unhelpful ones drop, by design more than the helpful ones rise, so feedback refines the search without overriding it.

One installation, many teams. Support, HR or engineering can each run their own bot, with its own channels, pages and instructions, on shared infrastructure with their data kept apart.

Built to keep running. The model is reached through a LiteLLM gateway, so the provider can be changed in configuration. Circuit breakers let the bot degrade gracefully when the database or the model is down, and health checks and metrics show its state.

Python, Slack in Socket Mode, LangChain and LangGraph, Postgres with pgvector (Supabase), LiteLLM and Prometheus, in one Docker container. Its tools are also exposed over MCP, so other agents can search the same knowledge base.

Result

In use, the bot answered about 15 questions a day, and each answer saved roughly 20 minutes that someone would otherwise have spent searching the documentation or waiting for an expert to reply.

Much of that is experts’ time. Questions that used to land on them are now answered by the bot, so they stay on the work only they can do.

Turned into money, with 220 working days, €50 per hour of employee time, €0.05 of AI cost per answer and €300 a month to run the platform:

Per year
Questions answered 3,300
Hours saved 1,100
Full-time equivalent 0.63
Value of time saved €55,000
AI cost €165
Platform and maintenance €3,600
Net value €51,235

That is about 90 hours a month, and roughly €13.60 of net value for every euro spent on running the bot.

The question volume and time saved come from the bot in use; the hourly rate and running costs are assumptions you can change in the calculator below. The one-time cost of setting the bot up is not included. The saving is freed-up capacity, not a smaller payroll: it becomes real money when people spend the time on other work, or when it avoids overtime or a new hire.

Calculate it for your company

Net value per year

€51,235

About €13.61 back for every euro it costs to run.

Value of time saved€55,000
Running cost€3,765
Hours saved per year
1,100 h
Full-time equivalent
0.63
Operating costs per year
€3,765

Assumes 220 working days and 1,760 working hours a year. One-time setup costs are not included.

Have a process like this?

The first consultation is free. Then you get an offer that shows what the automation will cost and how much it should save.

Tell me about it