Recent professional case studies first, then side projects and experiments. Company names are employers, not clients, and details are limited to what can be shared publicly.
Case study 01
Rebuilding a core module of a multi-tenant AI SaaS platform
Replacing a legacy module on a multi-tenant compliance SaaS platform with a faster, safer, AI-assisted workflow, without breaking the links customers already relied on.
Context
A legacy module at the centre of the product needed a new data model, a better interface, and AI-assisted analysis.
Scope and role
Led end-to-end delivery of the module's v2: FastAPI read model and REST endpoints, SvelteKit interface (data-dense matrix views, document reader, live progress tracking), and rollout.
Worked across PostgreSQL, Python, TypeScript, and Azure, alongside the wider product team.
Constraints
Strict tenant isolation on shared PostgreSQL infrastructure, including parent and subsidiary organizations.
Existing deep links into the legacy module had to keep working.
Customer text must not leak into logs or LLM tooling beyond its intended use.
Decisions
Routed every tenancy check through row-level security helpers, scoped tenant context per transaction, and made tenancy constraints fail closed.
Introduced PgBouncer and async SQLAlchemy pooling with a fail-closed tenant reset between uses of a connection.
Built retrieval with LangChain and LangGraph using multiple sources and provenance tracking, so every AI answer can be traced back to its inputs.
Delivery
Shipped behind feature flags and replaced the v1 stack while preserving deep links.
Added CI checks for migration up/down round-trips, plus pytest, Vitest, and Playwright coverage.
Built Azure Durable Functions pipelines for bulk content imports, with an admin UI to monitor runs.
Case study 02
Scaling an ML-driven football analytics platform
Forward Football · Lead Full-Stack Developer · 2024 – 2025
Turning data science models into a multi-tenant product: faster pipelines, secure team-level data access, and a dashboard coaches and analysts could actually use.
Context
Football clubs needed ML-derived insights about players and teams, delivered through a secure web product rather than notebooks and scripts.
Scope and role
Partnered with data scientists on a modular ML pipeline and owned the surrounding product engineering: data model, APIs, dashboard, and delivery.
Constraints
Dynamic team structures and per-role permissions had to be reflected in every query.
Long-running model pipelines slowed iteration for both engineers and analysts.
Decisions
Designed multi-tenant PostgreSQL schemas with RBAC for team-scoped data access.
Added in-memory caching and result reuse in the FastAPI and Celery pipeline instead of recomputing intermediate results.
Standardized authentication on OAuth 2.0 and Keycloak for users and service-to-service calls.
Delivery
Dockerized services and built GitLab CI/CD pipelines with automated tests and rolling deployments to AWS ECS.
Over five years writing C and C++ for network switches shaped how I approach performance and reliability: QoS features and sFlow packet sampling on Arista EOS, RADSEC, ZTP, and DHCP Snooping on Aruba AOS-CX, Linux protocol and CLI work, and Python automation for feature, stress, and regression testing. One DHCP parsing fix cut switch auto-onboarding time by 120 seconds.
Independent work
Side projects and experiments
Stocktrix
Real-time stock news sentiment analysis with a FinBERT model behind a FastAPI service and a server-rendered Next.js frontend.