Contact
Vlaggenschip · GovTech
India Post – klachtensysteem

Landelijk in India, gegund via GeM (nov. 2025).

Lees →
Vlaggenschip · GovTech
India Post – klachtensysteem

Landelijk in India, gegund via GeM (nov. 2025).

Lees →
Internationale aanwezigheid
India · België · VK

Drie kantoren, drie tijdzones.

→
Conversational Commerce · F&B-retail

BeanBot, een AI-chatassistent voor The Coffee Bean & Tea Leaf

BeanBot en de no-code adminconsole zetten een statisch cafémenu om in een gesprek op basis van live data: ontdekken, aanbevelen, prijzen en bestellen in één interface, in 50+ vestigingen in India.

In één oogopslag

BeanBot is een inbouwbare AI-chatassistent met no-code adminconsole die Mindrops bouwde voor de 50+ vestigingen van The Coffee Bean & Tea Leaf in India. Gebouwd in TypeScript, Express, PostgreSQL met pgvector en React, beantwoordt BeanBot vragen over menu, winkels en merk op basis van live data en verwerkt het zo’n 10.000 gesprekken per maand en circa 50 bestellingen per dag.

50+Vestigingen in heel India
~10kGesprekken per maand, gebaseerd op live data
~50/dagBestellingen geplaatst, van chat tot checkout
Op maat gebouwdFull-stack TypeScript-build

De uitdaging

The Coffee Bean & Tea Leaf is een in de VS opgerichte keten van specialty koffie en thee, actief sinds 1963, met 50+ vestigingen in heel India. Cafébezoekers stellen hun vragen zoals ze denken – vanuit wat ze zoeken, hun voorkeur en hun dieetwensen – en ze maken tikfouten. Een statisch web- of PDF-menu beantwoordt daar niets van.

“Welke iced coffees hebben jullie?”, “iets zoets maar niet te zwaar”, “is de avocado toast vegetarisch?”, “welke winkel is open bij mij in de buurt?” – een menu kan daar niets van beantwoorden. Zoeken, nauwkeurigheid, bestellen en het dagelijkse beheer vielen allemaal buiten het menu; een tikfout als “lattee” leverde niets op, en elke wijziging in content of prijzen was afhankelijk van het engineeringteam. Het ontbrak aan een kanaal dat een verzoek kon begrijpen en erop kon handelen, zonder ooit een item of een prijs te verzinnen.

De oplossing

Mindrops ontwierp en realiseerde BeanBot – een full-stack TypeScript-applicatie: een inbouwbare chatwidget op een Express-API, een PostgreSQL-database met vector- en fuzzy-search-extensies, en een uitgebreide React-adminconsole. De pipeline is bewust gelaagd, zodat de meeste interacties nooit een taalmodel bereiken.

Klanten chatten zoals ze gewend zijn en krijgen rijke, gestructureerde antwoorden – gewone tekst, swipebare productkaarten met “Nu bestellen” en “Meer details”, winkelkaarten met knoppen voor route en bellen, en suggestiechips voor vervolgvragen met één tik. Het gedrag is in data vastgelegd, zodat het bedrijf de assistent vanuit de console afstemt, zonder nieuwe deployment.

Gelaagde verzoekpipeline

Verzoeken worden per type doorgestuurd. Een tik op een knop levert een vooraf ingesteld antwoord op; menu- en categoriewoorden – met tikfouttolerantie – worden rechtstreeks uit de database beantwoord. Alleen echt open vragen bereiken een taalmodel, waardoor het dagelijkse pad snel en goedkoop blijft.

Tweetraps-LLM op basis van live data

Een planner (OpenAI gpt-4.1-mini) leest het bericht en levert JSON op die beschrijft welke lookups moeten draaien – hij schrijft nooit het antwoord. Een responder (gehost via Groq) zet de resultaten om in gestructureerde blokken onder strikte anti-hallucinatieregels, en noemt alleen items die de lookup teruggaf.

Drielaagse zoekfunctie

Exacte naamovereenkomst, dan getokeniseerde relevantie, dan trigram fuzzy matching voor tikfouten (“lattee” → “Latte”) – en de zoekfunctie stopt bij de eerste passende laag. Dit pad is regelgebaseerd en statistisch, zonder modellatentie of -kosten.

Onderbouwde kennis (RAG)

