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.