Work
A curated subset of client and personal deliverables.
The toolset
- Languages
- Python · C# / .NET · SQL · Bash
- Data pipelines & storage
- BigQuery · Apache Beam · Dataflow · polars · SQL Server · Dataform · DuckDB · dbt · Firestore · PostgreSQL · Pub/Sub
- Machine learning
- Vertex AI · XGBoost · MLflow · Optuna · CatBoost · EasyOCR · fastai · Kubeflow Pipelines · marimo · PyMC · PyTorch · scikit-learn · statsforecast · statsmodels
- LLM & agents
- Claude Code
- Cloud & infrastructure
- Cloud Run · Docker · Cloud Functions · Terraform · Azure Functions · Azure Blob & Queue · Azure DevOps · AWS Batch · AWS Glue · Azure Durable Functions · Azure Pipelines · Azure Tables · Cloud Build · Step Functions · Azure AD
- Clean rooms, ad & analytics platforms
- Google Ads API · GA4 · Search Console API · Amazon Marketing Cloud · AWS Clean Rooms · GTM · Meta Ads · Meta Conversions API · LinkedIn API · Amazon Advertising API
- Applications & front end
- Angular · FastAPI · React · ASP.NET Core · Evidence · FFmpeg · Flask · Next.js · Streamlit · Tableau
Client engagements*
- 2026.09 Job orchestration platform rebuilt as a React SPA client: Internal platform, used across the client estate I rebuilt our team's core Data Science and BI job orchestration platform as a modern React SPA, replacing unmaintainable legacy Flask templates, eliminating persistent interface bugs, and improving its performance.
- 2026.09 A customer-value modelling platform, templated for onboarding clients: A national fashion retailer · A global footwear brand · A Premier League football club · An international fine-art and collectables auction house An end-to-end data pipeline framework that takes a client's raw data from multiple sources through unification, identity resolution and model training to a predicted lifetime value for every customer interaction, over a one-year horizon by default. The framework standardises the pipeline stages for any client in any domain.
- 2026.09 A shared agent repository, with delivery wired into Azure DevOps client: Internal platform, used across the client estate I built a shared repository of AI agents that automates the entire software delivery lifecycle, chaining independent steps from task planning and code implementation to isolated pull request reviews within Azure DevOps.
- 2026.07 Two data science teams merged into one engineering function I co-led the merger of two separate data science teams into a unified engineering function, establishing shared development standards and productionising internal tools with automated deployments and infrastructure as code to enable cross-team ownership.
- 2026.09 Feed enrichment backend productionised onto Terraform and an authorised API client: Internal product, used by the teams running client retail feeds I productionised an AI-powered retail product feed application by placing thirty-one distributed services under Terraform control, shifting manual script runs to automated Cloud Build pipelines, and enforcing strict environment separation between development and production deployments.
- 2026.08 Customer-value modelling rebuilt to run inside a clean room client: A UK direct-to-consumer brand that also sells on a major marketplace Because user-level data cannot leave the platform's secure environment, we've built the end-to-end orchestration and templated machine learning configurations required to rebuild customer-value models inside a clean room.
- 2026.03 Audience refresh made concurrent client: Internal platform, used across the client estate An audience service that refreshed sequentially and timed out. Parallelising it exposed a thread-pool deadlock, concurrent-DML failures and transient connection errors, all of which had to be fixed before the speed-up was usable.
- 2025.06 Stock availability forecasting client: A UK online bathroom retailer Accuracy turned on merchandising logic: excluding parent SKUs, folding in bundle children, and moving materialised tables to views so downstream reads stay current. It runs as a streaming pipeline.
- 2025.05 Server-side tagging rebuilt and scripted clients: A national fashion retailer · A UK kitchen retailer · A UK lingerie retailer · A football club · A rail operator The existing deployment had fallen behind the recommended setup, so it was rebuilt with load balancing and a custom domain in front of the tag server. Deploy and roll-back scripts replaced the manual steps, and the readme carries enough detail that onboarding a client is a configuration change. Five clients run on it.
- 2025.05 A shared data-science library client: Internal platform, used across the client estate Pipelines were copying code between repositories. The shared library gathers what they all need: pipeline wrappers, warehouse and spreadsheet utilities, config generation, a mailer and auth handling. It ships to a private feed with versioned releases and a changelog, so a pipeline pins a version.
- 2025.04 Order-level profitability for two retailers clients: A footwear retailer · A UK online bathroom retailer I built data pipelines that resolve the gap between revenue and profit by joining back-office order data with web analytics, accounting for product costs, returns, and delivery fees to feed true order-level profitability back into marketing tools.
- 2025.02 Predicted lifetime value pipeline client: An international business telephony provider Training and batch inference for a predicted-LTV model, with predictions pushed back into an ad platform as conversions carrying hashed identifiers.
- 2024.09 Google Ads microservice client: Internal platform, used across the client estate One service fronts the Google Ads API for the whole estate, which is why several API version upgrades landed in one place. It covers reporting, assets and asset sets, keyword plans and conversions, and was later extended to externally held accounts.
- 2024.05 A link-building platform inherited, then rebuilt on the team's template client: Internal platform, used across the client estate An ASP.NET application inherited in 2019 and rebuilt four years later with the dev team. It was the first thing built on the clean-architecture template, and the rebuild added multi-tenant support and centralised front-end state, with the link-valuation tooling carried across from the original.
- 2024.02 SEO reporting platform client: Internal platform, used across the client estate Nearly five years of ownership. Ingestion from four search and ranking data providers, scheduled jobs, a reporting interface, and a long migration of storage and scheduling onto configurable infrastructure.
- 2023.09 SERP and content analysis platform client: Internal platform, used across the client estate I modernised an internal search engine results analysis platform by migrating the legacy backend and database onto modern cloud infrastructure, replacing custom reporting with embedded Tableau dashboards, and maintaining continuous execution of content evaluation jobs.
- 2023.09 A service template for the team's applications client: Internal platform, used across the client estate I created a unified service template by adapting an open-source Clean Architecture project for our technology stack, embedding essential infrastructure and authentication to serve as the baseline for new internal applications and migrations.
- 2023.09 Tenant migration across the estate client: Internal platform, used across the client estate An acquisition meant moving every application onto the parent group's identity tenant and app registrations. That broke auth claims and user matching, and it ran alongside a framework version upgrade. Putting the change into the service template first meant new services inherited it instead of being migrated one by one.
- 2023.01 Price feed services consolidated client: Three UK high-street retail brands Every client had its own price-feed service. They folded into one configurable service, with product filtering by target country and currency, and durable execution for the long-running parts.
- 2022.11 Paid media audit platform client: Internal platform, used across the client estate Auditing had been a set of loose scripts. Taking the platform over meant consolidating them into audit types it could schedule and run, then adding new ones. It also covers audit definitions, alerting, scheduling and external account management, and concurrency and performance under load took sustained work.
- 2022.01 A family of third-party API microservices client: Internal platform, used across the client estate I standardised our third-party integrations by developing a collection of serverless microservices built for system resilience, featuring a shared design for client libraries, data warehouse extraction pipelines, and pre-submission ad validation.
- 2021.12 Paid media reporting platform client: Internal platform, used across the client estate Joined it to add LinkedIn campaign management, then took ownership of the platform. It covers the report building interface, spreadsheet templates, bulk campaign management, social webhook processing, and the campaign management front end that sat on the LinkedIn advertising service.
- 2021.07 Scheduled report downloads driven through a browser client: Internal platform, used across the client estate A reporting platform had no API, so the reports were fetched by driving a browser in a container. It signs in on a schedule, downloads what is queued, chargebacks among them, and drops the files on a share for the warehouse importer to collect.
Personal projects
- 2026.08 A trading system that manages its own strategies I am building a quantitative trading system designed to manage a portfolio of strategies, backed by completed empirical research into market structure that establishes the foundation for automated capital allocation and risk management.
- 2026.09 A personal finance ledger that keeps its own books I built a personal finance pipeline that ingests multi-format transaction exports from thirteen disparate platforms and normalises them into a unified ledger, automating daily net worth valuations, currency conversions, and automated spending forecasts.
- 2026.02 A hand-kept FIFA scoreboard rebuilt as a prediction system live: z.pf-ss.com I transformed a handwritten notebook of football scores into an automated platform featuring optical character recognition, custom performance ratings, fair match drawing, and comprehensive analytics dashboards to forecast upcoming fixtures.
- 2025.04 Five Strava tools built on one ingestion layer I built a Strava companion platform that stored activities in a raw format to power five separate tools over six years, including custom hyperlapse video generation, user account management, and automated activity renaming rules.
- 2024.11 A .NET library for the Azure Tables lifecycle Microsoft leaves unmanaged source: pflajszer/AzureTablesLifecycleManager package: nuget.org I created an open-source .NET library to automate retention rules, data migration, and cleanup for Azure Tables, addressing a missing cloud platform capability with query-based rules that has reached around 11,800 downloads on NuGet.
- 2022.01 A .NET and Azure tutorial blog, with a YouTube channel that outlived it live: youtube.com Nine articles on .NET, Azure and CI, four of them filmed as screencasts. The blog went down with the domain; the channel is still up, at around 17,350 views, most of them on two NuGet packaging walkthroughs.