✦ open to remarkable things

I make machines useful. Occasionally clever.

AI engineering, minus the unnecessary drama.

The short version

Started in mathematics, wandered into computer science with a taste for data mining, and kept following the thread: Data Science, Data Engineering, and now AI Engineering with a soft spot for anything GenAI.

I like taking messy problems and unnecessarily complex processes, and turning them into something simple, useful, and technically honest. Particular weakness for LLMs, RAG and agents — when they actually solve a problem, not just because they're on the menu.

Porto · remote-first

Following the thread

Four chapters, developed and pinned — hover to pick one up.

2022 · Research

Predictive ML for health

Data scientist at GECAD — forecasting hospitalization needs for remote patients.

first stitch: models that mattered

2023 · Data Engineering

Pipelines & warehouses

ETL and warehousing at Volkswagen Financial Services.

models are only as good as the plumbing

2024 · GenAI Consulting

Multi-agent systems

Hierarchical LangGraph agents at Accenture, for enterprise clients.

where agents learned to take turns

Now · AI Engineering

Owning it end-to-end

AI engineer at SkillUp — building the AI engines and APIs behind a learning platform: predictions with reasons, systems with guardrails.

a soft spot for anything GenAI

— four frames, one thread ✦

Projects with backstories

Learning platform

Predicting learner performance, explainably

A prediction API for a learning platform. Every prediction ships with its reasons — because “trust me” isn't much of an explanation.

Built to turn learning activity into an actionable view of learner performance — not just predict a result, but surface who might need support and why.

I inherited an early prediction-engine scaffold and was the main contributor during its functional build and design phase: reworking the prediction contract and designing and implementing the rule-based logic behind it.

Where it gets interesting is what the system refuses to pretend. It defaults to rules-only, with ML gated behind explicit data, validation and monitoring criteria. And confidence is data-completeness-aware: rules that can't be evaluated are skipped, weights are redistributed, and confidence drops. A prediction shouldn't look equally trustworthy when part of the evidence is missing.

RoleMain contributor during the functional build and design phase, on an inherited scaffold — the data pipeline and parts of the ML and cohort stack were owned or shared elsewhere
StackPython · FastAPI · xAPI data (ClickHouse upstream, owned by Data Engineering) · REST API
ContractPOST /predict (student_id, course_id, school_year) → a quantified risk signal with a confidence level — and human-readable reasons attached to every prediction
Operating modeRules-only default operating mode; ML gated behind explicit data, model-artifact, validation, rollout and monitoring criteria
Data qualityRules lacking inputs are skipped, weights redistributed across evaluable rules, warnings surfaced, confidence reduced
ExplainabilityRule-level rationale exposed in the output — downstream systems consume it without reconstructing it from numeric weights
AlertsMedium/high-risk publishing hooks: Data Hub primary, Feedback API fallback — implemented and unit-tested
StatusImplemented and locally tested · 141-test snapshot, all passing · UAT/readiness documented · production usage not evidenced
AI tooling

AI Systems Debugger

A local-first debugger for LLM pipelines: what went in, what happened at each step, what came out — and where it fell apart.

Started as a side project with a deliberately small brief: take an LLM flow and see what went in, what happened at each step, what came out — and where it failed.

Most of the design effort went into keeping it small. I dropped the original "Auditor" concept when it started pulling the product toward evaluations and compliance, asked myself the uncomfortable "isn't this just Langfuse?" question early, and built incrementally: a Python tracing core first, kept separate from the API and inspector UI that grew around it later.

One detail tells you what kind of tool this wants to be: failed runs are persisted before the exception is re-raised. Every run becomes structured step-level traces — inputs, outputs, timing, status, errors — with recursive redaction on the write and read path. Losing the crash is the one thing a debugger isn't allowed to do.

RolePersonal side project — all 34 visible commits are mine
StackPython tracing core · FastAPI · React/Vite inspector · JSON persistence · Docker Compose
TracesStructured step-level traces (input, output, metadata, timing, status, errors) with an explicit trace/step lifecycle
Failure pathFailed runs are persisted before the exception is re-raised
PersistenceJSON with validation, atomic writes, retention, and recursive redaction on the write/read path
ArchitectureTracing core kept separate from API and UI; evolved incrementally from Python + Streamlit to FastAPI + React
DeliveryCI with smoke path · Docker Compose · validated Render deployment
Tests36 Python tests passing · historical frontend build/smoke green
ScopeInstruments a demo pipeline today — not yet a generic drop-in for arbitrary external pipelines

Also built

Internal hackathon · Personal POC

AI Modules POC

An xAPI-first learning analytics POC — explainable predictions, deterministic recommendations, and human-reviewed AI feedback. The case for the leaner architecture, made in code rather than slides.

FastAPI · xAPI analytics · Next.js · Local-first LLMs

Course project

Life Ops Planner

My first true end-to-end deployment: React up front, FastAPI and Postgres underneath, an MCP-style service in between — shipped to Render, where actual other humans could use it.

React · FastAPI · PostgreSQL · MCP

View source on GitHub ↗
Personal · Solo

ragcruit

Semantic matching between candidates and job postings, with local embeddings and pgvector — so matches are about meaning, not keyword luck.

FastAPI · PostgreSQL + pgvector · React

View source on GitHub ↗
Personal · Solo · In progress

Agent Deployment Platform

An in-progress bet on safe agent execution: typed actions, approvals, receipts and audit trails — the guardrails arrive before the autonomy does.

The toolbox

What I reach for daily

  • Python
  • Generative AI
  • LLMs
  • RAG
  • AI Agents
  • Machine Learning
  • Azure AI
  • Azure OpenAI
  • MLOps / LLMOps
  • APIs
  • Data Engineering
  • Prediction Systems

Also in the drawer

  • AWS
  • Data Quality
  • LangChain
  • LlamaIndex

Community & beyond

Hackacity

Two editions, two team wins: a 1st place and a Data Quality Award. Both shared with great teammates — the good kind of chaos.

Data Science Portugal

I show up for the meetups — to listen, learn, and ask the occasional question.

Portuguese Women in Tech

Mentee in the 2021/22 mentorship program — the kind of program that stays with you.

liked what you saw?

let's talk ✦
LinkedIn GitHub TODO: confirm public email