AI Product Engineer · Product Manager · Front-End Engineer
I build with foundation models and ship real products. Braga, Portugal.
Product Manager at Foco Criativo, and an engineer who never stopped shipping. I came up through code - Software Engineer, then Product Owner, then Product Manager, all on the same product - and I still write front-end code today. Staying close to the craft is deliberate: it means I prototype an idea instead of describing it, and I write specs engineers can actually build from.
The work I care most about right now is applied AI. Not research - building. Foundation models in the loop, real products, real users, and an honest read on where AI creates value versus where it's just noise.
I don't think you understand a technology until you've built something with it. Everything below is me finding out.
If a model is part of how the team works, the product-management layer has to live where the model can actually see it. Not in Jira - in the repo. So I built it: three installable Claude Code skills. Plain Markdown, zero dependencies, zero hosting.
![]() |
![]() |
![]() |
| Agile-Ledger The full Scrum lifecycle - epics, sprints, velocity, bugs, releases - as plain Markdown in your repo, driven by slash commands. GitHub holds the code; this holds the why. |
Idea-Ledger Capture ideas, track how each evolves, version what ships - in two Markdown files. One invariant: nothing is ever deleted. |
Cartographer Reads a project's repos and writes the stakeholder docs nobody wants to write - what each product does, never how it's built. Markdown + PDF. |
Games are unforgiving in a way that CRUD apps aren't: the loop either works or it doesn't, and no architecture diagram saves you. Both were built with a model in the loop, which was half the point - finding out where it excels as a coding partner and where it needs steering.
![]() |
![]() |
| Nibble ▶ play The Nokia snake, rebuilt as an installable PWA - composable difficulty modifiers, unlockable themes, a Supabase-backed global leaderboard, and cross-device progress with no login. TypeScript · Canvas · Vite · Supabase |
Astro Hop ▶ play A retro 2D platformer, and an excuse to learn game feel properly - power-up state machines, tilemap levels, mobile touch controls, and every sound synthesized live with the Web Audio API. Zero audio files. Phaser 3 · Vite |
![]() |
Movize — a multimodal mobility ecosystem at Foco Criativo. A passenger app, the Movize Connect portal (GTFS editor, street furniture & sensors, events), an operators app, and the public web app. I own the roadmap end to end, run discovery and validation, and still ship front-end code for it. Closed source, so it isn't here - the story is in my portfolio. |
M.Sc. Information Systems Engineering & Management · Universidade do Minho IBM AI Product Manager · Professional Certificate
Portuguese (native) · English (fluent) · open to conversations about building with AI








