An internal assistant for a 2,000-person company that answers only from approved documents, shows the source every time, and says "I don't know" instead of guessing. Self-directed — problem framing, prioritization, a risk model, and a prototype you can actually use.
Nobody searches. Everybody asks. And nothing gets written down.
Company knowledge lives scattered across shared folders, email threads, and internal systems. Faced with that, people don't search — they ask a colleague. Every question then consumes the time of two people, and the person being asked is usually senior. Because the answer is given in a DM and never recorded, the same question comes back next week from someone else.
It shows up in three shapes: new joiners and existing employees asking the same HR policy questions on repeat; technical teams blocked because the one person who knows is in another timezone — a 24-hour round trip for a one-line answer; and new joiners chasing seniors for access and product context they can't find themselves.
2,000+ employees, already on Microsoft 365. So this ships as a Microsoft Teams app, not another portal people forget to open — with admin tabs for sources, access, and unanswered questions. If Teams can't support the data controls, the same backend serves a web interface instead.
The asker is the obvious user. The updater is the one who decides whether this survives past month two.
New joiners carry the highest volume — policies, documents, "where is the thing". Existing employees ask about policy edge cases and project context. They live in Teams already, so the assistant meets them there.
Owns whether the answers stay true. Gets a separate admin surface: connect sources, mark the current version of a document, restrict topics, and work the queue of questions the assistant couldn't answer.
Between them, four things have to get fixed:
This product's currency isn't answers. It's whether people believe the answers.
A general chatbot pointed at company data will answer confidently from its training data when the documents don't cover something. The user has no way to tell the two apart — and no way to check.
Hurts most: the new joiner, who has no baseline to sanity-check the answer against.There will always be a question the documents don't answer. Guessing at that moment is exactly how trust dies — and a dead end sends the user straight back to DMing a colleague, which is the behaviour we came to fix.
Hurts most: the product itself. A dead end teaches people the tool doesn't work.Policies get replaced but the old file stays in the folder. Some topics — salary bands, visa cases, exit terms — shouldn't be answered by a bot at all, even when the document exists.
Hurts most: the HR lead, who is accountable for a wrong or leaked answer.Phase 1 isn't a priority stack — it's a sequence where a missing link means nothing ships.
Document ingestion → information retrieval → response generation → source attribution → activity logging. You don't rank these against each other. If any one is missing, nothing works. Build all five, in that order. Only Phase 2 is a genuine ranking, by reach against build effort.
| Capability | Why it sits there | Priority |
|---|---|---|
| 01Document ingestion | Nothing to answer from without it | CHAIN |
| 02Information retrieval | Ingestion is dead weight unless it's findable | CHAIN |
| 03Response generation | Retrieval alone is just search | CHAIN |
| 04Source attribution | Without it, the answer isn't verifiable | CHAIN |
| 05Activity logging | No log, no way to prove accuracy or improve | CHAIN |
| 06Admin sourcing & roles | Highest reach in Phase 2 — keeps answers true | P1 |
| 07Conversational interface | Big reach, but the backend has to be right first | P1 |
| 08Uncertainty & escalation | Narrower reach, highest effort — but it compounds | P2 |
| —Teams as the surface | Meets 2,000 people where they already are | FOUNDATION |
I ranked six candidate pilot teams (HR, tech, IT, finance, sales & marketing, support) and started with HR for three reasons: its content is meant to be readable by everyone, so no access modelling blocks the pilot; success is measurable against a baseline that already exists — the HR shared inbox; and each policy has one authoritative version and one owner, so "which document is right" has an answer.
No actions. The assistant is strictly informational — it won't apply for leave, raise tickets, or update records. It also starts on manual upload rather than live drive sync, and one team rather than the whole company. Every one of those adds surface area without moving the thing that decides this product's fate: whether the first answer someone gets is right.
Both sides of the product — the employee chat and the admin console — in one clickable demo.
Opens in a new tab. Ask about notice periods, relocation, leave carry-forward, or salary bands — then ask about a sabbatical and watch what happens when it doesn't know.
Employee asks about sabbatical leave. The assistant refuses — no approved source.
One click sends the question to HR Operations, wording intact.
Switch to Admin. The question is top of the unanswered queue. Draft, approve, publish.
Back as an employee, ask again. Now it answers — citing the document that didn't exist a minute ago.
Targets tied to the four problems — not results.
This is a case study, not a live deployment, so I won't invent outcome data. These are the targets I'd hold a 10-week HR pilot to:
Accuracy — because it's the only one that leads. Resolution rate and inbox volume can both look healthy for a few weeks after accuracy has already started slipping, and by the time they move, trust is gone.
Confident hallucination. Everything else is a delay; this one is fatal.
AI is very good at sounding certain while being wrong, and trust here is one-directional. One wrong answer about notice period or PF costs more than fifty right ones buy, because people remember the miss. Once someone gets burned they go back to messaging a colleague. Usage drops, you lose the feedback that would have improved the product, and it dies quietly at 12% adoption. There is no second launch.
Answer only from approved documents, never from general knowledge. Set the confidence threshold high enough that the assistant admits uncertainty rather than guesses. Make escalation one click so a refusal still ends in an answer. Test weekly against historical Q&A. And keep sensitive topics out of the bot's hands entirely.
What's next:
Open questions still on the wall:
Want to go deeper, or talk through the calls?