AI systems and full-stack products with real users, across Next.js, React, Rails, Node and Python. The code is private to each client, so the links go to the products themselves.
Voice AI · Reviews automation
SurgePoint AI Front Desk
Lead engineer
An AI receptionist that answers, books and follows up for med-spas and clinics, on a multi-tenant Rails 8 SaaS I rebuilt from Next.js and now own (879 of 900 commits).
- LLM call grader: Claude scores every call through a forced-tool schema against versioned rubrics, with human-reviewer agreement tracked per rubric version
- Grader sees the knowledge-base passages the voice agent actually retrieved, so it can tell a real price from a hallucinated one
- Retell voice agent booking into Boulevard, Zenoti, Mindbody and Google Calendar; cheap Haiku gates that fail open; prompt caching and idempotent jobs
Rails 8Anthropic ClaudeRetell AISidekiqPostgreSQLKamalStripe
Proptech · Netherlands
pandOS AI platform
Built the AI platform layer
The AI layer behind an operating system for Dutch real-estate investors: one gateway every model call goes through, with evals, budgets and fallbacks built in.
- Gateway across Anthropic, OpenAI and local Ollama with idempotency, per-provider circuit breakers, retries and a cost-in-EUR log for every call
- Capability registry with versioned prompts; golden-set evals with an LLM judge, run in CI to block any PR that drops the pass rate by more than 5%
- Monthly budgets that downgrade to a local model only when its eval score allows it; PII redacted from eval data
Rails 8.1AnthropicOpenAIOllamapgvectorGitHub ActionsSolid Queue
AI coaching · RAG + voice
Mentara (AI Guru)
Built it end to end
An AI coach that answers from each coach's own material, by chat or by voice. I built the Rails app, the retrieval pipeline and the Python voice agent.
- Hybrid retrieval: pgvector semantic search and Postgres full-text fused with reciprocal rank fusion, plus HyDE query expansion and conversational query rewriting
- Multilingual RAG on Cohere embeddings (English and Dutch), with retrieval-quality checks before an answer is generated
- Python LiveKit agent: Deepgram Nova-3 speech-to-text, streamed LLM over SSE, Cartesia speech, barge-in and tuned turn-taking
Rails 8PythonLiveKitpgvectorOpenAICohereDeepgramCartesia
Proptech · Frankfurt letting agency
Rental inquiry screening
Sole developer
Next.js app that reads every rental inquiry a Frankfurt letting agent receives, runs it through screening gates and writes the result back to their CRM. I wrote all 228 commits.
- Model chosen by measurement: four models run on the client's 16-case acceptance set, gpt-4.1-mini picked at 14/16
- LLM output validated with zod and retried once on mismatch; attachments never reach the model
- PropStack CRM, Gmail and ImmoScout integrations behind settings toggles; 72 test files; ingest replayed over 325 real messages
Next.js 15React 19TypeScriptSupabaseOpenAIzodVercel
Proptech · Underwriting data
PadStats
Full-stack engineer
Real-estate intelligence for underwriters: value, rent, crime and hazard exposure on an interactive map. I'm the top committer on the Next.js front end (1,012 commits) and work across its Rails and Node services.
- Next.js 14 map: Mapbox GL with viewport-driven H3 hazard layers (flood, fire, storm surge, wind, earthquake)
- Valuation and rental-estimate flows with PDF reports, comparables and session caching
- Rails 7 GraphQL API, and flood-risk, opportunity-zone and earthquake endpoints in the Express geospatial service
Next.js 14TypeScriptApollo GraphQLMapbox GLRails 7Node.jsCloud Run
Sports · Document AI
WinAD contract intelligence
Owned AI data ingestion
Athletic-department intelligence built from coach, vendor and game contracts. I owned the pipeline that turns contract PDFs into structured, cited data.
- Vision model (o4-mini via Portkey) detects redactions and handwritten corrections before extraction
- Prompts moved into Portkey prompt management with traces on every ingestion; QA verification and citation jobs
- Eval harness running Portkey prompts against a golden set of contract-clause cases, with a 0.85 pass threshold
Rails 8PortkeyOpenAIUnstractSidekiqPostgreSQL
Cybersecurity · Law firms
SEAL cyber-risk portal
Sole front-end developer
Cyber-risk assessments for law firms, with separate areas for banks, clients and auditors. I built the whole Next.js front end (239 of 239 commits) and worked on its Rails API.
- Five role-based areas (admin, bank, firm, client, auditor) with NextAuth JWT refresh and TanStack Query
- AI reports streamed live into React over ActionCable, with a choice of model per report
- Rails API scoring and validation services, and a retrieval-backed live-reporting job
Next.js 16React 19TypeScriptTanStack QueryNextAuthRails 7OpenAI
Proptech · Australia
Gameplans
Core developer (1,004 commits)
A property-investment planning platform for Australians: plans, Compass charts, scoreboards and advisor access. Second-largest committer after the founder, over two years.
- OpenAI Assistants with file search and vector stores, with query logging and rate limits
- Load-time work on Compass charts and their queries; embeddable chart iframes
- Two-factor auth, Stripe discounts and invoices, GitHub Actions CI
Rails 7OpenAI AssistantsPostgreSQLSidekiqStripeChart.js
Field-service SaaS
Sera
Contract engineer
Scheduling, dispatch and invoicing for home-service companies, on a codebase that dates to 2017. I work across the Vue 3 front end, the Rails API and the Expo mobile app.
- Vue 3 + TypeScript: memberships, scheduler, payment plans and reports
- GoHighLevel CRM sync with batched backfills, rate limiting and a settings UI
- React Native payment-plan and progress-billing screens, with Jest specs
Vue 3TypeScriptRails 7.2React NativeSidekiqJest
Digital health
WeGuide
Senior Rails developer, via Curve Tomorrow · 2021 – 2023
A patient platform for clinical trials and health programmes, which organisations run as their own branded app. Multi-tenant Rails backend with Ionic mobile apps.
- Tenant isolation with ros-apartment, and Sidekiq jobs that always run inside the right tenant
- Head of Product Thijs S.: "He goes the extra mile and actively thinks along"
Rails 6.1SidekiqPostgreSQLIonicAngularCircleCI
Healthy Brain HubRails 7.1
Dementia-research participant platform. Main developer: SurveyJS assessments, 8 clinical scoring calculators, Cogstate integration, 4 languages.
Acton Academy platformRails 8.1 · Claude
School-network platform. Claude website audit with a tunable confidence threshold and SSRF guard; Claude summaries of survey answers.
WellFundedRails 7.1 · Claude
Charity–philanthropist platform. Claude reads annual-report PDFs and streams summaries into the page.
Shorts CreatorPython
CLI that cuts vertical shorts from long video: WhisperX, face and pose tracking, scene detection, smoothed camera.
Claude Code pluginClaude Code · Python
Builds and deploys a client's compliance site from their own website, with an approval step before deploy.
The Fast 800Rails 6.1 · Ionic
Dr Michael Mosley's diet programme. Braintree subscriptions and an Ionic + Capacitor app for iOS, Android and web.