Projects
Things I've built: my own products, free tools, client work, and open source.
Products
Vidextract
Any social video, as structured data. One API call turns a YouTube, TikTok or Instagram video into transcript, comments and metadata, plus a typed AI extraction that conforms to your JSON schema.
Cut Gen
Upload a selfie and see photorealistic previews of hundreds of hairstyles in seconds, from classic bobs to bold mohawks. Compare before and after with a slider, then download the result to bring to your stylist.
Our Baby Bee
Each parent swipes through names on their own phone: yes, no or maybe. Votes stay secret until you both like the same name, and then it’s a match. Invite partners, grandparents or anyone else.
Clip Recipe
Paste a link to a cooking video and get a clean written recipe: ingredients, quantities and steps. Built with Django, htmx and Gemini.
Streamliter
Write, run and deploy Streamlit apps directly in the browser, with billing through Stripe. No local setup or infrastructure needed.
Neckie
E-commerce store built from scratch for a neck warmer brand, with Stripe checkout. Django, htmx and a lot of product photos.
Freelance
Copilapa
Website for a Lisbon printing service, including an interactive calculator that prices print jobs on the spot.
Intentional Sets
Website for a movement coach, with resources, classes and guidance.
LATO Projects
Portfolio website for an architecture studio, built with Next.js on top of a CMS so the team manages projects themselves.
João Jóia Paulo
Portfolio website for a photographer, kept minimal so the images do the talking.
Mussoc
Website for a Portuguese mental health non-profit, built with Django and Wagtail so the team edits all content themselves.
Olaria e Figurado
CMS-backed site that gathers Portuguese pottery and figurado artists, museums and fairs in one place.
IPS Grow reporting tool
Reporting platform used to monitor IPS employment program progress across the UK. Built with Django and PostgreSQL during my time at Social Finance.
Free tools
Regiões de Portugal
Every distrito, município and freguesia in Portugal, from the official CAOP boundaries, with the codes each one is filed under. Search any name or code, drill down on a map of the country, and copy what you need. The whole thing is also served as plain markdown for anything that would rather read it that way.
Parking
Save the spot where you parked your car and share it, so you or anyone you send it to can find the car later.
EMEL Zones
Interactive map of EMEL parking zones in Lisbon. Check the zone you are in and whether you can park there.
Toolbelt
Chrome extension with three page utilities: download every image on a page as a single zip, extract text from any region of the screen, and convert pages to clean markdown. Runs entirely on your device, using your own Gemini API key.
Quanto Fica
Enter your salary, pick dependent or independent worker, and see how much goes to taxes and how much you take home. Pre-filled values make it quick to compare scenarios.
Open source
Saldo
TypeScript library that calculates Portuguese taxes and net income for employees and freelancers, covering the withholding tables for the mainland, Azores and Madeira. Zero dependencies, fully typed, with a CLI for quick simulations.
Freelance Simulator
Estimate net income and taxes for freelancers in Portugal, across regimes and scenarios. Open source, built with Vue and TypeScript.
Lucide
Use Lucide icons directly in Django and Jinja templates through a simple template tag.
Debtors
Search, filter and export the Portuguese Tax Authority’s public debtors lists. A Python scraper keeps the data fresh and a React frontend makes it searchable.
Recursos Hídricos
API that makes Portuguese SNIRH national water resources data easier to access programmatically. Built with Django and django-ninja.
Bereal Telegram Bot
Telegram bot that pings your chat at a random time each day asking for a photo, inspired by BeReal.
VLC Remote Control
Control VLC playback from your phone through a small web interface. Python, FastAPI and Tailwind.