support automation

from technical knowledge to a useful support workflow

Support knowledge is spread across articles, screenshots, past tickets and the people who solved them. I built the systems that make that knowledge usable during a live customer conversation.

context
technical support at AMS
my role
agent service, knowledge pipeline and internal tools
scope
customer conversations, retrieval, tickets and human handoff

why I built it

The customer-facing agent connects to Chatwoot, processes incoming messages and retrieves relevant technical material. The support team uses internal tools to inspect tickets, customer context and operational data.

Behind the conversation is a separate ingestion pipeline. It prepares articles and related media for retrieval, so the assistant can use the content of a screenshot or tutorial as well as the surrounding text.

see the product

the operator’s side of support

Move from the daily overview to a ticket, its conversation, a knowledge article and the customer workspace.

Actual Hub interface with fictional tickets, contacts and operational data.

one support request, several responsibilities

Incoming messages are grouped into a coherent request. Attachments are processed according to their type, and the agent searches documentation and resolved problems before preparing a response. A useful answer can include the relevant media or lead into a ticket and human handoff.

The Hub brings tickets, customer records, machines, CRM and operational indicators into one internal interface. The knowledge pipeline and the live support agent have separate jobs: one keeps content usable; the other handles the current conversation.

engineering decisions

knowledge stays maintainable
Incremental extraction and content tracking reduce unnecessary reprocessing. Article text, media objects and search vectors need to remain consistent as source material changes.
retrieval uses two kinds of evidence
Documentation explains expected behavior. Resolved tickets add practical troubleshooting context. Searching both makes the support workflow more useful.
respect the live conversation
Message grouping and duplicate handling reduce repeated work. The agent can incorporate messages that arrive during tool execution, while incoming-message gates respect conversations already assigned to a person.
handoff has context
Ticket actions, internal notes and assignment controls support a transition to a human without making the customer restart the explanation.
make operation inspectable
Structured logs, pipeline run records and Hub views expose failures and workload to the team maintaining the system.

how it fits together

Chatwoot routes customer messages to the support agent. The agent consults prepared knowledge and ticket context and returns an answer or human handoff. An independent pipeline maintains PostgreSQL, Qdrant and media storage. The internal Hub supports the team.
Three connected responsibilities: knowledge preparation, live support and internal operation. Open full size · Mermaid source

The services use Node.js and TypeScript. Fastify handles support and Hub APIs; React and Vite provide the internal interface. PostgreSQL holds operational records, Qdrant supports semantic search and S3-compatible storage holds media.

The ingestion service extracts and enriches source material before indexing it. Provider integrations handle language, transcription and media understanding. These services support the workflow without making the public case depend on a particular model version.

technology, with a purpose

services
TypeScript, Node.js, Fastify, Drizzle and structured logging
knowledge
PostgreSQL, Qdrant, embeddings and S3-compatible storage
integrations
Chatwoot, webhooks, AI SDKs and media processing
internal tools
React, Vite, dashboards, CRM and role-based access

This work connects retrieval engineering with real support operations: ingestion, multimodal context, agent tools, human handoff and tools for the team.