Vragen over merk, beleid, het loyaliteitsprogramma en FAQ worden beantwoord met retrieval over de bedrijfswebsite. Een recursieve crawler schoont pagina’s op en deelt ze in chunks, OpenAI-embeddings voeden semantisch zoeken via pgvector, en handmatig samengestelde content wordt beschermd tegen automatische verwijdering.

Winkelzoeker & prijzen per winkel

Klanten vinden de dichtstbijzijnde winkel op geo-coördinaten of stad. Elke winkel kan basisprijzen en beschikbaarheid overschrijven, zodat de bot altijd de juiste prijs toont – ook bij dine-in, waarbij winkel en tafel uit een QR-code worden gehaald.

No-code beheer & analytics

Prompts, snelactieknoppen, begroetingen per dagdeel, welkomst- en fallbackberichten en prijsstelling per winkel staan allemaal in de database, te bewerken vanuit de console. Elke interactie wordt stap voor stap gelogd, met analytics over sessies, tokenverbruik en “Nu bestellen”-kliks.

Hoe BeanBot werkt

Elk binnenkomend bericht wordt per type doorgestuurd. De gewone route komt nooit bij een model; alleen een open vraag doorloopt de tweetrapsflow – en zelfs dan garandeert een deterministische herbouw in de backend correcte kaarten, prijzen en links.

01 · Tik op een knop

Vooraf ingesteld antwoord

Geeft content terug die in de adminconsole is geconfigureerd. Geen model.

02 · Menu / categorie

Drielaagse zoekfunctie

Koppelt categoriewoorden en tikfouten aan de catalogus. Geen model · tikfouttolerant.

03 · Open vraag

Tweetraps LLM

Plannen → opzoeken → antwoorden, onderbouwd met de resultaten. Gebruikt LLM · onderbouwd.

Wanneer een vraag open is, beslist de planner wat er wordt opgehaald en schrijft hij nooit het antwoord voor de gebruiker; de lookup-engine draait de drielaagse zoekfunctie en past winkelspecifieke prijsstelling toe; de responder schrijft het antwoord en mag alleen verwijzen naar wat de lookup teruggaf. Als vangnet herbouwt de backend product- en winkelkaarten uit de leidende databaserecords, zodat afbeeldingen, prijzen, kaartlinks en telefoonnummers altijd correct zijn, ook als het model ze weglaat.

ZoeklaagMethodeDoellatentie*
Laag 1 – ExactHoofdletterongevoelige exacte naamovereenkomst (B-tree-index)< 10 ms
Laag 2 – GetokeniseerdTokenovereenkomst over naam en beschrijving met relevantiescoring< 30 ms
Laag 3 – FuzzyTrigram-gelijkenis (pg_trgm) voor tikfouten, bijv. “lattee” → “Latte”< 50 ms

*Ontwerpdoelen gedefinieerd in de implementatie, geen gemeten productiecijfers. De zoekfunctie stopt bij de eerste passende laag.

Resultaten

Het dagelijkse menu werd iets waarmee klanten kunnen praten, en het team wijzigt prijzen en prompts vanuit de adminconsole.

GebiedVoorheenNu
ZoekenDoor een statisch menu of PDF scrollen.Vragen naar wat men zoekt; kaarten op basis van live data met prijzen en acties.
Tikfouten & vage vragenGeen resultaten, einde zoektocht.Getokeniseerde en fuzzy matching lossen ze op zonder model.
NauwkeurigheidRisico op verouderde of verkeerde informatie.Antwoorden gebaseerd op live catalogus-, winkel- en websitedata.
BestellenBladeren losgekoppeld van de bestelactie.“Nu bestellen” bij elk product, met winkel- en tafelcontext.
Content & prijsstellingEngineering-ticket plus een deployment.Bewerkt vanuit de adminconsole, geen deployment.
Kosten & latentieElk antwoord zou via een model lopen.De gewone route gebruikt bewust geen model.

Voor klanten

Producten ontdekken via een gesprek, op basis van behoefte en voorkeur, tikfouttolerante zoekfunctie, aanbevelingen op behoefte (signature, gezond, vegetarisch), en een “Nu bestellen”-actie bij elk product – met dine-in-context meegenomen uit de QR-code.

Voor het bedrijf

Nauwkeurig door het ontwerp zelf, lagere modelkosten (de meeste interacties vereisen geen inferentie), omzet gekoppeld aan chat via prijzen per winkel en deep links voor bestellingen, en volledig beheer – prompts, content en prijzen wijzigen vanuit de console, met traces per bericht en analytics voor de rest.

