Ga naar hoofdinhoud
Case · Marketing30 juli 20265 min lezen

CleverSocials: SaaS-platform van prototype naar productie

3
gekoppelde publicatieplatformen
30+
Batch-generatie van 30 of meer posts per ronde, als achtergrondtaak via Celery
voice
Brand-voice-learning met meerdere stemprofielen per merk en consistency-scoring op gegenereerde content
Qdrant
Qdrant als vector-database voor embeddings, naast PostgreSQL en Redis in de backend
Screenshot van het CleverSocials-platform: contentkalender en gegenereerde social posts voor LinkedIn, Instagram en Facebook
Uitdaging

De uitdaging

CleverSocials (cleversocials.nl) is een eigen product van CleverTech AI: een platform waarmee een merk sociale content genereert, inplant en direct publiceert naar LinkedIn, Instagram en Facebook.

De eerste generatie ontstond eind 2025 als een snel prototype in een low-code/prototyping-omgeving. Dat prototype deed waarvoor het bedoeld was — het idee valideren — maar het was geen product, en begin 2026 is het platform daarom volledig herbouwd als productie-architectuur.

Die overgang is precies de vraag waar bedrijven mee komen die een SaaS laten ontwikkelen: wat komt er kijken tussen "het werkt in een demo" en "hier kan een organisatie jarenlang op draaien"?

Vier dingen maakten die herbouw noodzakelijk:

  • Een prototype-omgeving is geen fundament. Snelle prototyping-tools ruilen bewust controle in voor snelheid: je krijgt geen eigen datalaag om te versioneren, geen plek voor geautomatiseerde tests en geen grip op hoe zwaar werk wordt afgehandeld. Voor validatie is dat een goede ruil, voor een product dat doorontwikkeld moet worden niet.
  • Publiceren naar drie platformen zijn drie verschillende contracten. LinkedIn, Instagram en Facebook hebben elk een eigen API, een eigen OAuth-autorisatiestroom en eigen regels voor formaat, media en preview. Eén generieke "post"-knop bestaat niet; die illusie kost je later precies de tijd die je meende te besparen.
  • Merkstem is een datavraagstuk, geen promptregel. Het platform moet per merk meerdere stemprofielen kunnen vasthouden en gegenereerde tekst kunnen scoren op consistentie met het gekozen profiel. Dat vraagt om opslag en vergelijking van embeddings — een component dat je niet achteraf onder een bestaande applicatie schuift.
  • Batch-generatie past niet in een HTTP-request. Dertig of meer posts in één ronde laten genereren is langlopend werk. Zonder wachtrij en achtergrondverwerking is dat geen functie maar een time-out.

De opdracht aan onszelf was dus niet "bouw een social-tool", maar "bouw de architectuur waarop dat product jaren kan blijven groeien".

Aanpak & oplossing

De aanpak en oplossing

De herbouw volgde de volgorde die we ook bij klantprojecten aanhouden bij SaaS-ontwikkeling: eerst de datalaag en de verwerkingslaag, dan de integraties, dan het werkoppervlak.

1. SaaS-architectuur: van prototype naar productie

De backend draait op Python met FastAPI, met PostgreSQL als primaire database en Redis voor caching en wachtrijen. Alles wat te lang duurt voor een request — batch-generatie, publicatie-jobs, analyses — loopt via Celery als achtergrondtaak.

Het datamodel staat in SQLAlchemy, schemawijzigingen gaan uitsluitend via Alembic-migraties, en inkomend en uitgaand verkeer wordt gevalideerd met Pydantic.

Dat lijstje is niet spectaculair, en dat is het punt. Het verschil tussen een prototype en een productie-SaaS zit zelden in de zichtbare functies; het zit in de vraag of je een schemawijziging kunt terugdraaien, of zwaar werk de gebruiker blokkeert, en of iemand anders dan de bouwer de codebase kan overnemen.

Ontwerpdoel van de herbouw: een codebase waarop jaren doorontwikkeld kan worden, met migraties, tests en achtergrondverwerking als fundament in plaats van als bijzaak. Dit is het gestelde doel van de herbouw — geen na oplevering gemeten uitkomst.

