AI-agents draaien straks de hele dag door op de achtergrond
TechCrunch beschreef gisteren hoe de AI-wereld 'loopy' aan het worden is: niet meer één agent die een taakje uitvoert als jij dat vraagt, maar zwermen van agents die continu in de achtergrond werken, zichzelf herhalen en autonoom beslissingen nemen. Denk aan een agent die elke vijf minuten jouw inbox checkt, leads scoort en acties uitvoert, zonder dat jij op 'go' hoeft te drukken. Dit is de richting waar de markt naartoe beweegt en het is al vandaag toepasbaar in jouw project.
Wat betekent dit voor jouw project?
Als je nu een SaaS bouwt met Claude Code, heb je waarschijnlijk al losse AI-acties: een knop die een e-mail samenvat, een formulier dat een beschrijving genereert. Dat is prima als MVP, maar de volgende stap is dat jouw app iets doet zonder dat de gebruiker erom vraagt. Een polling-loop is de eenvoudigste manier om dat te bouwen, en je kunt er vanavond mee beginnen.
Hoe pak je het aan met Claude Code?
Stap 1: Leg Claude Code uit wat je wilt bouwen
Open Claude Code in je project en geef deze prompt:
Ik wil een simpele agentic loop bouwen die elke 60 seconden een taak uitvoert op de achtergrond. De taak is: haal de nieuwste rij op uit mijn Supabase-tabel 'leads' met status 'nieuw', stuur die data naar de Anthropic API met een score-prompt, en sla de score op in hetzelfde record. Maak een los bestand
agent/leadScorer.tsmet een functierunLoop()die dit doet met een setInterval. Gebruik de bestaande Supabase-client inlib/supabaseClient.tsen de Anthropic SDK die al in mijn project staat.
Claude Code leest je bestaande bestanden en bouwt het nieuwe bestand passend bij jouw setup.
Stap 2: Laat de agent-logica schrijven
Als Claude Code vraagt om verduidelijking over de score-prompt, geef dan dit als input:
De score-prompt die je naar de Anthropic API stuurt is: "Je bent een sales-assistent. Beoordeel deze lead op basis van naam, bedrijf en omschrijving. Geef een score van 1 tot 10 en één zin uitleg. Geef je antwoord als JSON: { score: number, uitleg: string }. Lead-data: [DATA]"
Claude Code vult [DATA] automatisch in met de echte lead-data uit Supabase.
Stap 3: Voeg een start-commando toe
Vraag Claude Code daarna:
Voeg een script toe aan package.json met de naam
agent:startdatagent/leadScorer.tsuitvoert met tsx. Voeg ook een eenvoudige console.log toe bij elke loop-iteratie zodat ik zie dat hij draait.
Je krijgt dan iets als:
{
"scripts": {
"dev": "next dev",
"agent:start": "tsx agent/leadScorer.ts"
}
}
En de loop zelf ziet er globaal zo uit:
// agent/leadScorer.ts
import { supabase } from '../lib/supabaseClient'
import Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic()
async function scoreLead() {
const { data: lead } = await supabase
.from('leads')
.select('*')
.eq('status', 'nieuw')
.limit(1)
.single()
if (!lead) {
console.log('Geen nieuwe leads gevonden, wacht...')
return
}
const message = await client.messages.create({
model: 'claude-opus-4-5',
max_tokens: 256,
messages: [{
role: 'user',
content: `Je bent een sales-assistent. Beoordeel deze lead en geef { score: number, uitleg: string }. Lead: ${JSON.stringify(lead)}`
}]
})
const resultText = message.content[0].type === 'text' ? message.content[0].text : ''
const result = JSON.parse(resultText)
await supabase
.from('leads')
.update({ score: result.score, score_uitleg: result.uitleg, status: 'gescoord' })
.eq('id', lead.id)
console.log(`Lead ${lead.id} gescoord: ${result.score}/10`)
}
export function runLoop() {
console.log('Agent gestart, loop elke 60 seconden...')
scoreLead()
setInterval(scoreLead, 60_000)
}
runLoop()
Stap 4: Maak het veilig voor productie
Een loop zonder foutafhandeling crasht bij de eerste API-fout. Vraag Claude Code:
Wikkel de scoreLead-functie in een try-catch. Als er een fout optreedt, log die dan en ga gewoon door met de volgende iteratie. Voeg ook een check toe: als de Anthropic API een response geeft die geen geldige JSON is, sla dan de lead over en zet de status op 'score-fout'.
Stap 5: Test lokaal
Start de agent in een apart terminal-venster:
npm run agent:start
Voeg handmatig een rij toe aan je leads-tabel met status = 'nieuw' en kijk of de agent die binnen 60 seconden oppikt en verwerkt.
Wat te checken na afloop
- Zie je in de terminal elke iteratie een log-regel?
- Wordt de lead in Supabase bijgewerkt van
status: 'nieuw'naarstatus: 'gescoord'? - Staat er een score en uitleg in de kolommen
scoreenscore_uitleg? - Als je de API-key weghaalt, logt de agent dan de fout netjes en stopt hij niet helemaal?
Als dat allemaal klopt, heb je een werkende agentic loop. De volgende stap is hem draaien als een achtergrondproces op je server of via een cron-job op Vercel, maar dat is stof voor een andere post.
Bij Eighty leer ik je Claude Code in het Nederlands gebruiken, van installatie tot een werkend SaaS-product. Wekelijks een nieuwe module, persoonlijke begeleiding.
