Projects

Platforms, tools and open-source projects at the intersection of data, health and education

Flagship Project
AulaMetrics
A psychosocial assessment and data analytics platform for schools, surrounded by an open ecosystem of free educational resources.

The problem

Spanish schools routinely need to run standardized psychosocial assessments (well-being, risk indicators) but typically lack a system to schedule them, collect anonymous responses at scale, analyze results, and flag risk automatically — counsellors are left doing this manually with spreadsheets.

The solution

AulaMetrics is a complete module built on Odoo 17 Community Edition that lets schools schedule standardized evaluations, collect anonymous responses through unique tokens, automatically analyze results with risk detection, and generate role-differentiated dashboards and reports for administrators, counsellors, tutors and school leadership.

More than a system: a whole ecosystem of value

AulaMetrics started as a platform for schools and has grown into a project with two connected halves: the product for centres, and a public website that gives teachers, tutors, counsellors and families useful resources every day, for free.

Platform for schools

Scheduling and anonymous collection of standardized questionnaires, automatic scoring against official norms, risk alerts, case follow-up and role-based analytics down to the individual student profile.

See the platform
Free educational resources

An open website for teaching staff, tutors, counselling teams and families. No registration, openly licensed (CC BY-NC-SA 4.0), with regulations and evidence cited. The tools run in the browser, so student data never reaches a server.

14
tools
19
guides and banks
238
official protocols
22
printable worksheets
Visit aulametrics.es
How the two fit together

The resources give practitioners daily value and are the way into the project; the platform automates, at scale and with proper data protection, what those tools do by hand. New content is prioritized with Search Console data, so the site grows around what people actually look for.

Screenshots

1/7Evaluations dashboard with live participation rates and active alerts.

Tech stack

Odoo 17 (Python 3.10+)
PostgreSQL 14+
pandas
Chart.js
d3-cloud
Bootstrap 5
QWeb
HTML5 / CSS3 / JS
Docker Compose
Static web (HTML/CSS/JS, Vercel)
Python (PDF/DOCX generation)
Google Search Console
Modular 3-layer architecture

Presentation, application and data layers with a purpose-built entity-relationship model: academic groups, evaluations, questionnaires, participations, alert thresholds, alerts and metrics.

Privacy & security by design

Four-level role system (administrator, counsellor, tutor, school leadership) with row-level access rules in Odoo, aggregated-data anonymization for tutors/leadership, GDPR/LOPDGDD-aware handling of minors' data, a session-less public portal secured with UUID v4 tokens, and HTML sanitization against XSS.

Validated with real school counsellors

Demo and feedback sessions with practicing counsellors at Spanish public schools drove a significant refactor of the scoring engine — adding multi-scale support per questionnaire (e.g. SDQ, SWLS) — plus a new case-tracking and internal messaging module.

Production-ready deployment

Containerized with Docker Compose (Odoo + PostgreSQL) on a Linux server, with a documented production plan including an Nginx reverse proxy and HTTPS.

Resources built like a product

Printable worksheets are defined once from a block-based system and generated as both PDF and Word with Python; 238 official protocols are searchable by autonomous community and topic; every tool is client-side only.

Open, citable content

Guides cite the regulations (LOMLOE and its royal decrees) and the scientific evidence, and flag where rules change by region. Protocols cover the 17 autonomous communities plus Ceuta and Melilla.

Why this matters for data analysis

AulaMetrics is end-to-end applied data engineering: from the data model and collection to the analytics engine and visualization, built on a domain (psychosocial well-being in schools) directly connected to my research specialty. The open website adds the other half of a data practitioner's work: understanding who the users are, publishing source-cited content and measuring what works. It reflects the same pipeline thinking I apply in quantitative research, taken all the way to production software and a real audience.

Designed and built entirely by me. The platform began as my Final Degree Project (Higher Technician in Multiplatform Application Development, CEEDCV), supervised by Alfredo Oltra Orengo.

Data journalism · Open source
Unmasking Gambling
Interactive simulations and real-data analysis on the mathematics of gambling, in Spanish and English.

The problem

Most prevention messages say that gambling is risky, but rarely show why. The evidence that explains it (house edge, variance, bookmaker margins) sits in technical sources that few people read.

The solution

A bilingual site where visitors run the simulations themselves and check real data. Every page has a plain mode (ideas without jargon) and a technical mode that reveals the formulas, statistical methods and code behind each chart, so it works for the general public and for analysts alike.

Screenshots

1/4Ruin Lab: 5,000 simulated players and how their money evolves.

Tech stack

Astro 5
React 19
TypeScript
d3 (scales and shapes)
Web Workers
Python (pandas, SciPy)
Vitest
GitHub Actions / Pages
satori (share images)
Ruin Lab: Monte Carlo in the browser

Simulates thousands of players at once in a Web Worker and shows how the house edge wins over time, with percentile bands, Kaplan–Meier survival curves and gambler's-ruin results.

Do the odds tell the truth?

A reproducible Python pipeline over 235,796 football matches (2000–2026) with real bookmaker odds: overround removal (proportional, power, Shin), calibration with Wilson intervals, favourite–longshot bias with bootstrap CIs, strategy backtests and an out-of-sample ordinal logit comparing Elo with the market.