2. Brand-voice-learning: merkstem als datamodel

Het onderscheidende onderdeel is brand-voice-learning: een merk legt niet één toon vast, maar meerdere stemprofielen — bijvoorbeeld een zakelijk profiel voor LinkedIn en een losser profiel voor Instagram.

Gegenereerde content krijgt een consistency-score ten opzichte van het gekozen profiel, zodat afwijkingen zichtbaar worden voordat er iets gepubliceerd wordt.

Daarvoor is een aparte opslaglaag nodig: Qdrant, een vector-database voor embeddings, draait naast PostgreSQL. Taalverwerking loopt via spaCy. De generatie zelf is LLM-gestuurd en verwerkt een hele batch in één ronde: 30 of meer posts, als achtergrondtaak, met de stemprofielen als kader.

3. API-integraties met LinkedIn en Meta

Publiceren gebeurt rechtstreeks vanuit het platform naar LinkedIn, Instagram en Facebook, met per platform een eigen preview zodat je ziet wat er daadwerkelijk verschijnt. Elke koppeling heeft een eigen OAuth-autorisatiestroom en een eigen set publicatieregels; die verschillen zijn in de integratielaag geabsorbeerd in plaats van doorgegeven aan de gebruiker.

Deze koppelingen zijn geen demo: er wordt dagelijks mee gepubliceerd. Daarnaast zijn er integraties met Hootsuite, Buffer en Canva voor teams die daar al in werken.

4. De contentkalender als werkoppervlak

De frontend is React met TypeScript (via Vite), met MUI als componentenbibliotheek, TanStack Query voor server-state, Zustand voor client-state en Recharts voor de rapportagegrafieken. Het hart is een contentkalender met maand- en weekweergave, drag-and-drop-planning, bulk-acties, gap-detectie (welke dagen zijn nog leeg) en AI-tijdsuggesties voor het inplannen.

In de repository staat daarnaast een Swift/iOS-client; die is onderdeel van de codebase en wordt niet gepresenteerd als een opgeleverde, publiek uitgebrachte app.

5. Kwaliteitsstack en uitrol

De testlaag loopt langs beide kanten van de stack: pytest voor de Python-backend, Jest met React Testing Library voor de frontend, en Playwright voor end-to-end-tests door de echte interface heen.

Statische kwaliteit wordt afgedwongen met Black, Ruff en mypy aan de Python-kant en ESLint aan de TypeScript-kant; uitrol gebeurt via Docker Compose achter Nginx.

Dogfooding: we draaien er zelf op

CleverTech AI publiceert de eigen sociale kanalen via CleverSocials, met een eigen integratie op de API van het platform. Dat is het strengste testregime dat je een eigen product kunt geven: elke ruwe rand is meteen je eigen probleem, en elke ontbrekende functie merk je op de dag dat je hem nodig hebt — niet uit een supportticket.

Resultaat

Wat het opleverde

3gekoppelde publicatieplatformen

Direct publiceren naar drie sociale platformen (LinkedIn, Instagram en Facebook) met werkende OAuth-koppelingen en een eigen preview per platform

30+
Batch-generatie van 30 of meer posts per ronde, als achtergrondtaak via Celery
voice
Brand-voice-learning met meerdere stemprofielen per merk en consistency-scoring op gegenereerde content
Qdrant
Qdrant als vector-database voor embeddings, naast PostgreSQL en Redis in de backend
kalender
Contentkalender met maand- en weekweergave, drag-and-drop, bulk-acties, gap-detectie en AI-tijdsuggesties
8tools
Kwaliteitsstack over beide kanten van de stack: pytest, Jest, React Testing Library, Playwright, Black, Ruff, mypy en ESLint
3tools
Integraties met Hootsuite, Buffer en Canva naast de directe publicatiekoppelingen
~3.164
Circa 3.164 commits op de productie-codebase sinds januari 2026
Meer in Marketing

Vergelijkbare cases

Word de volgende case

Klaar voor zulke resultaten?

Gratis AI-scan: binnen 48 uur een rapport met de AI-kansen met de hoogste ROI voor jouw bedrijf — concreet, geen verkooppraatje.