Eigen product — CleverTech
CleverKeywords is een eigen product van CleverTech, geen klantopdracht. Deze case beschrijft het gebouwde platform en de geleverde technische capabilities; het bevat geen gebruikers-, omzet- of rankingcijfers. Genoemde aantallen betreffen de omvang en functionaliteit van het product.

Wie keyword-research doet voor een Nederlandse opdrachtgever, werkt met tooling die primair voor de Engelstalige markt is gebouwd. Dat merkten we in ons eigen werk vaak genoeg om er een eigen product van te maken: CleverKeywords (cleverkeywords.nl), een keyword-research-SaaS van CleverTech voor de Nederlandse en Belgische markt. Het verschil met Engelstalige tooling is op drie punten merkbaar.
Daar kwam een praktische randvoorwaarde bij: de zoekdata zelf — zoekvolume, CPC en difficulty — moet uit een externe bron komen. Die bouw je niet zelf; die haal je op, cachet je verstandig en verwerk je in de achtergrond, zonder dat een gebruiker naar een laadscherm zit te kijken.
De eerste versie was, eerlijk gezegd, geen productie-software. In november en december 2025 bouwden we een prototype in een low-code-omgeving om de aanname te toetsen. Dat prototype deed zijn werk als validatie en liep vervolgens tegen zijn grenzen aan: geen grip op de datalaag, geen ruimte voor eigen taalverwerking, geen fatsoenlijke jobverwerking. De keuze was daarna binair — het prototype oprekken, of het product opnieuw en goed bouwen.
We kozen voor het tweede: CleverKeywords is vanaf december 2025 volledig opnieuw opgebouwd als productie-SaaS. Inmiddels staat de teller op ongeveer 1.507 commits en draait het product live op cleverkeywords.nl.
Het platform draait als een Turborepo-monorepo waarin frontend en backend één versiegeschiedenis en één typecontract delen. De frontend is Next.js met React, TypeScript en Tailwind CSS; de backend is een Fastify-API op Node. Data zit in PostgreSQL met Prisma als datalaag, met Redis ernaast voor caching en als drager van de jobqueues.
Die monorepo-keuze is geen smaakkwestie. Een keyword-tool verandert voortdurend van datavorm — een nieuw veld op een keyword raakt de ingest, het datamodel, de API en het scherm tegelijk. In één repository is dat één wijziging met één typecontrole; in gescheiden repositories is het een migratie met afstemmingsoverleg.
DataForSEO levert de externe zoekdata: zoekvolume, CPC en difficulty. Die koppeling zit bewust achter een eigen laag in plaats van rechtstreeks in de schermen. Aanvragen lopen via BullMQ-jobqueues op Redis: een gebruiker start een zoekopdracht, de queue haalt de data op en verwerkt die in de achtergrond, en het resultaat landt in PostgreSQL. Zo bepaalt de leverancier niet de responstijd van het product, en blijven kosten en volume beheersbaar.
Naast DataForSEO staat een tweede route: een Playwright/Chromium-scraper die SERP-gegevens ophaalt waar de API-bron niet in voorziet. Twee ingestroutes achter één interne datavorm — hetzelfde patroon dat we bij klantprojecten gebruiken wanneer één externe partij te veel single point of failure is.
Zoeken binnen de eigen dataset gebeurt in PostgreSQL zelf, met pg_trgm voor fuzzy matching en unaccent voor diakrieten. Zoeken op "café" moet ook op "cafe" werken, en een typefout mag geen leeg scherm opleveren.
Dit is waar het product zich van een generieke tool onderscheidt. CleverKeywords bevat eigen taalverwerking voor het Nederlands: stemming, herkenning van samengestelde woorden, verkleinwoorden (-je, -tje, -pje) en meervoudsvormen (-en, -s, -eren). Daarbovenop zit een expliciete vergelijking tussen Nederlands en Vlaams/Belgisch-Nederlands, zodat verschil in terminologie zichtbaar blijft in plaats van weg te middelen.
Ontwerpuitgangspunt: de taalverwerking bepaalt hoe zoekwoorden geclusterd en ontdubbeld worden. Dat is het ontwerp van het product, geen gemeten uitkomst — we publiceren hier geen nauwkeurigheidscijfers omdat we die niet extern hebben gevalideerd.
Rond de datalaag zit de functionaliteit die onderzoek en opvolging in één scherm brengt: tot 1.000 gerelateerde zoekwoorden per zoekopdracht, automatische intent-classificatie, een trendlijn over zes maanden, dagelijkse rank-checks op Google.nl voor desktop én mobiel, tracking van SERP-features en positie-alerts wanneer een pagina beweegt.
Voor een realtime dashboard is het jobmodel bepalend. Rank-checks zijn periodiek werk voor duizenden zoekwoorden; dat hoort in een wachtrij met retries en spreiding, niet in een request-cyclus. BullMQ verzorgt die planning, PostgreSQL bewaart de historie waar de trends en alerts op draaien.
Het platform koppelt met Google Search Console en GA4 — zodat werkelijke vertoningen en posities naast de onderzoeksdata staan — en met Slack voor alerts. Er is daarnaast een WordPress-plugin voor gebruikers die hun content in WordPress beheren.
Aan de commerciële kant draait het op een freemium-model met betaalde tiers. Betalingen lopen via Stripe én Mollie, die laatste specifiek voor iDEAL: voor de Nederlandse markt is een creditcard-only checkout een conversielek. Authenticatie via Auth.js, transactionele e-mail via SendGrid.
Tot slot: we gebruiken het product zelf. De keyword-research voor clevertech.nl draait op de CleverKeywords-API via een interne skill. Dat is de scherpste kwaliteitscontrole die er is — elk gebrek in de data komt binnen een week terug in ons eigen werk.
Eigen product, live op cleverkeywords.nl
Keyword-research-SaaS gebouwd op een DataForSEO-datalaag, met eigen Nederlandse taalverwerking (stemming, samenstellingen, verkleinwoorden) en een Vlaams/Nederlandse vergelijking
We bouwen voor jouw bedrijf wat we voor deze klant bouwden — met heldere afspraken vooraf. 30 min vrijblijvende scoping.