Reviews Documentatie
β Terug naar ReviewsWelkom bij de Reviews Module
Deze module is het centrale dashboard voor alles rond Google Reviews van NaNoi. Het haalt automatisch reviews op, vertaalt ze naar vier talen, analyseert elke reviewer met AI, en helpt je om snel en persoonlijk te reageren β allemaal vanuit één overzichtelijk scherm.
De reviews op de homepage worden automatisch bijgewerkt. Je hoeft zelf nooit handmatig reviews te kopiΓ«ren of te vertalen. Het systeem draait grotendeels op de achtergrond β jij hoeft alleen in actie te komen bij reviews die aandacht nodig hebben (3 sterren of minder) of nog onbeantwoord zijn.
Wat kan je met dit dashboard?
- π In één oogopslag zien hoeveel reviews je hebt, wat het gemiddelde is, en welke aandacht nodig hebben
- π€ AI-antwoorden genereren voor onbeantwoorde reviews β altijd in het Nederlands, in "wij"-vorm, met "u"
- π Gasten herkennen β het systeem koppelt reviews automatisch aan reservaties
- π Vertalingen beheren β reviews verschijnen in de juiste taal op de homepage (NL, EN, FR, DE)
- βοΈ Schedule beheren β pauzeren, hervatten, of aanpassen hoe vaak reviews gesynced worden
- π Analytics bekijken β rating-verdeling, trends, en AI-gegenereerde tags
Waarom deze module uniek is
De meeste restaurants gebruiken een Google Reviews widget β een statisch blokje dat "laadt" en hooguit wat sterren laat zien. Of ze gebruiken dure SaaS-tools zoals Birdeye, Trustpilot of Sprout Social die $100-$500 per maand kosten.
Wat NaNoi heeft is fundamenteel anders:
| Standaard restaurants | NaNoi Reviews Module |
|---|---|
| Google iframe widget β statisch, traag | Eigen sync-engine via Apify β Supabase pipeline |
| Geen vertalingen | AI vertaalt Γ©lke review naar NL, EN, FR, DE β homepage toont de juiste taal per bezoeker |
| Handmatig reageren op Google Maps | AI genereert concept-antwoord in 1 klik β jij checkt, kopieert, plakt |
| Geen analytics | Interactieve grafieken mΓ©t click-to-filter β klik een staaf en zie de reviews |
| "Wat anderen zeggen" | Reviews beheerd Γ©n vertaald in 4 talen β homepage toont de juiste taal per bezoeker |
| Geen koppeling met reservaties | Detail modal checkt automatisch of deze gast bekend is uit de reservatie-database |
| Nul automatisering | Health dots, overdue alerts, realtime toast-popups bij slechte reviews |
| Alleen desktop | Dark mode (OS-auto), responsive, werkt op tablet en telefoon |
| $100-500/maand SaaS | $0,50/maand aan AI- en Apify-kosten, rest is eigen infra |
Dit is geen "reviews widget". Dit is een mini-SaaS product dat toevallig voor één restaurant draait. Gebouwd op Cloudflare Workers (serverless), Supabase (database), Apify (scraping) en DeepSeek (AI) β allemaal binnen de gratis tiers. De enige terugkerende kosten zijn AI API calls van minder dan $1 per maand.
De module is het resultaat van 5 audit-rondes, 133 opgeloste issues, 11 database-migraties, en een UAT-testplan met 22 scenario's. Alles is restartable β als er iets misgaat tijdens een sync, pakt de volgende run gewoon waar de vorige stopte.
Dashboard Overzicht

Het dashboard opent op de Reviews-tab. Bovenaan staat de score-hero (je Google-score + projectie), daaronder drie actie-tiles, dan de tabs, en onderaan het Sync & schedule-blok.
Score-hero
Toont je actuele score (bv. 4,8β Β· 215 reviews), een progress-bar naar 4,9, hoeveel 5-sterren reviews je nog nodig hebt om van 4,8 naar 4,9 te gaan, en een verwachte datum bij het huidige 5β -tempo (voortschrijdend 12 maanden). "5,0 is niet realistisch" staat er als subtiele noot bij.
Actie-tiles
| Tile | Betekenis |
|---|---|
| β Aandacht | Klikbaar β toont reviews met needs_attention=true |
| π¬ Onbeantwoord | Klikbaar β toont reviews zonder eigenaar-antwoord |
| β Verdeling | Klikbaar β toont de 5β /4β -telling en opent de Analytics-tab |
Sync Runs
De Sync-geschiedenis (uitklapbaar) toont de laatste 10 sync-pogingen met:
- Tijdstip β wanneer de sync gestart is
- Type β β° Cron (automatisch), π€ Handmatig, π Webhook
- Status β completed (β ), failed (β), processing (β³), skipped (β )
- Reviews β aantal verwerkte reviews
- Error β foutmelding als de sync mislukt is
Schedule
Het Sync & schedule-blok beheert de automatische sync. Om het schema te wijzigen, pauzeer je eerst β pas daarna verschijnen de dropdown en "Toepassen":
- Actief β toont het huidige schema als read-only label + knop "Pauzeren"
- Gepauzeerd β toont de cron-dropdown + "Toepassen" + "Hervatten"
- Nu syncen β handmatige delta-sync (nieuwe reviews ophalen)
- Volledig her-scrapen β eenmalige volledige sync (met bevestiging; kost Apify-credits)
Review Tabel

