// 16 use cases (one per cell in a 4×4 matrix) + 6 client cases.

const INDUSTRIES = [
  { k: 'production', label: 'Industrie',          short: 'Industrie',   color: '#F83C72' },
  { k: 'wholesale',  label: 'Groothandel',        short: 'Groothandel', color: '#FB993F' },
  { k: 'finance',    label: 'Financial Services', short: 'FS',          color: '#A78BFA' },
  { k: 'logistics',  label: 'Logistiek',          short: 'Logistiek',   color: '#4D01B4' }
];

const DOMAINS = [
  { k: 'sales',      label: 'Sales' },
  { k: 'service',    label: 'Customer Service' },
  { k: 'admin',      label: 'Administration' },
  { k: 'operations', label: 'Operations' }
];

// === Proof stages ===
const STAGE_META = {
  live:     { label: 'Live bij klant',    dot: '●', bg: 'rgba(16,185,129,0.12)',  color: '#059669' },
  building: { label: 'In build',          dot: '○', bg: 'rgba(251,153,63,0.14)',  color: '#B86A1C' },
  concept:  { label: 'Use case uitgewerkt', dot: '◇', bg: 'rgba(167,139,250,0.14)', color: '#6D49C5' }
};

// === 16 USE CASES · exactly one per cell ===
// proof default = 'concept'. pageHref only when there is a full sandbox page.
const PATTERNS = [
  // ============ INDUSTRIE ============
  { industry: 'production', domain: 'sales', slug: 'industrie-sales',
    title: 'Voorcalculatie uit technische tekeningen',
    oneliner: 'Offerte-PDF met tekening in · voorcalculatie uit, klaar voor pricing.',
    description: 'Producenten krijgen offerteaanvragen mét technische tekeningen, en calculators zitten uren per stuk in CAD. De agent leest de PDF, herkent dimensies en maakt de voorcalculatie voor pricing.' },
  { industry: 'production', domain: 'service', slug: 'industrie-cs',
    title: 'Leveranciers- & tussenpersonen-agent',
    oneliner: 'Dagelijkse leveranciers- en tussenpersonen-mails direct beantwoord of gerouteerd met context.',
    description: 'Dagelijks mails van leveranciers en tussenpersonen over leverdata, PO-status en wijzigingen. De agent herkent het type vraag, haalt info uit ERP en productieplanning, antwoordt direct of routeert met context.' },
  { industry: 'production', domain: 'admin', slug: 'industrie-admin',
    title: 'Factuurverwerkings-agent',
    oneliner: 'Factuur-PDF in · gematcht met PO en ontvangstbon, fiattering-dossier klaar.',
    description: 'Duizenden leveranciersfacturen per maand matchen met PO\'s en ontvangstbonnen is handwerk dat de maandclose laat uitlopen. De agent leest factuur-PDF\'s, matcht regels, signaleert afwijkingen en prepareert het fiattering-dossier.' },
  { industry: 'production', domain: 'operations', slug: 'industrie-ops',
    title: 'Kwaliteitsmonitor-agent',
    oneliner: 'Kwaliteitsdata uit shop-floor, leveranciers en logboeken samengebracht, trends proactief gesignaleerd.',
    description: 'Kwaliteitsdata zit verspreid over shop-floor, leveranciersrapporten en logboeken, waardoor afwijkingen laat gezien worden. De agent centraliseert per productielijn, signaleert trends en waarschuwt proactief.' },

  // ============ GROOTHANDEL ============
  { industry: 'wholesale', domain: 'sales', slug: 'groothandel-sales',
    title: 'Offerte-agent',
    oneliner: 'Stilstaande offertes op het juiste moment opgevolgd · natuurlijk, niet pusherig.',
    pageHref: 'use case - site - offerte agent.html',
    description: 'Verstuurde offertes blijven stil liggen terwijl sales met nieuwe aanvragen bezig is, en omzet lekt weg op timing. De agent monitort stilstaande offertes, stuurt op het juiste moment een natuurlijke opvolging en signaleert wie een persoonlijke aanraking nodig heeft.',
    trigger: 'Sales verliest offertes omdat er geen tijd is voor opvolging. Marges onder druk, en handmatig nabellen schaalt niet.' },
  { industry: 'wholesale', domain: 'service', slug: 'groothandel-cs',
    title: 'Retouren- en garantie-agent',
    oneliner: 'Claim herkend, dossier opgebouwd, eerste reactie klaar voor de klant.',
    description: 'Retouren, beschadigde leveringen en garantieclaims komen via meerdere kanalen en kosten service veel tijd aan statusopzoekwerk. De agent classificeert het type claim, haalt orderdata en servicehistorie op en stelt een eerste reactie voor.' },
  { industry: 'wholesale', domain: 'admin', slug: 'groothandel-admin',
    title: 'Debiteuren- en credit-agent',
    oneliner: 'Creditcheck bij intake, betalingsbewaking continu · zonder dat iemand eraan denkt.',
    description: 'Nieuwe klantaccounts en openstaande facturen vragen constante aandacht: creditchecks, betalingstermijnen, herinneringen. De agent doet creditchecks, monitort openstaande posten en stuurt gepersonaliseerde herinneringen, signaleert risico-accounts.' },
  { industry: 'wholesale', domain: 'operations', slug: 'groothandel-ops',
    title: 'Inkomende-goederen-agent',
    oneliner: 'Aankomsten gematcht met openstaande PO\'s, voorraad direct bijgewerkt in ERP.',
    description: 'Aankomende leveringen matchen met openstaande PO\'s en voorraad bijwerken is handmatig en foutgevoelig bij grote volumes. De agent matcht aankomsten met PO\'s, signaleert afwijkingen en werkt de voorraad in het ERP bij.' },

  // ============ FINANCIAL SERVICES ============
  { industry: 'finance', domain: 'sales', slug: 'fs-sales',
    title: 'Scoping-rapport voor nieuwe klanten',
    oneliner: 'Intake-info vertaald naar een adviesklaar scoping-rapport · klaar voor het eerste gesprek.',
    description: 'Accountants doen 1-2 dagen research per lead (KvK, jaarrekening, branche-risico, fee-range) voordat het intake-gesprek überhaupt begint. De agent genereert een voorbereid scoping-rapport met risico-indicatoren, branche-benchmarks en een fee-voorstel.' },
  { industry: 'finance', domain: 'service', slug: 'fs-cs',
    title: 'Polisvragen-agent',
    oneliner: 'Routine-vragen over dekking, eigen risico en mutatie direct afgehandeld.',
    description: 'Verzekerden stellen dagelijks vragen over dekking, eigen risico en mutatiewensen, en service-medewerkers zitten uren in standaardvragen. De agent beantwoordt routine-vragen op basis van polisvoorwaarden en schakelt met back-end agents voor actuele info.' },
  { industry: 'finance', domain: 'admin', slug: 'fs-admin',
    title: 'Loonaangifte-agent',
    oneliner: 'Data opgehaald, aangifte samengesteld, afwijkingen gesignaleerd en tijdig ingestuurd.',
    description: 'Periodieke loonaangiftes (IB, VPB, premies) vergen handmatige verzameling uit loon- en salarispakketten en tijdige indiening. De agent haalt data op, stelt de aangifte samen, signaleert afwijkingen tegen eerdere aangiftes en stuurt in.' },
  { industry: 'finance', domain: 'operations', slug: 'fs-ops',
    title: 'Schadeafhandel-agent',
    oneliner: 'Kleine claims autonoom afgehandeld, grote met onderbouwing naar de schade-expert.',
    description: 'Schadeclaims komen binnen met foto\'s en beschrijvingen, en kleine en grote claims nemen evenveel tijd. De agent prioriteert op claimwaarde en complexiteit, handelt kleine claims autonoom af, prepareert complexe dossiers met aanbeveling voor de schade-expert.' },

  // ============ LOGISTIEK ============
  { industry: 'logistics', domain: 'sales', slug: 'logistiek-sales',
    title: 'Prijsonderhandelings-agent',
    oneliner: 'Markttarieven, concurrentie-info en trends verzameld · onderbouwd onderhandelingsadvies.',
    description: 'Planners en inkoop onderhandelen tarieven op basis van gevoel en eigen historie, terwijl marktcontext juist op het beslissende moment ontbreekt. De agent haalt markttarieven, concurrentie-info en trends op en geeft een onderbouwd onderhandelingsadvies.' },
  { industry: 'logistics', domain: 'service', slug: 'logistiek-service',
    title: 'Logistiek-service-agent',
    oneliner: 'Verwerkt zelfstandig de inkomende klantvragen over zendingen, door aanpassingen te maken in de juiste systemen en de klantvragen te beantwoorden.',
    pageHref: 'use case - site - logistiek-service.html',
    description: 'Klanten mailen, bellen en chatten over zendingen: waar is het, wanneer komt het, kan ik nog iets wijzigen, en hoe zit het met die vertraging? De agent herkent klant + referentie, haalt actuele info op uit TMS/WMS/carrier, past systemen aan waar nodig en antwoordt direct of escaleert naar een mens.',
    trigger: 'Klanten mailen, bellen en chatten over zendingen: waar is het, wanneer komt het, kan ik nog iets wijzigen, en hoe zit het met die vertraging? Voor een logistieke partij is dat het grootste deel van het inkomende contactvolume. Elke vraag is opzoekwerk en vaak ook een aanpassing in een systeem.' },
  { industry: 'logistics', domain: 'admin', slug: 'logistiek-admin',
    title: 'Subcontractor-factuur-agent',
    oneliner: 'Facturen gematcht met geleverde diensten, fiattering-dossier klaar.',
    description: 'Duizenden subcontractor-facturen per maand matchen met geleverde diensten vergt 5 FTE aan verzamelwerk. De agent haalt servicedata op, verrijkt factuurregels, checkt prijzen en prepareert het fiattering-dossier.' },
  { industry: 'logistics', domain: 'operations', slug: 'logistiek-ops',
    title: 'Voorraad-forecast-agent',
    oneliner: 'Vraag per SKU en locatie voorspeld, out-of-stock-risico proactief gesignaleerd.',
    description: 'Logistieke centra draaien op handmatige forecasts, en seizoensschommelingen en eenmalige events maken het onbetrouwbaar. De agent analyseert historische patronen en commerciële events, voorspelt vraag per SKU/locatie en signaleert out-of-stock-risico proactief.' }
];

