I build full-stack TypeScript systems — from the interfaces people use to the APIs, workers and data behind them.
I’m a full-stack TypeScript engineer focused on building production systems that connect frontend interfaces, backend services, automation, data and AI into one working product. I work mostly with TypeScript, React, Next.js, Node.js, NestJS, PostgreSQL, Supabase, Redis and BullMQ.
Since November 2024, I’ve been working with Eleventh House Marketing on a production email marketing, content and analytics platform. My work spans the operational dashboards used to run it, backend services and REST APIs, scheduled and queue-based processing, email-provider integrations, audience segmentation, deliverability, analytics and revenue attribution. I like building software where the interface doesn’t just display what happened — it can change what the system does next.
AI is a core part of how I build. I’ve integrated LLM workflows into production features for content generation, classification and marketing automation, and I also use advanced AI-assisted engineering workflows to break down problems, understand large codebases, plan implementations and move faster without giving up architectural control.
Outside client work, I design and build systems end to end. One recent project is a twelve-stage short-form content pipeline built with NestJS, BullMQ, Next.js, Supabase Postgres, Drizzle and Remotion. Each stage has its own retry and failure boundary, and generated content cannot be published without a mandatory human review step.
I’m interested in teams building serious web products, automation platforms and AI-enabled systems where I can work across the stack, solve difficult engineering problems and take real ownership of what reaches production.
Key Achievements
Work Experience
Projects
- Architected multi-domain tenancy across middleware, Server Components and application context, allowing brand-specific content and configuration from a shared codebase.
- Built a streaming AI assistant using the Vercel AI SDK, OpenAI and edge-runtime streaming with Supabase-authenticated access.
- Integrated Sanity CMS with GROQ queries and webhook-driven cache revalidation for fast, independently managed publishing workflows.
- Built the technical SEO layer with typed JSON-LD, dynamic metadata, RSS, programmatic sitemaps and dynamically generated Open Graph images.
- Hardened the unsubscribe flow after email security scanners were auto-unsubscribing recipients: GET requests now only reach a confirmation screen, and the mutation runs solely on an explicit POST.
- Made the QR destination a runtime routing decision, so a printed code can be repointed without reprinting.
- Built rule-based routing on country, device type and schedule, with A/B splitting on the paid tiers.
- Shipped scan analytics with conversion tracking and per-tier retention windows.
- Structured four pricing tiers around dynamic scan volume rather than code count, so the free tier stays genuinely usable.
- Integrated and maintained multiple email providers including Postmark, Mailgun, Mailjet, SMTP.com and Resend, covering send consumers, provider configuration and migration workflows.
- Built scheduled newsletter and recipient-segmentation workflows across brands, audience segments and provider-specific sending configurations.
- Developed operational tooling for ESP routing, ISP segmentation, sending-domain configuration, warmup controls and deliverability monitoring.
- Integrated affiliate networks, advertising data, webhooks and revenue-attribution workflows to connect campaign activity with downstream revenue.
- Built and maintained analytics surfaces for sends, opens, clicks, bounces, complaints, revenue and domain reputation, with configuration changes feeding directly back into the sending system.
- Architected the content workflow as twelve independent BullMQ processors, isolating retries and failures at each stage rather than treating production as one monolithic job.
- Built a mandatory human review gate between rendering and publication so generated assets cannot ship without approval.
- Designed the Drizzle/Postgres data layer with row-level security on every table, backed by CI assertions that prevent unsecured schemas from being merged.
- Exposed scoring, deduplication and daily content selection through MCP tools, keeping decision logic reusable outside the worker pipeline.
- Structured the platform as a monorepo spanning API, workers, review UI, rendering and automation while using AI-assisted engineering throughout implementation.
- Worked on the React and Next.js operator interface across the traffic overview, roads, intersections, signal timing and incident views.
- Built Node.js API surface and PostgreSQL data model behind the road network, intersections, signal infrastructure and incident records.
- Worked on the WebSocket path carrying IoT telemetry into the live map overlay, per-road congestion levels and the incident queue.
- Contributed to role-based access for municipal operator teams, alongside maintenance, road-works and system-health tracking.
- Worked on the Next.js frontend across the six content sections — events, artists, music, news, articles and the glossary — each with its own route tree.
- Integrated Sanity as the publishing backend, with content modelled so artists, events and releases can reference one another.
- Worked on the music-domain structured data — MusicGroup, MusicRecording, ItemList and SearchAction — rather than generic Article markup, making artists and releases legible to search engines as music entities.