All-in-one platform and LMS for training providers that turns daily admin into audit evidence. It started in an AI app builder and became a secure multi-tenant product with web, iOS and Android apps.
How I did it
Architecture: React on Vercel, Supabase Postgres with row-level security on every table, 160 edge functions and 26 scheduled jobs
Courses and SCORM e-learning, session planning, e-signature attendance with QR codes, contracts and certificates
Training-funding workflows, a yearly regulatory report, a CRM and a public catalogue with Stripe checkout
Quality-audit module: evidence per indicator, a mock audit and a presentation mode for the auditor
AI agent (Gemini) that edits records after a confirm step, plus an MCP server in production: everything you can do in the UI also works from Claude, ChatGPT or your coding agent, including analytics and user data
Native Android and iOS apps (Kotlin/Compose, SwiftUI) with design tokens generated from the web CSS
Release pipeline: migrations dry-run before merge, only changed functions deployed, smoke tests after every deploy
Encrypted backups 7× a day, files mirrored to Cloudflare R2, nightly restore test into a separate twin project
Result: 3,025 merged pull requests in ten months, shipped in small reversible steps.
Helptempo: a sales and support chat for any website, built as a reusable engine
Role: Product owner and engineer: design, build, packaging
~5 min~5 min
to add it to a site
~9 KB~9 KB
widget, gzipped, no dependencies
44
hosting targets out of the box
33
model APIs, plus local models
A drop-in AI chat I built once and reuse on every site; each site brings only its own knowledge file. It answers open questions, quotes only the facts and prices the site shows, sends visitors to the right section with buttons and suggests the next question. The AI guide on this website runs on it: try it at the bottom right.
How I did it
Widget: one ES module in Shadow DOM, no dependencies, about 9 KB gzipped; works on plain HTML, WordPress, React and Next.js
One backend for any host: Next.js/Vercel, Azure Static Web Apps and Functions, Cloudflare Workers, Node/Express
Any model: Gemini, Claude or any OpenAI-compatible API, including local models (Ollama, vLLM) and gateways (LiteLLM), with an automatic fallback chain
Built to sell: answers end with navigation buttons into the page and follow-up questions; it qualifies visitors and points to the next step
Pre-written answers for starter questions (instant, no API call) and a server-side answer cache
Safe by default: keys only on the server, model output rendered as text only, allow-listed links, rate limiting, input limits, CORS deny by default
English, German, Spanish and French built in, light and dark, phone layout
Added to a new site in about five minutes: install, a knowledge file, a small config
Result: A new product page gets a working, multilingual sales advisor in minutes, and it quotes only what the page itself shows.
Client, surf school & hostel, Portugal, since 2026
Booking & operations platform for hospitality
Role: Architect and lead engineer, end to end
6464
staff screens across 7 roles
107107
serverless functions
4,9584,958
unit tests + 77 end-to-end specs
2,1332,133
merged PRs in six months
I took over an AI-built prototype and turned it into the platform that runs bookings, payments, staff operations, sales, marketing and WhatsApp guest messaging for a surf school and hostel.
How I did it
Booking funnels for surf lessons, camps, coworking, hostel stays, multi-week passes and weekend packages
Stay builder priced live from the hostel management system, booking written back after payment
Staff dashboard with 64 screens and 7 roles: calendar, walk-ins, check-in with tourist tax, quotes, vouchers, rentals, finance
Sales pipeline CRM with AI lead scoring, reply drafts and a manager's sales report
WhatsApp AI agent (Gemini) whose knowledge base grows from staff replies; new knowledge goes live only after manager approval
Marketing and campaign calendar for the whole team
Read-only public API and MCP server (no personal data, hashed keys) the client uses to automate weekly planning
Staging/production split, PR-only workflow, encrypted backups every 4 hours independent of the hosting provider
Watchdogs: hourly booking-funnel probes, a daily synthetic payment and a booking-drought alert
Result: When the hostel system's vendor changed its API without notice, the probes caught it and stays were bookable again the same day.
The sales pipeline lives inside the platform the business already runs on, next to bookings, payments and marketing. AI scores the leads and drafts the replies, and the manager sees the numbers in one report.
How I did it
Sales pipeline CRM from first enquiry to booking
AI lead scoring (Gemini) so the team calls the best leads first
AI reply drafts that the team edits and sends
A sales report for the manager
The education SaaS has its own CRM module too, next to funding workflows and the course catalogue
Result: Sales, bookings and marketing in one system, with AI doing the first draft.
GEO: making a restaurant network visible in AI search
Role: GEO consultant: analysis, baseline, experiments and proofs of concept
1010
experiments ranked by impact
~150~150
landing pages in prompt research
33
phases: assess, select, sprint
A platform with a large network of restaurant websites wanted guests to find and book restaurants through ChatGPT, Gemini and Google's AI answers. I measured where AI-referred traffic comes from today, set up prompt research and turned the findings into a ranked set of experiments with working proofs of concept.
How I did it
Baseline of AI-referred visits and conversions next to classic search, from web analytics and Google Search Console
Prompt research for about 150 landing pages: realistic guest questions generated with an LLM from the sitemap, tracked in Semrush
Evaluation of AI-visibility and listing tools, including the questions legal and data protection ask
Listing platforms compared for publishing restaurant data to third-party portals via API
10 experiments ranked by impact and effort, chosen in a workshop and run in sprints
Proofs of concept: automated publishing to third-party portals and a generator for SEO/GEO articles
Result: A measured baseline and a ranked roadmap instead of guesswork, plus tools the team keeps using.
Stack: Semrush, Google Search Console, Web analytics, Open LLMs, Schema.org, Listing APIs, Python
Live-production media functions run as booked, on-demand workloads on Kubernetes: on-prem bare metal behind a VPN and on AWS. I built the booking showcase and much of the integration that made the platform operable live.
How I did it
Booking showcase in Go and Angular: book a production, watch it deploy, preview it over WebRTC; Helm chart and GitOps rollout to both clusters
Windows orchestration server as a VM on KubeVirt inside the bare-metal cluster; VM image import over the VPN about 120× faster
Cassandra and OpenSearch moved into the cluster so the platform can run air-gapped
Cost guardrails in code: dev torn down every night, time-limited preview environments, orphaned-volume sweeps, cost tags enforced at plan time, cross-zone traffic alerts
FluxCD health alerts to chat, Keycloak single sign-on for Grafana, External Secrets, oauth2-proxy in front of internal tools
Operated and debugged Talos clusters on bare metal and EC2 with Karpenter; submitted networking fixes to an open-source media-transport project
Result: Productions are booked and deployed on demand, and the dev environment is off every night and weekend by default.
Role: Sole DevOps engineer, owner of the cost programme
−48%−48%
total Azure costs, in five weeks
7 → 4
Kubernetes nodes
~40×~40×
less Cosmos DB load
~35~35
changes in one month, one ticket each
As the only DevOps engineer on a platform running on AKS, Postgres and Cosmos DB, I cut the total Azure costs (monthly run-rate) by 48% in five weeks without changing anything customers could see.
How I did it
Amortized cost baseline per resource from the Cost Management API, with a forward run-rate model instead of waiting for the invoice
A live check before every recommendation: what runs on it, who uses it, peak load instead of averages
Kubernetes right-sizing from Prometheus p95 usage, then fewer nodes; reservations returned the day a machine left
Database standbys and retention matched to real needs; tenant databases moved into the cluster with CloudNativePG, row counts and checksums identical
Monitoring stack moved from its own VM into AKS; debug logging into paid storage turned down
One query fix cut the load on a serverless Cosmos DB about 40×, with identical output
Daily cost report to chat, budgets with forecast alerts, a tagging schema and a weekly management report with a two-month forecast
Result: Every change came with its impact, risk and rollback path, one ticket each. Nothing customers could notice was touched.
Pattern on SaaS, broadcast and retail platforms, 2026
Monitoring on business outcomes, backups proven nightly
Role: Designed and built it on each platform
10 min10 min
outside-in checks
nightly
restore test
143143
alert rules on Kubernetes
Dashboards can stay green while customers can't pay. I set up monitoring that checks what the business cares about and keeps alerts quiet enough that people still read them.
How I did it
Synthetic checks from outside every 10 minutes, an hourly walk through the booking funnel and a daily test payment
Outcome watchdogs against the source of truth: paid but no reservation, visitors but no bookings
Release gates: migrations dry-run before merge, a smoke test after every deploy that turns it red if a vital route breaks
Noise control: one GitHub issue per outage, opened and closed automatically, deduplicated, hourly caps
Prometheus, Grafana, Loki and Alertmanager with 143 alert rules on a Kubernetes platform
Encrypted backups every 3–4 hours stored away from the provider, restored every night into an isolated twin
Audit trail on S3 Object Lock (write once, kept 90 days) with write-only credentials
Result: Backups are restored every night instead of hoped for, and alert channels stay readable.
AI browser testing: describe a flow, get a verdict
Role: Creator
99
steps to set up a test, not ~200
6+6+
projects verified
An AI agent drives a real Chrome through Playwright. You describe a user flow in plain language; it clicks through it and returns a structured pass or fail with console errors, failed requests and a fix prompt.
How I did it
Test scenarios in plain language with a JSON verdict: passed, failed expectations, console errors, network failures, fix prompt
Route map with warm login profiles; an AI fallback flags routes that moved
Multi-role checks: one role acts, another role's screen must update without a reload, and the delay is measured
iPhone and in-app-browser emulation to reproduce bugs reported by end users
Result: The standard check before and after production releases on two live platforms.
Stack: Node.js, Claude Code, Playwright MCP, Chrome, WebKit
A small robot built from scratch: an ESP32 with servos, sensors and an OLED display. Voice and AI run on a local Whisper model and a local LLM, so it hears, thinks and moves with no internet at all.
How I did it
ESP32 firmware with PlatformIO and the Arduino framework: servos, sensors and an SSD1306 display
Speech-to-text on a local Whisper server, answers from a local LLM
Air-gapped by design, with its own fallback hotspot and Wi-Fi control
The same pattern I use for private AI in companies: no data leaves the device
Result: A working robot that runs voice and AI fully offline.
Stack: ESP32, PlatformIO, C++, Arduino, SSD1306 OLED, Whisper, Local LLM
Release engineering for banking apps used by millions
Role: DevOps engineer for the mobile release pipelines
~40%~40%
faster release cycles
22
app stores, iOS and Android
44
pipeline stages to production
A whole family of retail-banking apps in the App Store and Google Play, including multi-banking with accounts from other banks. I built the pipelines that build, harden, sign and ship them, in one of the most regulated industries there is.
How I did it
Multi-stage pipelines (Dev, PoC, QA, Prod) that build, sign and ship the iOS and Android apps to TestFlight, the App Store, Firebase, Google Play and SauceLabs
Multi-banking in the app: accounts and transactions from other banks next to the customer's own, shipped through the same pipelines
App hardening with Promon and automated MobSF security scans in every pipeline
Nightly builds that catch breaking changes early
Version compatibility between backend, web and mobile, with zero-downtime rollback
Result: Release cycles about 40% faster, in a heavily regulated environment.
A regulation-relevant tuning-detection application had to move to Azure Kubernetes Service without loosening a single control. Everything went in as code, with guardrails that apply to every team.
How I did it
Moved the regulation-relevant tuning-detection application to Azure Kubernetes Service, fully in Terraform
Azure Policies and Blueprints enforcing security baselines and network rules across teams
Observability with Azure Monitor, Defender and Grafana
Cost controls and a tagging strategy, so every euro has an owner
Result: Cloud costs about 25% lower, with security baselines enforced as code across teams.
Stack: Azure AKS, Terraform, Azure Policy, Azure Blueprints, Azure Monitor, Microsoft Defender for Cloud, Grafana
Sensitive health records between two public systems, none lost
Role: Cloud engineer and the client's representative in an inter-cantonal steering committee
00
records lost
22
public health systems connected
Two public health systems had to exchange highly sensitive records reliably. I built the serverless middleware between them and represented the client in the steering committee that planned releases with the other cantons.
How I did it
Serverless middleware on Azure Functions (TypeScript) that moves highly sensitive records between two public health systems
Azure Queue Storage between the systems: if one side is unavailable, records wait in the queue instead of getting lost
First deputy, then the client's representative in an inter-cantonal steering committee
Release planning across cantons, so changes on both sides went live in step
Result: Not a single record lost between the two systems.
Two-way ERP ⇄ CRM sync while both systems stayed live
Role: Built the sync end to end
2-way2-way
sync, ERP ⇄ CRM
22
systems in live use throughout
Sales worked in HubSpot, finance and projects in Maconomy, and nobody could stop for a big-bang cut-over. I built a bi-directional sync so both systems stayed in live use with the same data.
How I did it
Bi-directional sync between Maconomy (ERP) and HubSpot (CRM)
Both systems stayed in live use the whole time, no big-bang cut-over
Changes flow both ways, so sales and finance work on the same customer data
Result: One customer record across ERP and CRM, without stopping either system.
Role: Developer: Spring Boot backend and native apps
33
parts: backend, Android and iOS app
Getting and keeping ISO 27001 means a long list of controls and the evidence behind each one. This tool gave staff one place for it: a Spring Boot backend and native Android and iOS apps.
How I did it
Spring Boot backend with REST APIs for controls, evidence and their status
Native Android and iOS apps, so staff manage controls and evidence wherever they are
One place for the whole certification instead of spreadsheets and shared folders
Result: Controls and evidence in one place, used by staff day to day.