Projects
Things I've built: my own products, free tools, client work, and open source.
Products
Post Reef
Any post on the social web, as structured data. One API call turns a YouTube, TikTok or Instagram link 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.
Olaria e Figurado
CMS-backed site that gathers Portuguese pottery and figurado artists, museums and fairs in one place.
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.
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.
Debtors
Portugal publishes two public debtors lists, the Tax Authority and Segurança Social. This puts both in one place: search by name or NIF, filter by type and debt bracket, and export to CSV. Kept fresh daily by an open source scraper.
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
Debtors scraper
Scrapes Portugal’s two public debtors lists, the Tax Authority PDFs and the Segurança Social web app, and publishes both as JSON on a daily cron. The files work as a read-only API, and power debtors.fmacedo.com.
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.
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.