Waarom documentsamenvatting automatiseren
De gemiddelde professional ontvangt wekelijks 5-10 lange documenten die gelezen of beoordeeld moeten worden: rapporten van leveranciers, brancheonderzoeken, beleidsdocumenten, offertes van partners, contracten. Elk document kost 30-90 minuten om grondig te lezen. Met Claude als lezer: 2 minuten voor een samenvatting op maat.
We bouwen voor fictief adviesbureau "Inzicht Partners" een systeem dat documenten automatisch samenvat zodra ze binnenkomen via e-mail of in een Google Drive-map worden gedropt.
Stap 1: Twee triggers instellen
Trigger A: Google Drive
Maak een map "Samenvatten" aan in Google Drive. n8n luistert op nieuwe bestanden in deze map.
In n8n: Google Drive Trigger node. Event: "File Created". Folder: /Samenvatten.
Trigger B: Gmail-bijlage
n8n luistert op e-mails met specifiek subject-label of afzender. Gmail Trigger node. Filter: subject bevat "[SAMENVATTEN]" of van specifiek e-mailadres.
Beide triggers voeden dezelfde verwerkingspipeline.
Stap 2: Bestandstekst extraheren
Claude verwerkt tekst, niet binaire bestanden. Je moet de tekst uit PDF of Word extraheren.
Optie A: Google Drive bestanden
Voor Google Docs en Google Sheets: direct exporteren als plain text via Drive API.
Voor PDF: gebruik de n8n "Extract from PDF" node (ingebouwd) of een externe service als PDF.co (gratis plan: 100 paginas/maand).
Optie B: Gmail-bijlagen
Download de bijlage via Gmail node > "Get Attachment". Stuur door naar PDF-extractie.
Voor Word-documenten (.docx): gebruik een HTTP Request naar CloudConvert API (gratis plan beschikbaar) om te converteren naar plain text.
Stap 3: Documenttype bepalen
Verschillende documenten vereisen verschillende samenvattingsstijlen. Gebruik een Code node om het documenttype te detecteren op basis van de bestandsnaam of een eerste Claude-call:
Detectielogica (JavaScript):
const naam = $json.fileName.toLowerCase();
let type = "algemeen";
if (naam.includes("contract") || naam.includes("overeenkomst")) type = "contract";
else if (naam.includes("rapport") || naam.includes("onderzoek")) type = "rapport";
else if (naam.includes("offerte")) type = "offerte";
else if (naam.includes("beleid") || naam.includes("procedure")) type = "beleid";
return [{json: { ...JSON.parse(JSON.stringify($json)), documentType: type }}];
Stap 4: Claude prompt per documenttype
Gebruik een Switch node om per documenttype de juiste Claude-prompt te selecteren.
Contract-prompt:
"Vat dit contract samen voor een Nederlandse MKB-ondernemer. Geef: 1) Partijen en onderwerp (2 zinnen), 2) Looptijd en verlengingsclausule, 3) Financiele voorwaarden en betalingstermijnen, 4) Aansprakelijkheidsbeperkingen, 5) Opzegtermijn en -voorwaarden, 6) Top 3 aandachtspunten. Max 400 woorden."
Rapport-prompt:
"Vat dit rapport samen als managementsamenvatting. Geef: 1) Kernconclusie (1 zin), 2) Belangrijkste bevindingen (3-5 bullets), 3) Aanbevelingen (2-3 bullets), 4) Relevantie voor Nederlandse MKB-bedrijven. Max 350 woorden."
Offerte-prompt:
"Vat deze offerte samen. Geef: 1) Wat wordt er aangeboden?, 2) Totaalprijs en betalingsstructuur, 3) Looptijd en deliverables, 4) Uitsluitingen en voorbehouden, 5) Vergelijking met marktstandaard (als je dit kunt inschatten). Max 300 woorden."
Beleid-prompt:
"Vat dit beleidsdocument samen. Geef: 1) Doel van het beleid, 2) Voor wie geldt het?, 3) Kernregels (5 bullets max), 4) Uitzonderingen, 5) Handhaving en consequenties. Max 300 woorden."
Stap 5: Claude API aanroepen
HTTP Request naar Claude:
URL: https://api.anthropic.com/v1/messages
Method: POST
Headers: x-api-key, anthropic-version: 2023-06-01, Content-Type: application/json
Body:
{ "model": "claude-sonnet-4-5", "max_tokens": 1500, "messages": [{"role":"user","content":"{{ geselecteerde_prompt }}\n\nDocument:\n{{ geextraheerde_tekst }}"}] }
Let op: Claude Sonnet heeft een context window van 200K tokens, wat overeenkomt met circa 150.000 woorden. De meeste zakelijke documenten passen hier ruimschoots in.
Stap 6: Samenvatting opslaan
Sla de samenvatting op in een Google Doc en in een Google Sheet log:
Google Doc aanmaken: Google Drive > Create Document node. Bestandsnaam: "Samenvatting: {{ originele_bestandsnaam }} — {{ datum }}"
Google Sheet log: voeg een rij toe aan een tracking sheet met: Datum, Bestandsnaam, Documenttype, Tekens in origineel, Tekens in samenvatting, Verwerkingstijd.
Dit geeft je inzicht in welke documenten je verwerkt en hoeveel tijd je bespaart.
Stap 7: Samenvatting versturen
Stuur de samenvatting per e-mail of via Slack:
Gmail node:
To: {{ aanvrager_email }}
Subject: Samenvatting: {{ bestandsnaam }}
Body: de Claude-samenvatting + link naar het originele document in Google Drive
Alternatief: post in een Slack-kanaal #samenvattingen als het document voor het hele team relevant is.
Stap 8: Batch-verwerking instellen
Voor het verwerken van meerdere documenten tegelijk: voeg een "Loop Over Items" node toe na de trigger. n8n verwerkt elk bestand in de map in volgorde.
Voeg een "Wait 2 seconden" node toe tussen elk document om Claude rate limits te respecteren (Anthropic: 60 requests per minuut op standaard plannen).
Voor grote batches (>20 documenten): splits de verwerking over meerdere runs via een Schedule trigger die elke 10 minuten de map controleert.
Stap 9: Kwaliteitscontrole
Niet elke samenvatting is perfect. Voeg een kwaliteitscheck toe:
Claude-lengte check: als de samenvatting minder dan 100 woorden bevat, flag het als "mogelijk onvolledig" en stuur een notificatie.
Taalcheck: als het origineel in het Engels is maar de samenvatting in het Nederlands gevraagd wordt, controleer dan of Claude de taal correct verwerkt. Voeg toe aan de prompt: "Schrijf de samenvatting altijd in het Nederlands, ook als het originele document in een andere taal is."
Stap 10: Testen
1. Dropt een PDF (bijv. een leveranciersovereenkomst) in de Google Drive-map "Samenvatten"
2. Wacht 30-60 seconden voor n8n de trigger verwerkt
3. Controleer of de tekst correct is geextraheerd
4. Controleer of het documenttype correct is gedetecteerd
5. Beoordeel de kwaliteit van de Claude-samenvatting
6. Controleer of het Google Doc correct is aangemaakt
7. Controleer of de e-mail is ontvangen
Troubleshooting
PDF-extractie geeft lege tekst: sommige PDFs zijn gescand (afbeeldingen, geen tekst). Gebruik in dat geval een OCR-service als Google Vision API of Klippa voor tekstextractie.
Claude-samenvatting is te lang: voeg expliciet "Max X woorden" toe aan de prompt. Claude respecteert dit redelijk goed, al is enige variatie normaal.
n8n Google Drive trigger mist bestanden: zorg dat de poll-interval van de trigger kort genoeg is (standaard: elke minuut). Bij n8n.cloud is dit betrouwbaarder dan bij self-hosted setups achter een firewall.
Grote documenten geven time-out: Claude heeft geen time-out, maar n8n heeft een standaard executie-timeout van 60 seconden. Verhoog dit in Settings > Workflows voor langdurige verwerking.
Kostenberekening
Claude Sonnet kost circa €3 per miljoen input-tokens en €15 per miljoen output-tokens. Een gemiddeld zakelijk document van 10 pagina's heeft circa 5.000 woorden (7.000 tokens). Een samenvatting van 400 woorden is circa 550 tokens output. Kosten per document: circa €0,03. Voor 100 documenten per maand: €3 aan API-kosten.