services

Not every problem is solved by writing code. These are the areas I work in beyond development, and each one is here for the problem it solves rather than the tool it uses.

Engineering

Technical consulting

An honest read of what you already have, what to fix first, and what can wait.

For anyone already running a system and suspecting they are paying too much for something that should be simple, or anyone about to start who would rather not find the architecture mistake six months into the code.

I look at performance, architecture and the maintenance cost of what exists. What I hand over is direction: where it hurts, why it hurts, what breaks as it grows, and in what order to touch it.

A consultancy that leaves your team unable to carry on alone has not delivered anything, so the report comes in plain language rather than jargon.

It tends to return more than expected: half of what holds a system back is not a hard decision, it is a decision nobody made because nobody wanted to own it.

Software development

Building what was decided, for web, mobile or desktop, with the back end to hold it up.

The part where I do the work. Interfaces in React, Next.js and React Native, desktop applications where the use case calls for it, and on the other side APIs in Node, NestJS, Go and Python, with the database chosen by the shape of the data rather than by habit.

Integration is usually where a project stalls, so I treat it as first-class work: third-party systems, payment gateways, government services, and whatever else has to talk without taking the rest down when it slows.

I have worked at high volume, where millions of records a day move through a distributed pipeline and one wrong field becomes a wrong invoice. That changes how I write even the simple code.

I take on new projects and existing ones. On the second kind, the first delivery is usually understanding what is there before touching it.

Infrastructure and servers

Where the system runs, how it ships, and how you find out it is down before a customer tells you.

I set up cloud servers and physical ones, with everything around them: domains, certificates, backups, and a deployment process that does not depend on someone remembering the right sequence.

Containers and orchestration with Docker, Docker Swarm and Kubernetes, sized to the problem. A small team rarely needs a cluster, and selling extra complexity is the fastest way to leave people stuck with something they cannot operate.

The part I do not skip is observability: metrics, logs and alerts through Grafana, Prometheus and Loki. A system that only reports failure through customer complaints has already failed twice, and the second time was you not knowing.

Game development

From a mechanics script to a finished game, including what runs inside someone else’s platform.

A game is the software where performance is not an optimisation but a requirement: a late frame is felt immediately, and there is no acceptable "loads in two seconds" in the middle of a match.

I work with Lua, the scripting language of most engines and of the platforms that accept mods, and with JavaScript and TypeScript for games that run in a browser.

This covers a whole game or just the part that is stuck: a specific mechanic, a progression system, an integration with an external service, or performance that dropped and nobody found out why.

Automation

That manual task someone does every week whose cost nobody measures.

Every operation has one: export the spreadsheet, rename the files, reconcile data between two systems, send the same report every month. Nobody adds those hours up, and they are expensive because they come out of the time of someone who could be doing something else.

I automate that kind of task, connect systems that do not talk to each other, and build routines that run on their own and speak up when they fail.

The last part is the one that matters: automation that breaks silently is worse than manual work, because the error only surfaces once it is already a problem.

Data processing and formatting

Messy spreadsheets, exports from an old system, a file that will not open in the right format.

System migrations, bulk imports and third-party integrations almost always hit the same wall: the data exists, but not in the shape the other side accepts.

I clean, deduplicate and convert large volumes between formats, with validation so errors surface before entering the system rather than after.

I have done this at telecom scale, where the daily file holds millions of records and one wrong field becomes a wrong invoice.

Product and process

Product Owner

Someone to decide what ships and what does not, and answer for it.

A team without a product owner builds everything it is asked for, and what it is asked for is always more than fits. The result is scope that grows, deadlines that slip, and a list of features nobody uses.

I work with whoever pays and whoever uses, turning requests into decisions: what solves the problem, what is preference, and what can wait at no cost.

I have done this on a healthcare product, where the gap between "it works" and "it is trustworthy" has real consequences, and what stuck with me is that the right answer is almost always to build less.

Scrum Master and facilitation

For when the team is good but delivery slips, and nobody can explain why.

Delay rarely comes from slow people. It comes from dependencies nobody mapped, decisions waiting on someone, meetings that decide nothing, and too much work started at once.

My job is to make that visible and then remove it. A ceremony that serves no purpose gets cut, not added out of ritual.

Nobody hires a Scrum Master. They hire someone to make delivery stop slipping.

I work alongside the team rather than above it: the people doing the work usually know where the knot is, and what is missing is someone with the room to say it out loud and untie it.

QA and testing

Find the defect before your customer does, and leave a test in its place.

A bug found in production costs in three currencies: the fix, the trust of whoever hit it, and the time of a team that dropped what it was doing.

I build a test plan around what actually matters in your product, cover the paths where money or data breaks, and leave automated tests where regression is expensive.

I also test what usually gets skipped: a different browser, an old phone, a poor connection, and the user who fills the form in the wrong order.

Design

Product UX/UI

The design of the screen and the path to it, done before it becomes code that is expensive to change.

A bad interface is rarely an ugly one. It is confusing: the button that solves the problem sits three clicks away, the form asks in the wrong order, the error shows up after submitting, and people learn to live with it instead of complaining.

