ToolsUniverse

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

Én tenant, to API-er. Seeden skriver tenanten gjennom PIM-API-et; alt en besøkende, en assistent eller en crawler ser, leses tilbake gjennom Discovery og Shop API.

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

01

Spesifikasjoner er typet, ikke tekst

Ingen egenskapstabeller. Hver spesifikasjon er sin egen komponent, så den kan filtreres, rangeres, oversettes og eksporteres uten parsing.

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
02

Taksonomi, merker og batteriplattformer

Elleve topic maps beskriver hvert produkt slik bransjen tenker, på fire språk.

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.

03

Utleie med ekte booking

Tungt utstyr leies per dag, helg, uke eller fire uker, fra fem depoter i Oslo, Bergen, Stockholm, Göteborg og Rotterdam.

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.

04

Fire språk, tre valutaer, mva. begge veier

Navn, tekster, topics, bildetekster og URL-stier er oversatt. Språket velger markedet.

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.

05

Rangert for hver kunde

Ingen egen anbefalingstjeneste. Én smaksvektor per kunde, og Discovery rangerer.

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.

06

Bare data fra produsentene

Ingenting kommer fra forhandlere.

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.

07

En idempotent seed

Tenanten er kode. Endre data eller modell, kjør et steg på nytt, og tenanten følger etter.

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
08

En assistent på siden, og en MCP-server for alle agenter

Samme katalog, samme rangering, to veier inn.

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øk

Ting å prøve

Ti minutter gjennom butikken.
  1. 1Bytt kunde i toppen (prøv Sindre, så Lotte) og se forsiden og kategoriene rangeres på nytt.
  2. 2Søk etter en spesifikasjon, ikke et navn. “sds max meiselhammer” →
  3. 3Åpne en batteriplattform fra menyen og se hvert verktøy, batteri og lader på den.
  4. 4Lei en meiselhammer for en helg: velg depot, se hvilke enheter som er ledige, book den i handlekurven.
  5. 5Bytt inkl./eks. mva. i toppen, og bytt språk for å se NOK og SEK.
  6. 6Spør assistenten: «Hvilke batterier passer verktøyene mine, og hvilket gir mest for pengene?»
  7. 7Legg .md til en URL for å se hva en språkmodell leser.

Koble Claude til butikken →← Tilbake til butikken