Turning years of email and Teams history into a handover knowledge base
About 121,000 messages sat in one operations lead's email and Teams history, the record of years running vendors, contracts, and facilities work. Some of it needed to become a shared reference before a role transition. Most of it needed to disappear first, and that sorting had to happen locally, without any of it going to an outside AI service.
Category
Institutional knowledge handover and data governance.
What I was trying to accomplish
Get the operations knowledge locked in years of one employee's email and Teams history into a form their colleagues could query themselves, ahead of a role transition, without any personnel, board, or personal material coming along with it.
The data challenges
The same mailbox and chat history that held the useful knowledge also held everything that couldn't be shared, so the design had to separate the two before anything else happened. About 121,000 messages across email and Teams needed classifying, and most of that had to run without sending anything to an outside AI service.
The result
A knowledge base built as two layers on purpose: a small, verified, human-readable tier, about twenty topic and vendor guides, checked by an adversarial review pass whose only job was to find errors in the first pass, sitting on top of a much larger evidence layer classified locally, with a hard rule that nothing unverified or unscreened reaches either tier. Along the way, when a smaller, faster local model was suggested as an alternative, Claude tested both against a sample rather than just going with the suggestion, and the results argued for keeping the larger, slower one.
Technical details
Tools: Claude Cowork, Microsoft 365 connector, a local language model (Qwen 2.5 via Ollama), Python, SQLite, Claude Projects
An operations lead at the firm was the person colleagues asked about vendors, contracts, systems, facilities, and who to call when something broke. Ahead of a role transition, the firm needed that knowledge in a form their colleagues could query on their own. The best source was that person's own mailbox and Teams history, which by nature also held personnel, board, and other confidential material that had to stay out of a shared reference.
The work had two layers. The top layer was about twenty topic and vendor guides, researched with Claude through the Microsoft 365 connector, tagged as verified, verify, or unknown, then put through a separate adversarial pass whose only job was to find errors in the first pass. It caught several. The evidence layer underneath came from two mailbox export files of roughly 18 GB combined, about 121,000 messages in all. Claude Cowork drove that side across two Macs: every message was extracted into a local database with counts reconciled against the source, then classified in two stages. Rules removed whole categories first, and a local open-weight model judged the rest, so the archive was never bulk-uploaded to an outside AI service.
The outputs were a cleared knowledge-base database, about 8,000 short operational notes with no raw message text, a keep-or-delete spreadsheet for the operations lead's rulings on edge cases, and setup instructions for a shared Claude Project so their successors could query it themselves. The challenges were the kind that only show up at scale: a ten-hour classification run died silently while a status message reported it complete, caught only by checking the log; a local model once exhausted a Mac's memory; and Claude found and disclosed a bug it had introduced, where later restore steps quietly undid exclusions, and fixed it by making every hard exclusion run last.
Pull up a chair.
Let's talk through where things stand, and where they could go.