SmartPenny
Personal-finance web app: a unified dashboard for spending and investments, smart invoice/receipt parsing with automatic categorization (DQA), and budget management with real-time tracking.
Hi there, I'm
a
Mostly I build things, break things, and automate the boring parts, and somewhere in there I fell for trading systems.
Published in Computational Economics (Springer)01 / About
Lately I'm just as focused on how I build as what I build, squeezing the most out of coding agents and new AI tooling to make my day-to-day workflow faster and sharper.
Financial markets have a particular grip on me: my MSc thesis dug into ML models for predicting market trends, and I've been hooked on trading systems ever since.
Away from the keyboard, I'm usually reading about space exploration, putting in work at the gym, or three tabs deep in the latest AI news.
Based in Lisbon · MSc in Computer Science & Engineering
02 / Experience
03 / Projects
Personal-finance web app: a unified dashboard for spending and investments, smart invoice/receipt parsing with automatic categorization (DQA), and budget management with real-time tracking.
This very website, built with Astro: full-screen scroll-snap sections, an interactive particle backdrop and a tabbed experience timeline.
Solves the Ricochet Robots puzzle in the fewest moves by formulating it as a tree-search problem and traversing it with the RBFS (Recursive Best-First Search) algorithm.
Tracks AI-slop indicators (CLAUDE.md, .cursor, AGENTS.md) across open-source GitHub repos. Built a ~280k-repo dataset with full metadata, an enrichment pipeline and ongoing snapshot refresh.
My first portfolio: a single-page scrolling site built from scratch with vanilla HTML, CSS and JavaScript. Where I first explored front-end design.
Implements Dinic's algorithm to compute maximum flow in a quadrangular graph with vertex capacities and super-sources, solving a conceptual optimization problem.
Maximum connectivity at minimum cost for a transportation network: Kruskal's algorithm finding the minimum spanning tree using a Union-Find (by rank) data structure.
Finds the smallest lexicographic cyclic rotation of a string in linear time by building a Suffix Tree with Ukkonen's algorithm.
04 / Contact
Got a project, an opportunity, or just want to say hi? My inbox is always open.