Official market data, every figure sourced

Dashboard of Spain's online gambling market (revenue, hold, marketing, bonuses, prevalence among teenagers and adults) built from official sources (DGOJ, Ministry of Health), with each figure linked to its origin.

Prevention tools that stay private

Exact odds for roulette, slots, lotteries and sports betting, plus a guided path to a personal plan with a validated screening (PGSI) and a printable plan. Nothing leaves the browser.

Tested maths

The calculation library is pure TypeScript, covered by Vitest tests for exact edges, gambler's ruin, Kaplan–Meier, margin-removal methods, slot RTP and volatility, lottery odds and the PGSI and plan engines.

Hand-built, accessible charts

SVG charts built on d3 scales, with tooltips, a table view and dark mode; every page gets its own social-share image generated at build time.

Why this matters for data analysis

A complete example of statistical communication: from a reproducible analysis pipeline (calibration, bootstrap intervals, out-of-sample validation) to an interface that explains the result to non-specialists, with the technical detail one click away.

Personal project, designed and built by me. Released under the MIT licence.

Browser extension · Open source
NextPaper
Related literature while you read: open any paper and see the most relevant related work, ranked by semantic similarity and grouped by subtopic, all inside your browser.

The problem

Mapping the literature around a paper means chasing references and citations by hand, and the tools that help usually require an account, a server or an AI subscription.

The solution

A Chrome/Edge extension that analyzes the open article from its references, citing papers, title search and Semantic Scholar recommendations, ranks the candidates by SPECTER2 embedding similarity, groups them into subtopics and provides everything needed to triage, save and cite. No server, no account, no tracking, no AI calls, no cost.

Screenshots

1/4Related papers for the open article, with a “Start here” section.

Tech stack

Plasmo (Manifest V3)
React 18
TypeScript
Tailwind CSS
Vitest
Semantic Scholar API
SPECTER2 embeddings
Crossref
Unpaywall
Clustering written from scratch

Hierarchical clustering implemented from scratch, with the number of groups chosen by silhouette score; groups are shown only when they can be given an honest name. A “Start here” pick offers a classic, the most relevant review and the most recent work.

Ranking evaluated, not assumed

The ranking constants were measured on 51 seed papers across 18 fields (precision and nDCG with bootstrap intervals, paired comparisons against alternative rankings), and the limits of using the citation graph as a proxy for “related” are documented.

Private by architecture

Everything runs in the browser; each user brings their own free Semantic Scholar key, stored locally and sent only to Semantic Scholar. Where a study design or sample size cannot be established reliably, it shows nothing rather than a guess.

Built for the researcher's workflow

A local library with reading status, notes and collections; import from BibTeX, RIS or a list of DOIs; citations in APA 7, MLA 9, Chicago, Harvard, IEEE, Vancouver, AMA, BibTeX and RIS enriched with Crossref; daily alerts for new related papers; English and Spanish interface.

Why this matters for data analysis

It applies embeddings, clustering and offline evaluation under real constraints (API rate limits, noisy metadata, no labelled data) and stays honest about uncertainty, the same habits I bring to quantitative research.

Personal project, designed and built by me. Released under the MIT licence.

Browser extension · Chrome Web Store
Breathy
A free, private companion for more responsible online gambling: a dragon that follows your session and helps you pause.

The problem

Online gambling is built to make people lose track of time. Tools that simply block sites are all-or-nothing, and anything that needs an account means handing sensitive data to a third party.

The solution

Breathy detects when you enter a casino or betting site and accompanies you instead of judging you: a reflection pause on entry, a dragon mascot whose mood follows your session, guided breathing, reality-check questions, session and daily limits, and an emergency pause that blocks casinos for 24 h, 48 h or 7 days. Everything is stored locally.

Screenshots

1/2The Chrome Web Store listing image: limits, guided breathing, casino blocking and full privacy.

Tech stack

JavaScript (ES modules)
Chrome Extension Manifest V3
Content scripts
chrome.storage / alarms
WebM mascot animations
Spanish/English i18n
Static landing page (HTML + CSS)
A mascot that mirrors your session

Calm at the start, tired halfway through your limit and on alert when you exceed it. One click starts a one-minute guided breathing exercise (4-4, 4-7-8 or 4-4-4).

Limits you can't dodge by closing a tab

Per-session and cumulative daily limits (closing the tab does not reset them), reality-check questions every 10 minutes, and an emergency pause that cannot be switched off until it ends.

Automatic casino detection

Recognizes the main casinos and betting sites in Spain, Latin America, the UK and internationally; a site that is not recognized can be registered in two clicks.

Private by design

No sign-up, no accounts, no servers, no analytics: all data stays in the browser, and the stats (today, this week, days-without-gambling streak) are computed locally. Professional help resources are always one click away.

Where my research and engineering meet

It combines my background in behavioural health with product engineering: brief interventions inspired by responsible-gambling practice (reflection pauses, reality checks, breathing, commitment devices) delivered at the moment of risk, with no data collection at all.

Personal project, designed and built by me and published on the Chrome Web Store.