The problem
The support team tagged every email by hand, and tags often got missed before a conversation was archived. We used those tags to decide what to fix in the product, so the gaps meant we were prioritising from patchy data.
What it does
- Reads each new conversation as soon as it comes into the shared inbox.
- Picks the single best tag, with a confidence score and a one-line reason.
- Applies the tag when it is confident, and sends the rest to a review queue.
- Learns from every correction the team makes, with no code changes.
Why I built it this way
- Shadow mode first. It logged what it would have done and changed nothing until we had checked its accuracy on a pilot inbox.
- It never guesses. Below a confidence threshold (starting at 0.85) a person decides.
- One tag per email, so accuracy was simple to measure.
- Personal data removed before anything was stored, in a UK/EU data region.
- Every decision logged with its reason, and a switch to pause it at any time.