# Closiq Discord Agent: An AI Customer Support Monolith 🚀

> Source: <https://dev.to/er0r/closiq-discord-agent-an-ai-customer-support-monolith-51nn>
> Published: 2026-05-28 01:08:53+00:00

*This is a submission for the GitHub Finish-Up-A-Thon Challenge*

I built the ** Closiq Discord Agent**, a full-stack modular monolith engineered to transform a Discord channel into an automated, AI-driven customer support inbox and lead management system.

When a customer messages your Discord support channel, the backend captures the conversation, handles data persistence, and fetches highly relevant context from a self-hosted Qdrant vector database (which indexes knowledge base documents stored in MinIO). It then leverages OpenRouter or OpenAI-compatible models to dynamically draft and deliver accurate, context-aware responses right back to the customer via a Discord bot.

`http://localhost:5173`

*(Tip: Insert a GIF or a couple of screenshots here showing off your React dashboard interface, your MongoDB message log view, or the Discord bot replying live in a channel!)*

## Tech Stack At A Glance

Frontend:React + ViteBackend:Node.js + Express + TypeScriptDatabases & Storage:MongoDB (Metadata), Qdrant (Vector Embeddings), and MinIO (Object Storage)Integrations:`discord.js`

& OpenRouter / OpenAI SDK

This project started as an ambitious idea but quickly stalled out. Before dusting it off for this challenge, it was just a loose collection of database models, basic tools, and a primitive, unoptimized LangChain loop sitting in a graveyard of unfinished local folders. It completely lacked a front-end management layer, and the architecture was fragile.

To bring this project to life and cross the finish line, I focused heavily on stability, user experience, and structural boundaries:

`messages`

, `knowledgebase`

, `agent`

, `infrastructure`

) to make the codebase highly maintainable.GitHub Copilot acted as an invaluable pair-programmer during this sprint, especially when it came to tying multiple disjointed storage microservices together.

`docker-compose.yml`

, getting MongoDB, Qdrant, and MinIO talking to each other effortlessly.`shared/errors`

or `config/logging`

) without muddying up the structural boundaries I put in place.
