The insurance chatbot is live!

The insurance chatbot is live!

Remember the insurance chatbot I mentioned a couple posts back? It’s actually out in the world now, so here’s the update.

The core is still plain Python: spaCy’s PhraseMatcher figures out which glossary term a message is about, rapidfuzz catches typos when there’s no exact match, and a hand-written dispatcher ties intent recognition, conversation state, and response templates together into something that holds an actual back-and-forth (“what’s a premium?” → “give me an example” → “how’s that different from replacement cost?”) instead of answering one lookup at a time. The glossary itself grew to over 1,300 terms along the way, each with a proper definition, examples, and related terms.

Once that core worked from the command line, I wrapped it in a small FastAPI backend and deployed it on Render, then built a plain static HTML/CSS/JS frontend (no framework, no build step) and put that on Vercel. So now reaching the bot means opening a browser instead of calling curl or Postman - three separate repos, but the original chatbot repo didn’t need to change at all to make that happen.

A few things I liked about how this went: testing it by hand kept catching real bugs that the test suite alone wouldn’t have (a scroll-into-view bug in the frontend, a quiz answer that always repeated the same example sentence), which was a good reminder that “runs without errors” and “actually works well” are different bars. I also ended up dropping RASA early on - it’s basically in maintenance mode now - and built the NLU bits myself with spaCy instead, which turned out to be a better fit anyway for something this scoped.

Next up: a Spanish version of the glossary, and picking away at the intent phrasing so the bot understands more of the ways people actually ask questions.