LokaleBanen – Van spreadsheet-chaos naar real-time revenue intelligence

Hoe we een netwerk van vacatureportalen van uren handmatig rapportwerk naar instant financieel inzicht brachten

Client: LokaleBanen
LokaleBanen logo
Data Visualisatie
Maatwerk Software
Google Sheets Automatisering

LokaleBanen exploiteert een netwerk van lokale vacatureportalen in Nederland. Ze verkopen abonnementen, losse vacatureplaatsingen en credits aan werkgevers die personeel zoeken. Hun financiële data zat echter opgesloten in een complexe Google Sheets-structuur met 4 tabs en meer dan 10 databereiken — waardoor elke rapportagecyclus uren handmatig werk kostte en de data altijd verouderd was tegen de tijd dat het rapport klaar was.

Resultaten

~95%

Tijdsbesparing

Van circa 6 uur handmatige rapportage per cyclus naar een real-time dashboard dat elke 15 minuten automatisch ververst

24x

Snellere data-verversing

Van wekelijkse handmatige rapporten naar automatische updates elke 15 minuten

0

Handmatige rekenfouten

Geautomatiseerde NL/EN bedragparsing en proportionele multi-portal verdeling elimineren menselijke rekenfouten volledig

9

Interactieve visualisaties

Van ruwe spreadsheet-data naar 9 overzichtelijke grafieken: omzet, targets, liquiditeit en meer — filterbaar per portaal en periode

🎯De Uitdaging

  • Financiële data verspreid over 4 tabs en 10+ databereiken in Google Sheets — geen centraal overzicht mogelijk
  • Handmatig samenvoegen van targets, abonnees, vacatureplaatsingen, credits en gap-to-target data per portaal per maand
  • Multi-portal abonnees (één abonnee op meerdere portalen) vereisten handmatige proportionele verdeling van bedragen
  • Spreadsheet bevatte een mix van Nederlandse en Engelse notaties (EUR 34.920,21 vs 1,234.56; Yes/Ja; No/Nee) — foutgevoelig bij handmatige interpretatie
  • Geen onderscheid tussen gegarandeerde omzet (bevestigde contracten) en risicovolle verwachte omzet (opzegbare abonnementen)
  • Geen inzicht in liquiditeitsverdeling: welk deel van de omzet is maandelijks, jaarlijks of eenmalig gefactureerd?
  • Rapportagecyclus kostte geschat 4-8 uur per keer — data was altijd verouderd bij oplevering

💡Onze Oplossing

  • Password-protected web dashboard met cookie-based authenticatie en 30-dagen sessie voor veilige toegang
  • Geautomatiseerde JWT-geauthenticeerde batchGet die alle 10 databereiken uit 4 Google Sheets tabs in één keer ophaalt
  • Intelligente data-transformatie engine die automatisch NL/EN bedragnotaties detecteert en parseert, percentages verwerkt, en multi-portal abonnees proportioneel verdeelt
  • ISR caching (15 minuten) zodat het dashboard razendsnel laadt zonder de Google Sheets API te overbelasten
  • 9 interactieve visualisaties: totale omzet met KPI-indicator, omzet per product (stacked bar), gegarandeerde vs. verwachte omzet, gap-to-target analyse, en liquiditeitsweergave
  • Sticky filterbar waarmee je per portaal en tijdsperiode kunt filteren — van uren Excel-werk naar één klik
  • Dynamische portal-detectie: nieuwe portalen worden automatisch opgepikt zonder code-aanpassingen
  • Visuele waarschuwingsbanner bij verwachte (risicovolle) omzet zodat het team direct ziet waar aandacht nodig is

LokaleBanen: van versnipperde spreadsheets naar real-time revenue inzicht

LokaleBanen is een snelgroeiend recruitment-platform met meer dan tien lokale vacatureportalen in Nederland. Werkgevers kunnen er abonnementen afsluiten, losse vacatures plaatsen en credits kopen. De omzetstroom is divers en het bedrijf schaalt hard, maar de financiële rapportage liep achter.

Uitdaging: financiële data opgesloten in Google Sheets

Alle omzet- en cashflowdata zat verspreid over een complexe Google Sheets-structuur:

  • 4 tabs met meer dan 10 verschillende databereiken
  • Een mix van Nederlandse en Engelse valuta-notaties (bijv. EUR 34.920,21 en 1,234.56)
  • Multi-portal abonnees die handmatig over meerdere portalen verdeeld moesten worden

In de praktijk betekende dit:

  • 4–8 uur handmatig werk per rapportagecyclus om data te exporteren, samen te voegen en te controleren
  • Regelmatige parseerfouten door gemengde NL/EN-notaties
  • Fouten of vergeten stappen bij de proportionele verdeling van multi-portal abonnees
  • Geen helder onderscheid tussen gegarandeerde omzet (contracten met vaste looptijd) en verwachte omzet (opzegbare abonnementen)
  • Geen inzicht in liquiditeit: welk deel van de omzet maandelijks, jaarlijks of eenmalig gefactureerd werd

