Websites, brands,and the engineeringbehind them
As a freelancer I build the complete web presence for a person whose reputation is the product — brand identity through to a running site they own outright. Alongside it: the machine-learning platform work I do at scale in my day job, available to teams who need that experience for a while, and the mobile apps I build and ship myself.
The complete web presence for people whose name is the business
Consultants, coaches, advisors — one person whose reputation is the product. I design and build the whole thing: identity and logo through to a running site with a CMS, a blog and a newsletter behind it, handed over so you can keep changing it without me.
Brand & corporate design
The identity comes before the site, because a site is only ever a carrier for one. Logo, palette, type — and motion that comes out of the mark rather than being applied to it, so the way a thing moves says what its shape already said.
- Logo design
- Corporate design
- Art direction
- Motion & animation
A site you own
Pages and posts live in a CMS with your name on it, your mailing list in your own newsletter account — neither of them in my repository. Publishing a piece or sending a newsletter is your action, on your schedule, with no developer in the loop.
- Headless CMS
- Blog
- Newsletter & audience
- Editorial workflows
Guardrails, not handcuffs
The site is locked down, kept fast and checked for mistakes automatically, once, at the start. You never have to think about any of it again — and that is the point: the interesting part is what it makes possible rather than what it prevents.
- Hardened defaults
- Performance budgets
- Automated checks
- Preview environments
Handover that survives me
The site is set up so that changing how it looks is safe to do yourself, with a coding assistant if you want one. Copy, colour, sections and layout are open to you; the machinery underneath is fenced off. Anything that would break the site is caught automatically before a visitor ever sees it, so the site keeps moving without keeping me on a retainer.
- CI/CD release process
- Assistant-ready codebase
- Rollbacks
- Documented conventions
What you end up owning
- The domain and the hosting account, in your name — not resold through mine
- A CMS login where pages, posts and images are yours to change, any day, without me
- The repository and its full history, so any developer can pick the work up
- Brand files: the logo in the formats you get asked for — print, web, social, favicon — the palette, the type, and the rules for using them
- Your newsletter audience in your own Brevo account, exportable the day you decide to leave
- A written handover — what runs where, what is safe to touch, and what to ask about first
Built with
- Next.js
- Tailwind CSS
- TypeScript
- Payload CMS
- Neon Postgres
- Brevo
- Vercel
Machine learning that survives contact with production
My day job is leading the MLOps and AI Services team at Sixt — the platform work that takes models out of notebooks and into production, where other people depend on them. That experience is available to teams who need it for a while rather than permanently.
ML platform architecture — the training, deployment and monitoring path a team uses daily, not a single pipeline that works once
Prototype to production: taking a model that runs on a laptop and making it something an on-call engineer can be woken up for
AI features inside a product that already exists, scoped so the useful part ships before the budget is gone
Direction for a team already building it — architecture, tooling, and the handful of decisions that are expensive to reverse
Built with
- Python
- TensorFlow
- AzureML
- Databricks
- MLflow
- Azure
- Kubernetes
- Docker
- Terraform
Cross-platform apps, actually shipped to the stores
Flutter apps of my own, published to the stores, one still live and rated 4.8. Getting an app through store review is most of the difference between one that exists and one that ships, and it is the part nobody scopes.
Flutter and Firebase — one codebase, iOS and Android, native feel on both
The unglamorous half: store listings, review submissions, crash reporting, staged rollouts
Offline-first data, local notifications and charts — the parts of a tracking app that are harder than they look
Built with
- Flutter
- Dart
- Firebase
- Provider
- Hive
- fl_chart
Four steps, and you see all of them
Described from how the last one actually ran, rather than from a methodology. The point of all four is the same: nothing about the project is a surprise to you, including the parts that go wrong.
A call, then a written scope
01A call about what you actually need. Then a document: what is being built, what it explicitly does not include, and what happens if that changes. Nothing starts before you have read it.
Identity first
02The mark, the palette and the type come before a single page is designed. A website is a carrier for a brand, and doing it in the other order means doing it twice.
Built in the open
03A preview link early on, updated as the work happens. Nothing is a reveal — you will have seen the site a hundred times before anyone else sees it once.
Handover, in writing
04Accounts in your name, the repository, the brand files, and a codebase where changing copy, a colour or a whole section is safe to do with a coding assistant. The guardrails stay behind after I leave: a change that would break something fails automatically, before it reaches a visitor.
Three kinds of project I say yes to
When you are the business
Consultants, coaches, advisors, architects, therapists. One reputation, and a site that has to carry it as well as a handshake does.
Founders with a model and no platform
Something works in a notebook and now has to work on a Tuesday morning, for people who did not build it and will not read the notebook.
Teams who need the experience temporarily
An architecture review, a tooling decision, or a second opinion on the parts that are expensive to reverse — without adding a permanent head to do it.
What I am not the right person for: a five-page brochure site that has to be live next week and will never be touched again. There are faster and cheaper ways to get that, and I would rather say so on the call than quote for it.
Tell me what you're trying to build
A description in two paragraphs is enough to start. You'll get an honest answer about whether I'm the right person for it, including when the answer is no.