Kolommen
| Kolom | Uitleg |
|---|---|
| Auteur | Naam + avatar van de reviewer. β badge = aandacht nodig |
| β | Rating (1-5 sterren) |
| Tag | AI-gegenereerde categorieΓ«n (bv. "eten", "service") |
| Taal | Originele taal van de review (NL, EN, FR, DE, IT, OTHER) |
| Vertaling | β = vertaald, β³ = in queue |
| Reply | β = beantwoord, AI = klik om AI-antwoord te genereren |
Filters
Boven de tabel staan vier filters:
- π Zoeken β filter op naam of reviewtekst
- β Sterren β filter op specifieke rating
- Status β Alle / Onbeantwoord / β Aandacht / Vertaling pending
- Taal β filter op originele taal
Onderaan de tabel staat paginatie (20 reviews per pagina).
Detail Modal

Klik op een rij in de tabel om de detail popup te openen. Deze toont:
- Review tekst β de volledige originele review
- Taaltabs β schakel tussen origineel en vertalingen (NL, EN, FR, DE)
- Eigenaar antwoord β als er al een reply is, wordt deze getoond met datum
- Gast in database β zoekt in reservaties of deze persoon bekend is. Toont bezoekhistorie + telefoon
- AI Antwoord β genereer een reply in het Nederlands. Editen en kopiΓ«ren naar klembord
AI Antwoord Genereren
Voor onbeantwoorde reviews (geen "β" in de Reply kolom) kan je met één klik een AI-antwoord laten genereren. De AI (DeepSeek) schrijft een oprecht, vriendelijk antwoord van 2-4 zinnen, specifiek afgestemd op de inhoud en toon van de review.
Hoe het werkt
- Klik op een review in de tabel β de detail modal opent
- Klik op π€ AI antwoord onderaan de modal
- De AI genereert direct een antwoord. Het tekstvak toont "Antwoord wordt gegenereerd..." β dit duurt 2-4 seconden
- Het antwoord verschijnt in een bewerkbaar tekstvak β je kan het aanpassen voordat je het gebruikt
- Klik π Kopieer om het antwoord naar je klembord te kopiΓ«ren
- Plak het antwoord in Google Maps via business.google.com
Wat de AI precies doet
- Bij positieve reviews (β₯3β ): bedankt de gast, benoemt wat gewaardeerd werd, nodigt uit terug te komen
- Bij negatieve reviews (<3β ): toont oprecht begrip, zonder te vragen om contact op te nemen
- Schrijft altijd in de "wij"-vorm (namens het hele NaNoi team)
- Spreekt de reviewer aan met "u" (formeel Nederlands)
- Gebruikt een warme, persoonlijke toon β geen generieke "Bedankt voor uw review"
- Geen aanhef ("Beste ...") en geen afsluiting ("Met vriendelijke groet") β Google Maps toont die zelf
Pro tip: Het antwoord wordt niet opgeslagen in de database. Bij de volgende sync haalt het systeem je antwoord vanzelf op van Google Maps. Zo blijft de database altijd gesynchroniseerd.
Analytics Tab

De Analytics tab geeft je inzicht in de prestaties van het restaurant door de ogen van je gasten. Het is standaard actief bij openen van de pagina.
De vier grafieken
- π Rating distributie β staafdiagram van 1β tot 5β met absolute aantallen. Klik op een staaf om alleen die reviews te zien in de lijst onderaan. Handig om snel alle 3β reviews te bekijken.
- π Review volume β hoeveel reviews per maand, over de laatste 12 maanden. Klik op een punt om die maand te filteren. Zo zie je of er in de zomer meer reviews binnenkomen dan in de winter.
- π Rating trend β gemiddelde score per maand. Daalt de lijn? Dan is er mogelijk iets veranderd in de service of kwaliteit. Stijgt de lijn? Goed bezig!
- π·οΈ Tags β een cloud van AI-gegenereerde trefwoorden. Klik op een tag om reviews met dat thema te zien. De grootte geeft aan hoe vaak het voorkomt.
Interactieve filtering
Alle grafieken zijn klikbaar. Als je op een element klikt, verandert de Top review sectie onderaan in een lijst met de gefilterde reviews. Je ziet tot 6 reviews per keer. Klik op β Terug om terug te keren naar de standaardweergave.
Je kan ook op de Aandacht en Onbeantwoord actie-tiles bovenaan klikken β die filteren direct op die categorieΓ«n in de Reviews-tab.
Reviews op de Homepage