Tegen de tijd dat een rapport klaar was, was de data al verouderd. Strategische beslissingen werden genomen op basis van achterhaalde cijfers.

Oplossing: een real-time revenue dashboard

We ontwikkelden een beveiligd web dashboard dat alle financiële data automatisch uit Google Sheets ophaalt, transformeert en visualiseert in 9 interactieve grafieken.

Datastroom en automatisering

  • Via een JWT-geauthenticeerde verbinding haalt het dashboard in één batchGet-call alle 10 databereiken uit 4 Google Sheets-tabs op.
  • Een intelligente transformatie-engine:
  • Detecteert automatisch of bedragen in Nederlandse (34.920,21) of Engelse (34,920.21) notatie staan en parseert ze correct.
  • Verdeelt omzet van multi-portal abonnees proportioneel over alle actieve portalen (bijv. 1 klant op 3 portalen → bedrag / 3 per portaal).
  • Herkent nieuwe portalen automatisch, zonder codewijzigingen.
  • Classificeert omzet als gegarandeerd (met bevestigde einddatum) of verwacht (risicovoller, opzegbaar).
  • Met Incremental Static Regeneration (ISR) in Next.js wordt de data elke 15 minuten ververst. Dit biedt vrijwel real-time inzicht zonder de Google Sheets API te overbelasten.

9 interactieve visualisaties

Het dashboard geeft een volledig financieel overzicht via 9 grafieken:

  1. Totale Omzet – KPI-indicator met trend en gemiddelde.
  2. Omzet per Product – Stacked barchart met abonnementen, vacatures en credits.
  3. Gegarandeerde Omzet – Alleen contracten met bevestigde looptijd.
  4. Verwachte Omzet – Risicovolle omzet, duidelijk gemarkeerd met een waarschuwingsbanner.
  5. Gap to Target – Per portaal: hoeveel boven of onder target.
  6. Percentage to Target – Voortgang per portaal als percentage.
  7. Target vs. Werkelijk – Maandelijkse vergelijking tussen doel en realisatie.
  8. Liquiditeitsweergave – Cashflow per facturatiefrequentie (maandelijks, jaarlijks, eenmalig) versus totale omzet.
  9. Omzetoverzicht per Portaal – Detailoverzicht per individueel portaal.

Alle grafieken zijn filterbaar via een sticky filterbar:

  • Filter op specifiek portaal
  • Kies een tijdsperiode
  • Reset alle filters met één klik

Technische stack

Het dashboard is gebouwd met een moderne, schaalbare stack:

  • Next.js 14 (App Router) en React 18
  • TypeScript met 7 zorgvuldig gedefinieerde interfaces voor type safety
  • Tremor (op basis van Recharts) voor interactieve datavisualisaties
  • Tailwind CSS voor consistente, snelle styling
  • Google Sheets API v4 met JWT service account authenticatie voor betrouwbare data-integratie
  • Next.js ISR voor automatische 15-minuten caching
  • Deploy op Vercel voor performance en eenvoudige schaalbaarheid

Resultaat: van uren werk naar direct inzicht

Het nieuwe dashboard heeft het rapportageproces bij LokaleBanen fundamenteel veranderd:

  • Van ~6 uur naar 0 minuten per rapportagecyclus – alle data wordt automatisch opgehaald, opgeschoond en gevisualiseerd.
  • 24× snellere data-verversing – van wekelijkse rapporten naar updates elke 15 minuten.
  • Geen parseerfouten meer – automatische NL/EN-detectie en conversie.
  • Consistente multi-portal verdeling – proportionele toewijzing gebeurt altijd correct en volledig geautomatiseerd.
  • Directe, portaal-specifieke analyse – met één klik in plaats van uren Excel-werk.

LokaleBanen heeft nu voor het eerst een real-time, betrouwbaar overzicht van omzetprestaties per portaal. Het team ziet in één oogopslag:

  • Welke portalen boven of onder target presteren
  • Hoe de verhouding is tussen gegarandeerde en verwachte omzet
  • Hoe de liquiditeit verdeeld is over verschillende facturatiefrequenties

Besluitvorming is verschoven van reactief naar proactief: het management stuurt nu op actuele cijfers in plaats van op achteraf gereconstrueerde spreadsheets.

Gebruikte Technologieën

Next.js 14
React 18
TypeScript
Tailwind CSS
Tremor
Google Sheets API v4
Vercel
Next.js ISR

Klaar om jouw processen te automatiseren?

Ontdek hoe wij ook jouw bedrijf kunnen helpen met slimme automatiseringen die tijd en geld besparen.