Since 2014 I’ve built the unglamorous parts that make SaaS and commerce platforms trustworthy — payments, CI/CD, AWS infrastructure, observability, and the deploy pipeline itself. On the side I’m building Paper Trail, an open-source Go tool that analyzes public business reports for product signals. I like systems that keep working after I hand them over.
- AWS
- Terraform
- Go
- Docker
- PostgreSQL
- Python
- Ansible
- GitLab CI
- Observability
Selected Work
05 entries Internal platform · owned end-to-end Docker, GitLab CI/CD, AWS (EC2/ECS), REST API, scheduled jobs
Customer-scoring platform
Support teams had no shared view of which customers mattered most. I built the system that scores and ranks them automatically — from an empty repository to production on AWS as the sole engineer: scoring engine, daily classification job, chat alerts, and a dashboard with preview mode so non-engineers could tune the thresholds themselves. Then I wrote the guide, trained the owners, and handed it over.
Testing & delivery Codeception, PHP, GitLab CI, Stripe & PayPal (test mode)
CI suite rescue
A large e-commerce platform’s daily end-to-end pipeline passed 4 of 24 jobs; a flaky, merge-blocking suite slows a whole team down. I rewrote the tests against the redesigned UIs, made data setup deterministic, fixed Stripe and PayPal checkout on ephemeral CI clones, and load-balanced the stage across parallel runners. 24/24 green, roughly twice as fast — and it stayed that way.
DevOps · AWS AWS (ECS, CloudFront, ECR), Ansible, GitLab CI, blue-green deploys
Zero-stale deploys
Every release left stale pages behind — app cache and CDN kept serving the old version. I added a post-deployment hook mechanism to the blue-green pipeline that purges caches and invalidates CloudFront on every release, eliminating that class of incidents entirely, and cut the pipeline’s retry storms and queue waits while I was in there.
Data & product engineering Python, SQL/Postgres, scheduled ETL
Funnel analytics dashboard
A customer-feedback email programme was running blind. I built the readout: a five-stage funnel (eligible → sent → clicked → rated → text) sliced by language, message type and experiment arm, fed by a daily job capturing data the source system didn’t record — then reshaped the metrics with the product owner until they answered real questions instead of reporting totals.
Open source · Go Go, Postgres + pgvector, OpenAI, Docker
The one you can read line by line. A Go CLI that analyzes public business white papers for repeated pain points and ranks SaaS opportunity candidates with citations back to the sources — a 13-stage pipeline across discovery, ingestion, embeddings and LLM analysis. Deliberately compliance-first: respects robots.txt, never bypasses paywalls, stores summaries rather than documents.