I build things that arescalable

Stop building at yesterday's speed. I combine full-stack engineering with AI-native workflows to ship high-end SaaS solutions and complex data tools faster than ever.

Next.js
TypeScript
Tailwind CSS
Supabase
PostgreSQL
Mistral AI
Framer Motion
Node.js
React
LESS
Turf.js
Leaflet
Angular
Edge Functions
AES-256-GCM
Next.js
TypeScript
Tailwind CSS
Supabase
PostgreSQL
Mistral AI
Framer Motion
Node.js
React
LESS
Turf.js
Leaflet
Angular
Edge Functions
AES-256-GCM
Next.js
TypeScript
Tailwind CSS
Supabase
PostgreSQL
Mistral AI
Framer Motion
Node.js
React
LESS
Turf.js
Leaflet
Angular
Edge Functions
AES-256-GCM
Next.js
TypeScript
Tailwind CSS
Supabase
PostgreSQL
Mistral AI
Framer Motion
Node.js
React
LESS
Turf.js
Leaflet
Angular
Edge Functions
AES-256-GCM

Featured Projects

Recent work showcasing full-stack development with AI integration and complex data systems.

refundely-dash
OverzichtKanbanRoadmapAnalytics
GA4ClaritySearch ConsoleLive
Sessions
2,847
+12%
Bounce Rate
38%
−4%
Engagement
73%
+8%
Conversions
94
+23%
Sessions (7d)
Refundely

AI Invoice Processing

Upload PDF
AI Extract
Review
SEPA Export
Done
GDPR Compliant
& IBANs Encrypted
AI-Powered
01 / 03

AI-powered invoice management and SEPA payment platform for the European rental industry. Uses Mistral AI with intelligent model fallback: starts with a small model, validates quality, and escalates to larger models only when needed. IBANs are encrypted with AES-256-GCM, and serverless edge functions handle OCR and data extraction.

ReactTypeScriptSupabasePostgreSQLMistral AIEdge FunctionsAES-256-GCM
LeadHubCRM
Uitloggen
Dashboard
Overzicht van je pipeline
Sam actief
47
Totaal leads
+8 deze week
€12.4K
Pipeline MRR
+€1.2K
€8.1K
Gewogen pipeline
65% win rate
€2.8K
Won (maand)
3 deals
Hot leads
T
Thomas Janssen
SalesNL
Demo gepland
91
L
Lena Verstappen
TechNL B.V.
Gekwalificeerd
87
M
Marc Dubois
BruxellesTech
Offerte verstuurd
79
02 / 03

CrewVee CRM

Internal

Full-stack B2B CRM with agentic AI built for internal sales operations. Autonomous AI sales agents (multi-LLM: Claude, GPT-4o, Gemini) handle lead qualification 24/7, backed by RAG-powered knowledge bases and real-time conversation intelligence. Integrates with HubSpot, Pipedrive, and Salesforce via OAuth. Deployed on Supabase Edge Functions for near-zero latency.

ReactTypeScriptSupabaseClaude AIOpenAIEdge FunctionsReact Query
Loading map...
Geo Zoeken
1.2M+ BE bedrijven
Legacy Refactor
GeoJSON polygons
KBO
03 / 03

Refactored and modernized the selection tool for Ad Hoc Data, a leading B2B data provider in the Netherlands and Belgium with 1.2M+ Belgian companies in their database. Added geographic search using GeoJSON polygons, enabling users to find companies within provinces, arrondissements, or postal code areas.

JavaScriptAngularGeoJSONTurf.jsMapLibreHTMLLESS
AI-Native Development

Building with High Velocity: AI-Native Workflow

I leverage Claude Code directly in my terminal to accelerate development without sacrificing code quality. By offloading the boilerplate to AI, I maintain my focus on high-level architecture and system design. This AI-native approach allows me to tackle complex logic and ship production-ready features at a pace that traditional workflows can't match.

Terminal-First Workflow

Claude Code integrated directly into my development environment for seamless AI assistance.

AI Agents & Automation

AI agents and pg_cron jobs handle the repetitive work automatically — from lead qualification in CrewVee CRM to nightly data pipelines running in the background.

Rapid Iteration

From concept to production-ready code in hours, not days. Complex features shipped faster.

secure-ai-pipeline.ts
// Secure AI invoice processing pipeline
async function processInvoice(encryptedFile: Buffer) {
  // AES-256-GCM decryption
  const decrypted = await crypto.decrypt(
    encryptedFile,
    await getFileKey(invoice.keyId)
  );
  console.log("✓ Decryption successful");

  // Extract text with OCR
  const ocrText = await extractText(decrypted);

  // Mistral AI extraction with smart fallback
  const result = await mistral.chat({
    model: "mistral-small-latest",
    messages: [{
      role: "user",
      content: `Extract invoice data:\n${ocrText}`
    }]
  });

  // Validate & escalate if needed
  if (!isValid(result)) {
    return mistral.chat({
      model: "mistral-large-latest",
      // ... retry with larger model
    });
  }

  // Re-encrypt sensitive data before storage
  const encrypted = await crypto.encrypt(
    result.bankAccount,
    await generateKey()
  );
  console.log("✓ Encryption successful");

  return { ...result, bankAccount: encrypted };
}