Operationele cijfers – vestigingen, maandelijkse gesprekken en dagelijkse bestellingen – werden tijdens de opdracht aangeleverd. De voor/na-vergelijkingen weerspiegelen de proceswijziging die het platform heeft gebracht. Er is geen onafhankelijke prestatiemeting gedaan.

Gebruikte technologieën

Een op data gebaseerde, kostenbewuste architectuur: de planner geeft alleen lookup-instructies, de responder mag alleen verwijzen naar teruggegeven items, en de backend herbouwt kaarten uit databaserecords als deterministisch vangnet.

Onderbouwde antwoorden

Wat er wordt opgehaald, staat los van hoe het wordt verwoord. Strikte anti-hallucinatieregels plus een deterministische herbouw van de kaarten uit de database sluiten verzonnen producten en prijzen uit.

Zoekstrategie

Drie lagen – exact, getokeniseerde relevantie, dan trigram fuzzy – waarbij de zoekfunctie stopt bij de eerste overeenkomst, zodat tikfouttolerantie geen modelkosten met zich meebrengt. Elke query registreert laag, duur en aantal resultaten.

Kennissynchronisatie

Een nachtelijke Rista POS-sync ververst de catalogus, daarna worden embeddings en cache opnieuw gegenereerd. Een recursieve webcrawler deelt site-content in chunks en embedt deze met checksum-gebaseerde wijzigingsdetectie.

TypeScript Node.js 18 Express Zod JWT + bcrypt PostgreSQL 16 pgvector pg_trgm Prisma ORM React 18 Vite Tailwind CSS OpenAI gpt-4.1-mini Groq (gpt-oss) text-embedding-3-small Rista POS sync AWS S3 Docker / CI/CD

Primaire en fallback-modelroutering met health-probe-failover, hybride IP- en sessie-rate-limiting, en Helmet/CORS-hardening houden de service productieklaar – een patroon dat herhaalbaar is voor elke catalogus die een gesprek zou moeten voeren.

Veelgestelde vragen

Wat bouwde Mindrops voor The Coffee Bean & Tea Leaf?
BeanBot: een inbouwbare chatwidget die het cafémenu omzet in een gesprek – ontdekken op intentie, tikfouttolerant zoeken, aanbevelingen, een winkelzoeker met prijzen per vestiging en een “Nu bestellen”-actie bij elk product – plus een React-adminconsole waarin het team prompts, content en prijzen aanpast zonder deployment.
Op welke technologieën draait BeanBot?
TypeScript op Node.js 18 en Express, PostgreSQL 16 met pgvector en pg_trgm via Prisma, en een adminconsole in React 18, Vite en Tailwind CSS. OpenAI gpt-4.1-mini plant de lookups, een via Groq gehost model schrijft de antwoorden, text-embedding-3-small maakt zoeken in de merkwebsite mogelijk en een nachtelijke Rista POS-sync ververst de catalogus.
Hoe voorkomt BeanBot verzonnen producten of prijzen?
Een planner-model bepaalt alleen wat er moet worden opgezocht en schrijft nooit het antwoord; de responder mag uitsluitend verwijzen naar wat de lookup opleverde; en de backend bouwt product- en winkelkaarten opnieuw op uit databaserecords, zodat afbeeldingen, prijzen, kaartlinks en telefoonnummers kloppen. Knoptikken en menuzoekopdrachten bereiken nooit een model.
Welk volume verwerkt BeanBot?
Volgens de operationele cijfers die binnen de opdracht zijn aangeleverd, bedient BeanBot 50+ vestigingen in heel India, met zo’n 10.000 gesprekken per maand en circa 50 bestellingen per dag van chat tot checkout.
Kan Mindrops een conversationele assistent voor onze catalogus bouwen?
Ja. Mindrops bouwt AI-chatbots en systemen voor generatieve AI die hun antwoorden onderbouwen met first-party data, ook voor merken in retail en e-commerce. Vraag een offerte aan – we reageren binnen één werkdag.

Contact

Vertel ons wat uw klanten vragen, en wij laten u zien hoe we het zouden aanpakken. Mindrops bouwt kostenbewuste conversationele systemen met onderbouwde antwoorden op first-party data, van intentieplanning tot no-code beheer.

Meer projecten met conversational AI · Meer cases →

We gebruiken noodzakelijke cookies om deze website te laten werken. Analytische en marketingcookies zijn optioneel.