nblab
← Terug naar projecten
Case study · AI

Interne AI-assistent voor bedrijfssystemen

Een chat/agent-omgeving waarmee het team van een klant in gewone taal vragen kan stellen aan hun eigen systemen en documenten in plaats van handmatig te schakelen tussen schermen.

Live OpenAI MCP Supabase · pgvector S3
Interface van de interne AI-assistent

Het probleem

De belangrijkste bedrijfsinformatie van de klant staat verspreid over een ERP-systeem, Salesforce en een PLM-systeem, plus een grote hoeveelheid losse documenten. Om een simpele vraag te beantwoorden schakelde het team steeds tussen meerdere schermen en zoekfuncties, en documentkennis zat vooral in hoofden en mailboxen in plaats van doorzoekbaar te zijn.

De oplossing

Ik heb een chat/agent-omgeving gebouwd die via losse MCP-servers rechtstreeks met de bestaande systemen praat, zodat de assistent gestructureerde data kan opvragen zonder dat er iets aan de brondata verandert. Daarnaast staat er een eigen MCP-server waarmee beheerders documenten kunnen uploaden: die worden automatisch in stukken geknipt en omgezet in embeddings, zodat de assistent er ook doorheen kan zoeken en citeren.

Hoe het werkt

  • Eén chatinterface waarin je in gewone taal vragen stelt in plaats van query's te bouwen.
  • Een eigen MCP-server per systeem (ERP, Salesforce, PLM) die de agent gestructureerd kan bevragen.
  • Een aparte MCP-server voor documentbeheer: admins uploaden bestanden, die automatisch worden geparsed, in chunks geknipt en omgezet in embeddings.
  • Chunks, embeddings en metadata staan in Supabase (Postgres + pgvector); de originele bestanden in S3.
  • OpenAI-modellen verzorgen het redeneren en het samenstellen van antwoorden op basis van wat de MCP-servers teruggeven.

Architectuurkeuzes

Op één punt na draait de hele omgeving lokaal: de MCP-servers, de database en de documentpijplijn staan allemaal binnen de eigen infrastructuur van de klant. Alleen de aanroep naar het taalmodel zelf gaat naar OpenAI. Die koppeling is bewust losjes gehouden, zodat dit op verzoek is in te wisselen voor een lokaal gehost model als data-soevereiniteit zwaarder gaat wegen dan het gemak van een gehoste API.

Status

Live in gebruik bij het interne team van de klant. Om vertrouwelijkheidsredenen wordt de naam van het bedrijf hier niet genoemd.

Werk je met vergelijkbare losse systemen en wil je weten of dit ook voor jouw team kan?

Neem contact op →