We engineered an AI-powered knowledge base and internal communications platform for Romania's premier luxury jewelry brand — a three-service architecture spanning Go, React, and Python that transforms internal documents into instant, source-cited answers while seamlessly querying live CRM data through natural language.
The challenge
Teilor's workforce was drowning in institutional knowledge scattered across hundreds of internal documents — PDFs, presentations, spreadsheets, and policy manuals — with no way to surface answers without manually hunting through files. On top of that, employees needed constant access to live CRM data — product catalogs, customer records, orders, invoices, and sales opportunities — but the existing ERP interface was complex and unintuitive. The company needed an AI assistant that could ingest and understand their entire document library, answer questions with precise source citations, tap directly into the CRM for real-time business data, and double as an internal messaging platform — all supporting Romanian and English, deployed on their own infrastructure with full data sovereignty.
Our solution
We built a three-service architecture, each in the language best suited to its role. The core backend is written in Go, orchestrating a full RAG pipeline: documents flow through Docling for intelligent parsing of PDFs, DOCX, PPTX, HTML, and images, then get chunked and embedded using the bge-m3 multilingual model via Ollama, and indexed into Qdrant vector database for semantic search. A query classification engine routes every user question — deciding whether to search documents, invoke CRM tools, or handle it as general conversation. The CRM plugin system connects to Teilor's Opal ERP through a REST framework with dynamic bearer authentication, forwarding each user's own credentials to query products, customers, orders, invoices, and opportunities in real time. AI responses stream via Server-Sent Events powered by Anthropic Claude, with every answer grounded in source citations. PostgreSQL handles persistence and powers River for reliable background job processing with retries. A Python FastAPI microservice runs the BAAI/bge-reranker-v2-m3 cross-encoder to rerank search results for precision. The frontend is a React 19 application leveraging the React Compiler for automatic memoization, built with Vite 7, TanStack Query for data fetching, Zustand for state management, and Radix UI with Tailwind CSS v4. Real-time WebSocket messaging supports direct and group conversations with presence indicators, read receipts, file attachments, and push notifications. The entire platform ships as a Progressive Web App with i18next powering Romanian and English internationalization.
Results
- Built full RAG pipeline ingesting PDF, DOCX, PPTX, HTML, and images with Docling parsing and Qdrant vector indexing
- Engineered streaming AI chat with Anthropic Claude delivering source-cited answers via Server-Sent Events
- Integrated CRM plugin system querying live Opal ERP data with per-user credential forwarding
- Deployed cross-encoder reranking microservice with BAAI/bge-reranker-v2-m3 for multilingual search precision
- Built real-time WebSocket messaging with presence, read receipts, file attachments, and push notifications
- Delivered React 19 PWA with React Compiler, TanStack Query, Zustand, and Radix UI on Tailwind v4
- Achieved full Romanian and English support across AI responses, UI, and document understanding