Projects
Platforms, tools and open-source projects at the intersection of data, health and education
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.
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 platformAn 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.
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
Presentation, application and data layers with a purpose-built entity-relationship model: academic groups, evaluations, questionnaires, participations, alert thresholds, alerts and metrics.
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.
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.
Containerized with Docker Compose (Odoo + PostgreSQL) on a Linux server, with a documented production plan including an Nginx reverse proxy and HTTPS.
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.
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.
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
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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
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).
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.
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.
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.