// === CLIENT CASES ===
// industry + domain determine which matrix cell they anchor.
// href: full page exists · null: no page yet · show as "coming soon".
const CLIENTS = {
  mysteel_max: {
    id: 'mysteel_max', name: 'MySteel', agent: 'Offerte-agent',
    industry: 'wholesale', domain: 'sales',
    chips: ['Groothandel · Staal', 'Sales'],
    tagline: 'MySteel laat de offerte-inbox niet meer bij één mens belanden.',
    desc: 'De Offerte-agent leest elke maatwerk-aanvraag uit het webformulier, haalt prijs en gewicht op bij de leverancier, en zet een review-klare offerte in Exact Online. Daphne bepaalt nog steeds of-ie weggaat.',
    proof: 'Live sinds Q1 2026 · time-to-live 6 weken',
    status: 'live',
    href: 'client case - site - mysteel offerte agent.html'
  },
  mysteel_eva: {
    id: 'mysteel_eva', name: 'MySteel', agent: 'Klantenservice agent',
    industry: 'wholesale', domain: 'service',
    chips: ['Groothandel · Staal', 'Customer Service'],
    tagline: 'Bij MySteel handelt de klantenservice agent nu zes op de tien service-mails zelf af.',
    desc: 'De klantenservice agent leest elke mail op info@mysteel.nl, herkent waar het over gaat en laat een gespecialiseerde collega-agent het antwoord formuleren, in vijf talen. Gevoelige mails blijven mensenwerk.',
    proof: '6 op de 10 service-mails autonoom · live sinds februari 2026',
    status: 'live',
    href: null
  },
  mysteel_pack: {
    id: 'mysteel_pack', name: 'MySteel', agent: 'Pakket agent',
    industry: 'wholesale', domain: 'operations',
    chips: ['Groothandel · Staal', 'Operations'],
    tagline: 'Tot 720 orders per dag ingepakt zonder dat iemand de pack-logica in zijn hoofd hoeft te houden.',
    desc: 'De pakket agent berekent de optimale inpak per order: welke accessoires, welke doos, wanneer een pallet. Minder materiaal- en verzendkosten, warehouse krijgt één duidelijke instructie.',
    proof: '720 orders/dag op piekdagen · 20+ optimalisaties in de eerste maanden',
    status: 'live',
    href: null
  },
  pia: {
    id: 'pia', name: 'Private Insurance Assuradeuren', agent: 'Acceptatieagent',
    industry: 'finance', domain: 'operations',
    chips: ['Financial Services · Verzekeren', 'Operations'],
    tagline: 'Van uren zoekwerk naar oordelen vanuit één overzicht.',
    desc: 'De PIA Acceptatieagent brengt informatie uit 10+ bronnen samen, toetst aan de polisvoorwaarden van elke verzekeraar en wijst de aandachtspunten aan. Acceptanten oordelen gefocust en snel.',
    proof: '10+ databronnen samengevoegd · 2 branches live (boot + auto), wonen onderweg',
    status: 'live',
    href: null
  },
  youngones: {
    id: 'youngones', name: 'YoungOnes', agent: 'Freelance Support Agent',
    industry: 'logistics', domain: 'service',
    chips: ['Tech · Marktplaats', 'Customer Service'],
    tagline: 'YoungOnes-freelancers krijgen nu 24/7 antwoord, ook buiten kantoortijden.',
    desc: 'De Freelance Support Agent staat achter de chat en handelt account-, factuur- en uurvragen direct af op basis van YoungOnes\' eigen systemen. Bij drukte of buiten kantooruren: voorbereid ticket, geen "kastje naar de muur".',
    proof: '24/7 beschikbaarheid · ~7.500 vragen/jaar in scope',
    status: 'live',
    href: null
  },
  rofa: {
    id: 'rofa', name: 'Rofa', agent: 'Purchase Order Agent',
    industry: 'wholesale', domain: 'admin',
    chips: ['Groothandel · Projectmeubels', 'Administration'],
    tagline: 'Bij Rofa ligt de concept-order klaar vóórdat Gordian \'m opent.',
    desc: 'De Purchase Order Agent leest PDF-inkooporders, matcht de regels tegen het Rofa-assortiment en zet een concept-order klaar in Exact. Gordian bevestigt of corrigeert.',
    proof: '~9 op de 10 orders direct als concept klaar · ruim een werkdag per week vrijgespeeld',
    status: 'live',
    href: null
  }
};

Object.assign(window, { PATTERNS, CLIENTS, INDUSTRIES, DOMAINS, STAGE_META });
