Over deze demo
Een gereedschapswinkel native gebouwd op Crystallize
Tools Universe is een demo voor de gereedschapshandel in Scandinavië en de Benelux: zes fabrikanten, kopen of huren, zakelijke klanten en consumenten, vier talen. Alles is gewoon Crystallize: de webwinkel leest de Discovery API en de Shop API en verder niets.
416
producten van zes fabrikanten, 611 uitvoeringen
~2.800
getypeerde specificatiewaarden, 106 componenten met ETIM-code
13
accuplatformen
24
huurmachines, 75 eenheden in vijf depots
4
talen en drie valuta
Hoe het samenhangt
Fabrikantbronnen
Datasheets, adviesprijzen en beelden van de eigen sites van de zes merken. Geen data van dealers.
Seed
npm run seed: tien idempotente stappen, van model tot klanten
Crystallize-tenant
PIM
Shapes, getypeerde pieces, topics, ETIM-klassen, vectoren
Discovery API
Zoeken, facetten, rankBy met de smaak van de klant
Shop API
Winkelwagen, afrekenen, bestellingen, offertes, huurboekingen
Webwinkel
Next.js 16, gecachte Discovery-reads, klantdata gestreamd
Wie leest het
Klanten
Vier talen, btw-schakelaar, accountkiezer
Assistent op de site
Claude met de catalogustools
MCP-clients
Claude, Claude Code, elke MCP-host
Crawlers en LLM’s
JSON-LD, llms.txt, .md-pagina’s
Specificaties zijn getypeerd, geen tekst
Een machine heeft twee gedeelde pieces, power (voeding, spanning, motor) en physical (gewicht, maten, trilling, geluid), en één specificatiefamilie per product: boren, beton, zagen, schuren, houtbewerking, bevestigen, installatie, meten, afzuiging, accu en laden, bouwplaats, opslag, buiten of verbruik. De familie is een enkele keuze, dus een breekhamer kan geen zaagvelden krijgen.
Getallen zijn numerieke componenten met een eenheid (230 Nm, 18 V, 5 Ah), ja/nee zijn booleans, vaste sets zijn selecties. 106 componenten hebben hun ETIM 10.0-kenmerk, en de Noorse, Zweedse en Nederlandse labels zijn de officiële ETIM-namen. Elk product zit in zijn ETIM-klasse.
Dezelfde getypeerde waarden sturen de facetten in de categorieën (bereikfilters op slagenergie, zaagbladdiameter …), het specificatieblad, de JSON-LD met UN/CEFACT-eenheidscodes, en de specificatiefilters van de assistent en de MCP-server.
- Slagenergie
specs.concrete.impactEnergy· J (JOU) · EF002831- Gereedschapsopname
specs.concrete.toolHolder· SDS-max · EV005657- Gewicht
physical.weight· kg (KGM) · EF011121
Taxonomie, merken en accuplatformen
Merk, accuplatform, producttype, vak, materiaal, niveau, prijsklasse, kenmerk, beschikbaarheid, beeldtype en ETIM-klasse: 188 topics. Ze sturen navigatie, facetten en smaakvectoren.
Merken, accuplatformen en technologieën zijn documenten met eigen pagina’s. Het accuplatform (Milwaukee M18, Makita LXT, Hilti Nuron …) is de keuze die een vakman al gemaakt heeft: het bepaalt welke accu’s passen, en het is het sterkste signaal voor personalisatie. Accessoires, zaagbladen en accu’s noemen de machines waarop ze passen; machines hebben de aanbevolen combinaties van de fabrikant.
Verhuur met echte boekingen
Elk huurartikel is een boekbaar product met een pool van benoemde eenheden, de fysieke machines. De webwinkel toont de beschikbaarheid per depot en periode uit de Shop API, boekt de eenheid in de winkelwagen en bevestigt de boeking bij het afrekenen, gekoppeld aan de bestelling.
Drie boekingsregels bepalen de levertijd en een annuleringsvenster van 24 of 48 uur: daarbinnen kan een huur nog uit de winkelwagen en komt de eenheid vrij. Certificaateisen, borg en levering op de bouwplaats horen bij het huurartikel.
Vier talen, drie valuta, btw beide kanten op
Engels en Nederlands verkopen in EUR (21% btw), Noors in NOK en Zweeds in SEK (25%). Prijzen worden netto opgeslagen, per valuta, met staffels. De schakelaar incl./excl. btw bovenin wisselt elke prijs op de pagina; zakelijke klanten zien standaard excl. btw.
Zakelijke klanten krijgen de prijslijst van hun bedrijf uit Crystallize-markten: Discovery geeft nokPriceFor(marketIdentifiers) en de winkelwagen in de Shop API gebruikt dezelfde lijst. Factuur met inkoopreferentie, offertes in een eigen pipeline, en een accountpagina met bestellingen, huur en offertes per status.
Gerankt voor elke klant
Topics worden drie vocabulaires: ecosystem (merk en platform), work (vak en materiaal) en gear (producttype, niveau, kenmerken). Elk product heeft in elk een vector. De smaakvector van een klant wordt opgebouwd uit de bestelhistorie in de Shop API en meegestuurd als context.userTaste, met een rankBy-regel die hem mengt met verkoop, marge en voorraad.
Wissel van democlient in de header en de winkel rankt opnieuw: de voorpagina, de volgorde in categorieën, de beelden in het megamenu, combinaties en alternatieven. Sindre, een meubelmaker die alleen Festool koopt, heeft de duidelijkste vector; Lotte, weekendhoutbewerker met DeWalt, ziet een heel andere winkel.
Alleen data van de fabrikanten
Specificaties, adviesprijzen en beelden komen van de eigen sites van de zes fabrikanten, verzameld door research-agents en in het model genormaliseerd met een bron per product. Productteksten zijn voor de demo geschreven. Bosch, Festool en Hilti hebben adviesprijzen; de rest, en NOK en SEK, zijn geschat en afgerond op schapprijzen. Depots, eenheden, klanten en aantallen reviews zijn fictief.
Een idempotente seed
npm run seed draait tien stappen op volgorde: tenantinstellingen, contentmodel, taxonomie, beelden, catalogus, verhuur, vertalingen, landingspagina’s, vectoren, klanten. Elke stap kan los opnieuw; hij werkt bij wat er is in plaats van te dupliceren. De smaakvectoren komen als laatste, als concept, en worden dan gepubliceerd en geïndexeerd.
De bouw is stap voor stap opgenomen om af te spelen, en wat de Crystallize-skills ons hadden moeten vertellen wordt onderweg opgeschreven.
- 00–02
- Tenant, 29 pieces en 11 shapes, 11 topic maps
- 03–05
- 1.104 beelden, 416 producten, 24 huurartikelen
- 06–07
- Noors, Zweeds, Nederlands; landingspagina’s
- 08–09
- Vectoren en index; klanten en hun historie
Een assistent op de site, en een MCP-server voor elke agent
De knop Vraag in de header opent een winkelassistent die op Claude draait met de eigen tools van de winkel: zoeken met getypeerde specificatiefilters, productdetails, platformen, verhuur en de winkelwagen.
De winkel is ook een MCP-server. Voeg hem toe aan Claude als connector, log in als democlient en winkel vanuit de chat: vergelijk machines op een platform, boek een huurmachine, vul een winkelwagen en reken af in de winkel. Elke pagina is ook ingericht om door zoekmachines en taalmodellen gelezen te worden.
Claude koppelen aan de winkelMCP instellen, inloggen als democlient, en hoe de winkel is ingericht voor AI-zoekenOm te proberen
- 1Wissel van klant in de header (probeer Sindre, dan Lotte) en zie de voorpagina en categorieën opnieuw ranken.
- 2Zoek op een specificatie, niet op een naam. “sds max breekhamer” →
- 3Open een accuplatform in het menu en zie elke machine, accu en lader erop.
- 4Huur een breekhamer voor een weekend: kies een depot, zie welke eenheden vrij zijn, boek hem in de winkelwagen.
- 5Wissel incl./excl. btw bovenin, en wissel van taal om NOK en SEK te zien.
- 6Vraag de assistent: “Welke accu’s passen op mijn machines, en welke is het voordeligst?”
- 7Zet .md achter een URL om te zien wat een taalmodel leest.






























