Architectuur v1.0

Productarchitectuur

Een transparant overzicht van de data-pipeline, scoring engine, zoekstack en redactionele workflows die Puurly aandrijven.

Systeemoverzicht

Open Food Facts API

Bron van producten + nutrients

Ingest worker

Normaliseert + dedupliceert

Scoring engine

0–100 per product

Postgres + Redis

Persistent + cache

Search index

Hybride keyword + vector

Data-pipeline

1

Pull

Cron pulls delta van Open Food Facts elke 6 uur.

2

Normalize

Eenheden, ingrediëntmapping, taaldetectie (NL eerst).

3

Score

Scoring engine berekent 4 pijlers en grade.

4

Publish

Versie wordt cache-busted; CDN edge-invalidate.

Scoring engine

function score(product):
  nutri  = nutriScore(product.nutriments)            # 0..100, weight 0.35
  nova   = novaScore(product.novaGroup)              # 0..100, weight 0.30
  add    = additivesScore(product.ingredients)       # 0..100, weight 0.25
  sust   = sustainabilityScore(product)              # 0..100, weight 0.10
  total  = round(0.35*nutri + 0.30*nova + 0.25*add + 0.10*sust)
  grade  = totalToGrade(total)   # A..E
  return { total, grade, breakdown: { nutri, nova, add, sust } }

Voeding

35%

NOVA

30%

Additieven

25%

Duurzaamheid

10%

Rules engine — voorbeelden

Als: Bevat E951 (aspartaam) en suiker > 10g

Dan: Cap grade ≤ C

Als: NOVA = 4

Dan: Penalty −15 punten

Als: Vezels > 6g én NOVA ≤ 2

Dan: Bonus +5 punten

Als: Bevat palmolie

Dan: Sustainability −20 punten

Als: Zout > 1.5g/100g

Dan: Penalty −10 punten

Als: Volkoren als eerste ingrediënt

Dan: Bonus +5 punten

Rollen en toegang

Gebruiker

  • · Zoeken
  • · Favorieten
  • · Profiel

Redacteur

  • · Producten beheren
  • · Blog publiceren
  • · Inzendingen modereren

Admin

  • · Gebruikers
  • · Categorieën
  • · Platforminstellingen

SEO & GEO

  • • Server-side rendering voor elke productpagina
  • • Schema.org Product + NutritionInformation
  • • Edge caching per markt (NL, BE)
  • • Auto-gegenereerde sitemap per categorie
  • • Localized URLs en metadata (NL/EN klaar)
  • • Core Web Vitals onder Google-grenzen