Technical support assistant

Reached QA and a team trial Sep 2026
  • Flask
  • React
  • Qdrant
  • Azure OpenAI
  • SQL Server
  • Bamboo

After-sales staff answered torque, compatibility and warranty questions by searching three separate systems. I built an assistant that answers in plain language and cites the page, revision or claim record it relied on.

0.1 sfor a repeated question, down from 15.3 s
Questionplain languageSearchkeywords and meaningEvidencepage, revision or claim recordAnswerwith its source

Strong match: it answers and cites what it used

Weak match: it says so and names what is missing

Schematic, not the real interface.

Method and results

  1. Retrieval combines BM25 keyword matching with Qdrant vector search, merged by reciprocal rank fusion. Exact model codes receive extra weight.
  2. The language model never writes a safety-critical number itself. Torque values are parsed into rows with their page and revision, and the model can only choose among them. A test fails any printed number that does not appear in the evidence.
  3. Below a similarity threshold it says that it has no strong match and names what is missing.
  4. Compatibility charts are rebuilt from the ruling lines in the PDF and checked against the page text. Of 506 charts, 73 fail that check and are withheld.
  5. Sign-in uses company single sign-on, with the token exchange on the server. Ingestion runs hourly on weekdays and compares file fingerprints first, so an unchanged run takes 0.75 s rather than about 8 minutes.
  6. An answer cache brought repeated questions from 15.3 s to 0.1 s. The code has 25 test suites and is deployed through Bamboo.
  7. I found and fixed a defect in which chat history on a shared computer appeared for the next person to sign in.