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
React
Tailwind CSS
Supabase
PostgreSQL
AWS
CloudFront
Python
FastAPI
Angular
SvelteKit
Mistral AI
Gemini
Claude Code
Edge Functions
Node.js
Playwright
Turf.js
Leaflet
Next.js
TypeScript
React
Tailwind CSS
Supabase
PostgreSQL
AWS
CloudFront
Python
FastAPI
Angular
SvelteKit
Mistral AI
Gemini
Claude Code
Edge Functions
Node.js
Playwright
Turf.js
Leaflet
Next.js
TypeScript
React
Tailwind CSS
Supabase
PostgreSQL
AWS
CloudFront
Python
FastAPI
Angular
SvelteKit
Mistral AI
Gemini
Claude Code
Edge Functions
Node.js
Playwright
Turf.js
Leaflet
Next.js
TypeScript
React
Tailwind CSS
Supabase
PostgreSQL
AWS
CloudFront
Python
FastAPI
Angular
SvelteKit
Mistral AI
Gemini
Claude Code
Edge Functions
Node.js
Playwright
Turf.js
Leaflet

Featured Projects

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

01 / 05

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
02 / 05

Complete rebuild of Ad Hoc Data's web platform across three refactor iterations: from legacy AngularJS to Angular 21 SSR, including a dual-database selection tool — KVK Pro (3.7M Dutch companies) and AI Leads (3.4M web-indexed companies across four countries) — with live record counts, 3,800+ technology filters, and dual export.

Angular 21SSRTypeScriptPostgreSQLDrizzleGeoJSONPlaywright
03 / 05

Multi-tenant CMS that lets non-technical business owners edit their custom websites. Built on a security-hardened AWS media pipeline: a fully private S3 bucket behind CloudFront Origin Access Control, presigned browser uploads, and least-privilege IAM — all defined as code with AWS CDK. A published npm SDK keeps every forked client site compatible.

Next.jsTypeScriptAWS CDKS3CloudFrontSupabaseDrizzle
04 / 05

Agentic AI content engine built for Ad Hoc Data's marketing: a daily GitHub Actions pipeline scrapes industry sources, scores inspiration with Gemini, matches it against CBS open-data statistics, and drafts a full content calendar — three social posts a week, a weekly blog, and a monthly newsletter.

PythonFastAPISvelteKitTypeScriptGeminiGitHub Actions
05 / 05

My personal AI command center: an agent platform running 48+ Supabase Edge Functions with multi-provider AI (Gemini, Claude, Mistral, OpenAI), RAG knowledge bases on pgvector, a HubSpot OAuth2 app, and an analytics cockpit. Its public face is the Justin AI chat widget — running live on this site right now.

ReactTypeScriptSupabaseEdge FunctionspgvectorStripeHubSpot
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 };
}