Om demoen
En verktøybutikk bygget direkte på Crystallize
Tools Universe er en demo for verktøybransjen i Norden: seks produsenter, kjøp eller leie, firmakunder og privatkunder, fire språk. Alt er ren Crystallize: nettbutikken leser Discovery API og Shop API og ingenting annet.
416
produkter fra seks produsenter, 611 utgaver
~2 800
typede spesifikasjonsverdier, 106 komponenter med ETIM-kode
13
batteriplattformer
24
leiemaskiner, 75 enheter på fem depoter
4
språk og tre valutaer
Slik henger det sammen
Produsentkilder
Datablader, listepriser og bilder fra de seks merkenes egne nettsider. Ingen data fra forhandlere.
Seed
npm run seed: ti idempotente steg, fra modell til kunder
Crystallize-tenant
PIM
Shapes, typede pieces, topics, ETIM-klasser, vektorer
Discovery API
Søk, fasetter, rankBy med kundens smak
Shop API
Handlekurv, kasse, ordrer, tilbud, leiebookinger
Nettbutikk
Next.js 16, mellomlagrede Discovery-kall, kundedata strømmes inn
Hvem leser den
Kunder
Fire språk, mva.-bryter, kontovelger
Assistent på siden
Claude med katalogverktøyene
MCP-klienter
Claude, Claude Code, enhver MCP-vert
Crawlere og LLM-er
JSON-LD, llms.txt, .md-sider
Spesifikasjoner er typet, ikke tekst
Et verktøy har to felles pieces, power (strømkilde, spenning, motor) og physical (vekt, mål, vibrasjon, støy), og én spesifikasjonsfamilie valgt per produkt: boring, betong, saging, sliping, trebearbeiding, festing, installasjon, måling, avsug, batteri og lading, byggeplass, oppbevaring, utendørs eller forbruk. Familien er et enkeltvalg, så en meiselhammer kan ikke få feltene til en sag.
Tall er numeriske komponenter med enhet (230 Nm, 18 V, 5 Ah), ja/nei er boolske, faste sett er valg. 106 komponenter har sin ETIM 10.0-egenskap, og de norske, svenske og nederlandske etikettene er ETIMs offisielle navn. Hvert produkt ligger i sin ETIM-klasse.
De samme typede verdiene styrer fasettene i kategoriene (intervallfiltre på slagenergi, bladdiameter …), spesifikasjonsarket, JSON-LD med UN/CEFACT-enhetskoder, og spesifikasjonsfiltrene til assistenten og MCP-serveren.
- Slagenergi
specs.concrete.impactEnergy· J (JOU) · EF002831- Verktøyfeste
specs.concrete.toolHolder· SDS-max · EV005657- Vekt
physical.weight· kg (KGM) · EF011121
Taksonomi, merker og batteriplattformer
Merke, batteriplattform, produkttype, fag, materiale, nivå, prisklasse, egenskap, tilgjengelighet, bildetype og ETIM-klasse: 188 topics. De styrer navigasjon, fasetter og smaksvektorer.
Merker, batteriplattformer og teknologier er dokumenter med egne sider. Batteriplattformen (Milwaukee M18, Makita LXT, Hilti Nuron …) er valget en fagperson allerede har tatt: den avgjør hvilke batterier som passer, og den er det sterkeste signalet i personaliseringen. Tilbehør, blader og batterier oppgir maskinene de passer til; maskinene har produsentens anbefalte tilbehør.
Utleie med ekte booking
Hver leievare er et bookbart produkt med en pool av navngitte enheter, de fysiske maskinene. Nettbutikken viser ledighet per depot og periode fra Shop API, booker enheten i handlekurven og bekrefter bookingen i kassen, koblet til ordren.
Tre bookingregler gir ledetid og et avbestillingsvindu på 24 eller 48 timer: innenfor det kan en leie fortsatt fjernes fra handlekurven, og enheten frigjøres. Sertifikatkrav, depositum og levering til byggeplass er en del av leievaren.
Fire språk, tre valutaer, mva. begge veier
Engelsk og nederlandsk selger i EUR (21 % mva.), norsk i NOK og svensk i SEK (25 %). Prisene lagres netto, per valuta, med mengderabatter. Inkl./eks. mva.-bryteren i toppen bytter hver pris på siden; firmakunder ser eks. mva. som standard.
Firmakunder får firmaets prisliste fra Crystallize-markeder: Discovery gir nokPriceFor(marketIdentifiers), og handlekurven i Shop API bruker samme liste. Faktura med innkjøpsreferanse, tilbud i egen pipeline, og en kontoside med ordrer, leie og tilbud etter status.
Rangert for hver kunde
Topics blir tre vokabularer: ecosystem (merke og plattform), work (fag og materiale) og gear (produkttype, nivå, egenskaper). Hvert produkt har en vektor i hver. Kundens smaksvektor bygges fra ordrehistorikken i Shop API og sendes med hvert kall som context.userTaste, med en rankBy-regel som blander den med salg, margin og lager.
Bytt demokunde i toppen, så rangeres butikken på nytt: forsiden, rekkefølgen i kategoriene, bildene i megamenyen, tilbehør og alternativer. Sindre, en møbelsnekker som bare kjøper Festool, har den tydeligste vektoren; Lotte, helgesnekker med DeWalt, ser en helt annen butikk.
Bare data fra produsentene
Spesifikasjoner, listepriser og bilder kommer fra de seks produsentenes egne nettsider, samlet av research-agenter og normalisert inn i modellen med kilde per produkt. Produkttekstene er skrevet for demoen. Bosch, Festool og Hilti har listepriser; resten, og NOK og SEK, er estimert og avrundet til hyllepriser. Depoter, enheter, kunder og antall anmeldelser er fiktive.
En idempotent seed
npm run seed kjører ti steg i rekkefølge: tenant-innstillinger, innholdsmodell, taksonomi, bilder, katalog, utleie, oversettelser, landingssider, vektorer, kunder. Hvert steg kan kjøres for seg; det oppdaterer det som finnes i stedet for å lage duplikater. Smaksvektorene beregnes til slutt, skrives som utkast, publiseres og indekseres.
Byggingen er tatt opp steg for steg for avspilling, og det Crystallize-skillsene burde ha fortalt oss, skrives ned underveis.
- 00–02
- Tenant, 29 pieces og 11 shapes, 11 topic maps
- 03–05
- 1 104 bilder, 416 produkter, 24 leievarer
- 06–07
- Norsk, svensk, nederlandsk; landingssider
- 08–09
- Vektorer og indeks; kunder og historikk
En assistent på siden, og en MCP-server for alle agenter
Spør-knappen i toppen åpner en handleassistent som kjører på Claude med butikkens egne verktøy: søk med typede spesifikasjonsfiltre, produktdetaljer, plattformer, utleie og handlekurv.
Butikken er også en MCP-server. Legg den til i Claude som kobling, logg inn som demokunde og handle fra chatten: sammenlign verktøy på en plattform, book en leiemaskin, fyll handlekurven og gå til kassen i butikken. Hver side er også laget for å leses av søkemotorer og språkmodeller.
Koble Claude til butikkenMCP-oppsett, demoinnlogging, og hvordan butikken er satt opp for AI-søkTing å prøve
- 1Bytt kunde i toppen (prøv Sindre, så Lotte) og se forsiden og kategoriene rangeres på nytt.
- 2Søk etter en spesifikasjon, ikke et navn. “sds max meiselhammer” →
- 3Åpne en batteriplattform fra menyen og se hvert verktøy, batteri og lader på den.
- 4Lei en meiselhammer for en helg: velg depot, se hvilke enheter som er ledige, book den i handlekurven.
- 5Bytt inkl./eks. mva. i toppen, og bytt språk for å se NOK og SEK.
- 6Spør assistenten: «Hvilke batterier passer verktøyene mine, og hvilket gir mest for pengene?»
- 7Legg .md til en URL for å se hva en språkmodell leser.






