I design flows and screens starting from whoever operates them daily, not from a trend. Accessibility and responsiveness come in from the start, because patching them later costs more and works worse.

This applies to new products and to screens that already exist and nobody understands any more. In the second case the work starts by watching real use before proposing anything.

The question I ask before designing is not what the screen should look like, it is what the person is trying to finish when they open it. Most screens improve by removing rather than adding.

Design system and visual identity

Colour, type, components, and the rules that keep it all coherent without you in the room.

With no system, every new screen is a negotiation: someone picks a different blue, a button appears with another radius, and six months later the product looks like the work of four companies.

I build the whole thing: a palette with usage rules, a type scale, spacing, radii, shadow and motion, plus the components built on top and the documentation saying when to use which.

I also cover the part most systems forget, which is content rules: how to write on each surface, the tone per situation, and what must never be said. On a safety product I worked on, that carried as much weight as the colour.

I have delivered three complete systems, each with a navigable screen kit. Where a brand file or a licensed typeface is missing, that ships as a declared open item rather than hidden behind a guess.

Prototyping

See the screen before you pay for the screen. Being wrong in a prototype costs an afternoon.

An interface discovered mid-development is the most expensive way to discover an interface. In a prototype, changing your mind costs an afternoon; once built, it costs a sprint and the team’s mood.

I build wireframes and navigable prototypes in Figma, alongside the people who will use them, until the conversation stops being "I think" and becomes "click here and see".

It works both for validating something new and for redesigning a flow that already exists and nobody understands any more.

Teaching and mentoring

Programming lessons and mentoring

For anyone stuck on their own, or a team that learned to make it work but not to make it right.

A tutorial teaches you to solve the tutorial. What tends to be missing is the next step: understanding why that solution works, when it stops being the right one, and how to decide without someone naming the path.

I teach one to one and in teams, at the pace of whoever is learning, against real code rather than classroom examples. Front end, back end, TypeScript, React, Node, and the part almost nobody teaches: reading other people’s code, reviewing without bruising, and asking for help early.

I co-founded a free technology school and have taught there since 2023, so this is not a side hobby.

Soft skills training

Communication, teamwork and conflict. For a whole team or one person.

Technical teams rarely lose for lack of technique. They lose because someone did not say they would be late, because two people disagreed and it turned into silence, or because whoever had the answer was not heard in the meeting.

I work on communication, collaboration, emotional intelligence and handling conflict, as a group or one to one. This is not a motivational talk: it is practice, built on the team’s real situations, the kind that surfaces in a retrospective and nobody can quite name.

I have taught this as a volunteer at Vai na Web since 2023, with people entering the industry, where the difference shows up fastest.

Business and growth

LinkedIn and professional profile

Your profile lists tools instead of saying what you fixed, and no recruiter stops on it.

Most profiles list technologies and job titles. That answers "what did you use", which is the question nobody asks. The question is what was broken before you arrived and what worked afterwards.

I rewrite the profile around that, fix the headline and summary for what you want to be found for, and rebuild each role around decisions and outcomes rather than a stack list.

The same applies to a CV, a portfolio and the descriptions on your repositories. This whole site is the method on show: every case states the problem, the constraint, the decision and the alternative that was rejected.

Business consulting

Where your customers come from, why they drop off midway, and what to do with the ones who did not buy today.

Plenty of companies do not have a product problem, they have a path problem: a customer shows up, gets interested, and disappears before becoming a sale. Nobody can say at which point they went, because none of it is measured.

I work the whole path, from first visit to first conversation. Where the lead enters, what they find, what stalls the decision, and what happens to the person who did not buy today but would in two months.

It touches tooling, but the decision that matters is almost never which tool. It is what the company promises, to whom, and whether what comes after the click holds the promise up.

Paid traffic

Ads that lead somewhere worth landing, with the numbers in front instead of a hunch.

Expensive advertising is rarely an advertising problem. It is good traffic arriving at a page that does not convert, or budget split across an audience that was never going to buy.

I handle the campaign and the page it lands on, which is the part most people treat separately. Measurement is set up before the spending starts, so the decision to continue or cut has data behind it.

It makes even more sense alongside the landing page itself: whoever built the page can fix what the campaign reveals.

Technical support

Computer setup and reinstallation

A slow machine, a system that keeps freezing, or a new computer that needs to arrive ready to use.

A clean install with system, drivers, the Office suite and the programs the person actually uses, plus the part that usually goes wrong on its own: backing the files up first and putting everything back where it belongs afterwards.

I also clean up machines that turned slow for no obvious reason, and set up new computers from scratch.

Subject to location and scheduled in advance.

Office network and equipment

Wi-Fi that dies in the back room, a printer nobody can find, files that live on a USB stick.

I set up small office networks: Wi-Fi coverage, a shared printer, a file folder the whole team can reach, and a backup routine that runs on its own.

It is the kind of thing nobody buys until it stops, and that costs everyone a morning of work when it does.

Subject to location and scheduled in advance.