EU AI Act checks in the deployment pipeline
Final degree project, Universidad Siglo XXI, 2026
A validator built to run as a step of a GitLab CI pipeline. For each new version of a credit model, it measures whether the model approves men and women at different rates and checks five controls of the EU AI Act. If one fails, the deployment is blocked and the report gives the rule and the article.
Results: Working prototype. In a first run, version 1 of a test credit model passed the five rules and version 2 was blocked by the fairness rule (demographic parity difference of 0.15, limit 0.10). The evaluation against manual review takes place in November 2026.
Stack: Python, RDF, SHACL, GraphDB, Fairlearn, GitLab CI, Streamlit, Docker
The consultancy and the bank are a modelled case, not real clients.
Read the write-up
See the prototype screens
Crypto sales in Swiss branches
Union of Financial Corners, Geneva
Clients pay cash at the counter and receive Bitcoin or Ethereum in their own wallet, or sell crypto for cash. I led the launch: the requirements, the choice of the Swiss crypto partner, the backlog with the external developers, the testing, the branch procedures and the staff training.
Results: Live in all branches in Geneva, Lausanne, Bern and Zurich. Clients come back regularly, we had every document the auditors asked for, and the service is being extended to partner kiosks across Switzerland.
Read the write-up
Anonymised complaint triage for police oversight
Government of Córdoba, Argentina, 2025–2026
An NLP pipeline that removes names, ID numbers and addresses from citizen complaints before anyone reads them, and then suggests one of the office's eight official categories. A prosecutor approves or changes each suggestion.
Results: On a blind test set of 2,189 complaints, 77% recall on institutional violence and an F1 score of 0.72 on gender-based violence. Everything runs on the office's own hardware.
Stack: Python, PyTorch, BETO (Spanish BERT), spaCy, Microsoft Presidio
The code is not public because the system works with government data.
Read the write-up
Justice Inequality Simulator
Deep Generative Models course, Hochschule Furtwangen, 2025
A way to test if a model that predicts court outcomes is biased. I change one sensitive detail in the case description, like gender or ethnicity, and measure how much the prediction moves.
Results: In several cases, swapping a sensitive word moved the predicted probability by 0.10 to 0.25. Test accuracy of 0.78, probably optimistic: the write-up explains the limits of the evaluation.
Stack: Python, Legal-BERT, PyTorch, scikit-learn
Read the write-up
Open the notebook
All posts