De reviews die je in het admin dashboard beheert, worden automatisch getoond op de homepage van nanoi.be. Bezoekers zien een carrousel met reviewkaarten die van rechts naar links bewegen. Dit is hoe het werkt.
Wat bezoekers zien
Op de homepage, onder de secties "The Heart of NaNoi" en het menu-overzicht, staat een gouden balk met daarin:
- π Review cards β elke card toont de naam van de reviewer, hun Google-sterren (β ), en een quote uit hun review. De kaarten schuiven automatisch in een oneindige carrousel
- β Google rating β bovenaan de hero-sectie staat de actuele gemiddelde Google-score met het totaal aantal reviews (bijv. "4.8β Β· 212 Google Reviews")
- π Taal β de getoonde reviewtekst past zich aan aan de taal van de bezoeker. Op
/nlziet men Nederlandse vertalingen, op/deDuitse, op/frFranse
Welke reviews worden getoond?
Niet alle reviews verschijnen op de homepage. Het systeem selecteert automatisch:
| Filter | Waarde | Waarom |
|---|---|---|
| Minimale sterren | 4β (instelbaar) | Alleen positieve reviews op de homepage β negatieve reviews beheer je in de admin |
| Maximaal aantal | 6 reviews (instelbaar) | De carrousel toont maximaal 6 kaarten tegelijk voor een strak design |
| Vertaling vereist | β Ja | Alleen reviews waarvan de AI-vertaling klaar is β zo ziet elke bezoeker de juiste taal |
| Tekst aanwezig | β Ja | Alleen reviews mΓ©t reviewtekst, geen lege sterren-only reviews |
Waar staan deze instellingen?
De minimum sterren en het maximum aantal reviews staan in Instellingen β /admin/settings. In de reviews pagina zie je onder de Analytics tab een Homepage Preview die live laat zien welke reviews er nu op de homepage staan.
Vertalingen op de homepage
Dit is een van de krachtigste features van de module:
- Een Franse review van "F C" wordt door AI vertaald naar Nederlands, Engels en Duits
- Bezoekers op
/nllezen "Op twee stappen van de Grote Markt...", bezoekers op/delezen "Zwei Schritte vom Grote Markt..." - Google's eigen vertaling vertaalt de originele review β die is vaak houterig. De NaNoi AI-vertaling leest als een Γ©chte restaurantreview in elke taal
Wat gebeurt er bij een nieuwe review?
- Google sync (automatisch of handmatig) haalt de nieuwe review op
- De review krijgt status
translations_status = "pending"β hij verschijnt nog niet op de homepage - De vertalings-queue vertaalt hem (max 10 per run, automatisch)
- Zodra
translations_status = "done"is, verschijnt de review op de homepage β in de juiste taal per bezoeker
Dit proces is volledig geautomatiseerd. Je hoeft niets te doen.
Tips & Dagelijks Gebruik
Ochtend-routine (2 minuten)
- Open
/adminβ check de health dot op de Reviews module card. Groen = alles ok - Open Reviews β check de actie-tiles: is "Aandacht" > 0? Dan direct actie ondernemen
- Check de Sync runs tabel: was de laatste sync succesvol? (β completed)
Nieuwe review beantwoorden (1 minuut)
- Filter op "Onbeantwoord" in de status-dropdown
- Klik de review β detail modal opent
- Klik π€ AI antwoord β antwoord verschijnt in 3 seconden
- Lees het antwoord, pas aan indien nodig, klik π Kopieer
- Open business.google.com en plak het antwoord
- Optioneel: klik β Afgehandeld om de review als beantwoord te markeren
Negatieve review onderzoeken (3 minuten)
- Open de review via de tabel of door op "Aandacht" te klikken
- Check "Gast in database" β is dit een bekende gast met eerdere reservaties?
- Genereer een AI antwoord met die context en stuur het via Google Maps
Dashboard health dot begrijpen
Op de /admin dashboard pagina zie je een gekleurde indicator op de Reviews module card:
| Kleur | Betekenis | Actie |
|---|---|---|
| π’ Groen β | Alles gezond β sync recent, geen aandachtspunten | Geen actie nodig |
| π‘ Oranje ! | Aandacht nodig: sync gepauzeerd, of vertalingen in queue, of reviews met needs_attention | Check de reviews pagina voor details |
| π΄ Rood β | Review(s) >48u onbeantwoord β urgente actie nodig | Direct antwoorden op de betreffende review(s) |
| βͺ Grijs β | Nog nooit gesynced | Start een handmatige sync |