Lead Data Scientist · Machine Learning Engineer · Professor
Statistical ML · Time Series · Causal Inference · Applied AI
Technical writing, research notes, and open-source software
Statistical modelling, production AI, decision systems, and reproducible research · Python-first
I build data and AI systems where the difficult part starts before and after model fitting: defining the estimand, choosing the decision rule, validating uncertainty, detecting distribution shift, and making the whole chain reproducible. My work spans statistical ML, time series, causal inference, forecasting, optimisation, data systems, research software, and applied AI.
The common thread is simple: start from the problem and the evidence, use the least complicated model that answers it well, and make the resulting claim inspectable.
| Evidence | Current scope |
|---|---|
| Manifest-backed public projects | 38 |
| Substantial outputs | 35 |
| Published PyPI packages | 11 |
| Case studies | 13 across 11 domains |
| Real-data / empirical projects | 23 / 38 (61%) |
| Curated flagship repositories | 12 |
These figures are generated from the same canonical portfolio data used by Statistics, so the front page and the detailed evidence page share one source of truth.
Selected professional delivery outcomes: 80% reduction in reporting costs · 30% reduction in analytics processing time · €500K reduction in inventory value through forecasting and operational optimisation.
| Project | Focus | What to inspect |
|---|---|---|
| feedback-intelligence-agent | Production AI / RAG | Guarded generation, retrieval evaluation, FastAPI serving, observability, and CI. |
| clinic-forecasting-platform | Forecasting → decisions | Rolling-origin evaluation, conformal uncertainty, hierarchical forecasting, staffing optimisation, serving, and monitoring. |
| transaction-risk-lakehouse | Data engineering / risk | PySpark lakehouse layers, temporal validation, graph-derived features, cost-sensitive decisions, streaming scoring, and drift monitoring. |
| genSurvPy | Statistical research software | Known-truth survival simulation, twelve model families, a general multistate engine, typed APIs, and published package releases. |
| pinn | Scientific machine learning | Typed PyTorch PINNs for forward and inverse PDEs, exact-solution benchmarks, adaptive sampling, and reproducible experiments. |
| bmssp | Algorithms | Typed and tested BMSSP-style single-source shortest paths with exact distances, benchmarking, graph transforms, and research-software documentation. |
→ Featured gives the 12-project reviewer cross-section. Projects contains the broader curated catalogue.
- Failure-aware behavioural sensing — separating sensor failure, missing evidence, occupancy ambiguity, and genuine behavioural change before an alert is allowed to mean anything. The public research programme lives in behavioral-sensing-research; manuscript work is maintained separately from that repository.
- Forecast → decision systems — probabilistic demand forecasts evaluated by the decisions they support, including constrained fleet allocation on real mobility data in ds-projects-portfolio.
- Survival-model evaluation — using known-truth simulation to study when ranking metrics, probability accuracy, censoring, and model misspecification tell different stories, built on genSurvPy.
- Reproducible economic and policy research — treating definitions, measurement boundaries, identification, and provenance as part of the model rather than preprocessing details.
→ More active research threads on Research.
- Model the question before the algorithm. Define the estimand, failure modes, constraints, and decision rule first.
- Use strong baselines. Classical statistical and mathematical models are often the right starting point; complexity has to earn its place empirically.
- Treat reliability as part of modelling. Calibration, uncertainty, leakage, missingness, drift, abstention, and operating thresholds belong in the design, not in an appendix.
- Make claims reproducible. Typed code, tests, CI, frozen configurations, provenance, and machine-readable outputs are part of the research and engineering contract.
| If you want to inspect… | Start here |
|---|---|
| The strongest cross-section of the portfolio | Featured |
| End-to-end problem → constraints → method → outcome reasoning | Case Studies |
| Modelling methods, statistical tools, and engineering stack | Methods |
| Active research programmes and reproducibility standards | Research |
| Rust packages for statistics, numerical methods, and validation | Rust |
| Citable software, studies, and released packages | Outputs · PyPI |
| Full catalogue breadth and quantitative portfolio evidence | Projects · Statistics |
| University teaching and supporting material | Teaching |
I am a Lead Data Scientist, Machine Learning Engineer and Professor at the Faculty of Media Arts and Design, Technical University of Porto. My work spans statistical ML, time series, causal inference, applied AI, forecasting, optimisation, research software, and reproducible applied research.
For collaboration, research, or professional enquiries, a short note describing the problem, constraints, and expected outcome is the best starting point. Longer-form technical writing and research notes live on my website.