Wat doet GBTool?
Klanten van gereedschapbeheer.nl leveren hun gereedschapslijsten in eigen Excel-formaten aan. GBTool zet die automatisch om naar het standaard GB.nl-importbestand — kolommen worden herkend, defaults ingevuld en bekende merken juist geschreven. Jij controleert het resultaat en downloadt een CSV die direct in GB.nl te importeren is.
Hoe het werkt
- Sleep een Excel (.xlsx/.xls/.xlsm) in het upload-vlak hierboven.
- De tool leest alle sheets en stuurt de rijen in batches door een AI-mapper.
- Je ziet per rij wat de AI heeft overgenomen, aangepast of afgeleid — met reden en zekerheid.
- Pas handmatig aan waar nodig en download het GB.nl-importbestand als CSV.
Privacy
- Twee verwerkingsopties. Bovenaan deze pagina kies je welke AI je gebruikt: Claude Haiku 4.5 (externe API, snelste) óf een lokaal model dat draait op een eigen GPU (geen data naar buiten). De rest van de tekst hieronder geldt alleen voor de Claude-optie.
- Bij de Claude-optie wordt de inhoud van je Excel verstuurd naar Anthropic (de AI-leverancier) om de mapping uit te voeren. Anthropic gebruikt deze data niet voor het trainen van modellen — zie het Anthropic privacybeleid.
- Bij de lokale optie blijft de Excel-data binnen het netwerk waar het lokale model draait — er gaat niets naar Anthropic of een andere externe partij.
- Je geüploade Excel-bestand wordt in beide gevallen direct na verwerking van de server verwijderd. De data blijft niet langer bewaard dan noodzakelijk voor de omzetting.
- Het verwerkte resultaat staat in onze eigen database en is alleen zichtbaar voor jouw account.
- Plaats geen onnodige persoonsgegevens (BSN, telefoonnummers, e-mails) in de Excel — alleen wat echt nodig is voor gereedschapsbeheer.
- Vragen over verwerking of een verwerkersovereenkomst? Neem contact op met je beheerder.
Stack & pipeline
- Node.js + Express (CommonJS) · SQLite via
better-sqlite3· vanilla JS frontend, geen bundler. - Excel-parser:
src/excelParser.jsleest sheets/headers/rijen viaxlsx. - Mapping:
src/claudeMapper.jsstuurt batches van 20 rijen parallel (concurrency 8) naarclaude-haiku-4-5met een tool-schema dat per rij een platfields-object en eenchanges-lijst teruggeeft. - System prompt is gecached (
cache_control: ephemeral) zodat herhaalde batches goedkoper en sneller zijn. - Resultaat komt in
jobs.rows_json; de originele waardes worden bewaard inchanges[].originalvoor de before/after-popover.
Auth & sessies
- bcrypt password hashes,
express-sessionin memory store (re-login bij restart, acceptabel voor 2 users). - Cookies:
httpOnly,sameSite=lax,securein productie.app.set('trust proxy', 1)zodat secure cookies werken achter nginx/Cloudflare. - Elke job-query gaat via
getJob(id, userId)en updates filteren opWHERE id = ? AND user_id = ?— een gebruiker kan andermans jobs niet zien of muteren.
Privacy-implementatie
- Mapper-keuze: per upload of per gebruiker (
user_settings.default_mapper) — Claude (Anthropic API) oflocal(Ollama opOLLAMA_BASE_URL, default Qwen 2.5 14B). De gekozen mapper wordt per job vastgelegd injobs.mappervoor audit-traceability. - Sub-verwerker (alleen bij Claude): Anthropic (VS). Vereist getekende DPA + SCCs als sub-verwerker in de verwerkersovereenkomst met de klant — Anthropic DPA. Bij
localis er géén externe sub-verwerker. - API-retentie: Anthropic bewaart requests standaard 30 dagen voor trust & safety. Vraag Zero Data Retention aan op de org-key voor klantdata-vrije logging — Anthropic Privacy Portal.
- Geen training: API-data wordt niet gebruikt voor model-training — Anthropic Privacy Policy. Bevestig per nieuwe model-release.
- Upload-bestanden: worden na verwerking gewist via
fs.unlinkin definally-block van de async pipeline (server.js— verifieerbaar in de broncode). - Lokale opslag:
jobs.rows_jsonbevat originele én gemapte waardes en heeft op dit moment geen retentie-policy — overweeg een cron-cleanup (bv.DELETE FROM jobs WHERE created_at < date('now','-90 days')). - Custom instructions per user (
user_settings.custom_instructions, max 4000 chars) gaan in elke prompt mee — gebruikers waarschuwen geen echte klantdata als voorbeeld te plakken. - Session secret:
SESSION_SECRETheeft een fallback'change-me'; in productie hard falen als de env-var ontbreekt. - Disk: SQLite is onversleuteld. Voor gevoeligere klanten: schijfencryptie of SQLCipher overwegen.
- Data-minimalisatie: alle rij-waardes gaan 1-op-1 naar de API. Voor extra zekerheid is een PII-scan (BSN/IBAN/telefoon) toe te voegen vóór verzending in
claudeMapper.buildUserPrompt.
Verantwoordelijkheden (AVG)
- Klant = verwerkingsverantwoordelijke. Wij = verwerker. Anthropic = sub-verwerker.
- Grondslag voor verwerking: uitvoering van de overeenkomst met de klant (art. 6.1.b AVG).
- Bij verzoek tot inzage/verwijdering: jobs zijn op
user_idopvraagbaar/verwijderbaar in SQLite.
Excel inlezen…
Instellingen
Hier zie je de regels die de AI bij elke import volgt — en kun je eigen instructies toevoegen die meegaan in elke verwerking.
Mapping-engine
Welke AI verwerkt standaard je imports? Per upload kun je nog afwijken.
Vaste regels
Deze regels passen we standaard toe op elke import. Ze staan vast omdat ze nodig zijn om een geldig GB.nl-importbestand te maken.
Bekende merken
Voor deze merken gebruikt de AI altijd de officiële schrijfwijze (anders Title Case).
Eigen instructies
Vrij tekstveld. Wat je hier zet wordt bij elke import aan de AI meegegeven. Handig voor klant-specifieke gewoontes, bv. "merk staat altijd in kolom B", "als categorie ontbreekt → 'Klein gereedschap'", of "vrijVeld2 niet vullen".