Skip to contentMaría S. López Oller · measurement spec · v2026.11
María S. López Oller
Senior analytics · data products · data & AI governance
Can you trust this data enough to decide with it, or to let an AI agent act on it?
I've spent 10+ years in analytics making numbers trustworthy. Now I build data products on top of them: AI agents and LLM features, with a person in the loop where it matters. Every number on this page comes with how it was measured and what it can't tell you. Select a highlighted number to see both.
Looking for
Senior and lead roles in analytics, data products, and data and AI governance
Experience
10+ years in analytics across the UK and Spain: retail, travel, UK government, industrial and health tech
Based in
Europe, working remotely. EU passport and UK Settled Status
Ingersoll Rand · Web Data Analyst, Customer Data Analytics Center of Excellence · 2026
Each brand collected web data its own way. I created the Google Tag Manager governance framework for and more than 100 websites, across every region including China.
I led the migration of the consent management platform, including the Consent Mode validation under GDPR and CCPA, and built the business case for Google Analytics 360 by measuring what poor data quality was costing. I also ran BigQuery analysis for the brands' marketing teams and put in place what they asked for.
Stack
Google Tag Manager
Consent Mode v2
Chrome DevTools
Google Tag Assistant
GA4
BigQuery
Metrics · how they were measured
M160brands
60 brands and more than 100 websites on 5 Google Tag Manager containers.
The scope of the work, not a result. I have no before-and-after figure to show for it.
Case 02
Specs developers could build from
UK Government Digital Service and Department for Education · Senior Performance Analyst · 2017–2021
Digital identity is harder to measure than most government services: the UK has no national ID card, so a service has to verify who someone is without one. I worked in several Agile, multidisciplinary teams at once, and created and validated new metrics and KPIs whose data quality I owned.
For my team's analytics work, I wrote the specifications developers built from: user stories and UAT acceptance criteria. With the Head of Privacy, I implemented GDPR across the unit, covering consent and sensitive data handling. Our team automated the recurring reporting with Python and ETL pipelines and cut reporting effort by , with weekly reporting to , 100% on time.
I also trained as a GDS service assessor and sat on Service Standard assessment panels as the performance analyst.
Effort spent on the recurring reports, before and after our team automated them with Python and ETL pipelines.
A team result, not mine alone. The GDPR work has no figure to show.
M330+stakeholders, weekly, 100% on time
Weekly reports delivered to more than 30 stakeholders, none late.
Case 03
One set of numbers for everyone
JD Sports Group · product owner of an 8-project measurement programme · 2021–2024
Marketing and ecommerce didn't trust each other's figures. With the director, I started from a measurement plan and agreed objectives with each area before defining any KPI. I ordered the backlog by dependency and by how many teams each piece unblocked, so no one built a metric that hadn't been agreed. Each delivery came with a working dashboard and training.
New analytics requests grew year on year, with stakeholder satisfaction.
ResourcesPresentation available on request
Stack
Measurement plan
KPI definitions
Looker
Looker Studio
Power BI
Jira
Metrics · how they were measured
M4+70%new analytics requests
New requests to the analytics team, year on year.
It counts demand from the teams and doesn't measure how much they used each dashboard.
M590%stakeholder satisfaction
From the survey run with stakeholders when each project was handed over to business as usual.
Case 04
A checkout that looked broken
JD Sports Group (Sprinter and Sportzone) · Senior Digital & Marketing Data Analyst · 2021–2024
The business wanted the checkout redesigned. Before anyone committed engineering time, I compared the funnel step by step with the retail benchmark, and found a page carrying of checkout traffic that had never been tracked. I fixed that first.
Three teams wanted three different fixes. Marketing wanted Customer Care on video calls, Customer Care wanted chat on product pages, and the evidence pointed at the checkout. I showed each team, step by step, what data existed at each stage and what each option would tell us, and we started with the checkout.
Then we went after the reasons, with a Hotjar survey categorised through the OpenAI API and live chat reasons logged by Customer Care in Salesforce. Payment failures came out as the main cause. After the changes shipped, checkout conversion rose against the pre-launch baseline, and Customer Care kept using the weekly report in its own meetings.
Share of checkout sessions passing through the sign in, guest or register page, once it could be measured.
M7+4%checkout conversion
Relative lift, against the pre-launch baseline.
It's a before-and-after comparison, not an A/B test, so it can't isolate seasonality.
Case 05
Keeping a person in the loop
Nutr(IA) Coach · co-founder and AI product manager · 2024 to now, in beta
Nutrition professionals had no AI tool built around their client work. I took the product from concept to beta. I coordinate the team and decide what to build next from interviews with more than ten of them.
We chose to give the AI to nutritionists only, so a professional reviews each recommendation before it reaches a client. The project reached the final phase of the INCOOVA incubator, ventures.
From 168 ideas. Twelve projects reached the final phase; one withdrew, so the press report mentions eleven.
The product has no paying clients yet.
Case 06
More leads on less budget
aBoatTime and BoatGrid · Head of Digital Marketing · 2015
The target was double the previous year's leads while the budget was being cut. I led a team of four, three marketers and a designer, and ran the marketing relationship with white-label partners. I agreed what counted as a lead, read the results channel by channel and moved the money to what was paying back.
Leads rose in six months with a marketing budget lower, and cost per lead went from .
May to October 2015 against the same months of 2014. A lead was a boat request form, a customer call or an online chat. The website alone grew 60%; white-label partners made up the rest.
M10−48%marketing budget
Marketing budget, year on year. Partners took a share of sales with no fixed cost, so their leads didn't add to this budget.
M11€9.38cost per lead, from €36.20
My role was marketing, so I had no booking or revenue data and can't show lead-to-booking conversion. The company no longer exists; the figures come from my 2015 report.
Case 07
A value for every Goldcar Club member
Goldcar Rental (Europcar Group) · Digital Analyst · 2016
Goldcar Club, the car rental loyalty programme, needed a way to tell which members were worth more to the business. With the Chief Digital Officer, I defined for its members.
I built it in Python and SQL, starting from RFM segmentation: how recently, how often and how much each member had spent. Marketing then used it.
In the same role I led the measurement plan across 15 countries.
Stack
Python
SQL
RFM
Customer lifetime value
Metrics · how they were measured
M12CLVper Goldcar Club member
Defined with the Chief Digital Officer, starting from RFM segmentation of each member's rentals.
It's a definition, not a result. I have no figure for what it changed in marketing.
Case 08
What goes first in the product grid
JD Sports Group (Sprinter) · Senior Digital & Marketing Data Analyst · 2021–2024
The order of a category page decides which products customers see first. The performance team asked to test new ranking algorithms in Sprinter's internal merchandising tool: one that reordered the grid from what the visitor had been browsing, and one that pushed up products related to those they had looked at.
It was a true A/B test: visitors were split at random into groups that saw each ordering at the same time, so the comparison wasn't skewed by season or campaigns, unlike a before-and-after. Success was revenue per visitor, with clicks on the grid and add-to-cart as early signals.
The hard part was the unit of the split. Splitting by user is the right choice here: the personalised ordering learns from what a visitor browses, so a split by session can show the same person both versions on different visits and blur the difference. But recognising a returning visitor needs a cookie, and on Sprinter that cookie depended on consent, so the technical team couldn't split by user and the test ran by session, against a control group with the current ordering.
How I'd check a test like this today: three arms (the current ordering as control and the two algorithms) need a multivariate test with a correction for multiple comparisons. Clicks and add-to-cart are proportions, so a two-proportion test fits. Revenue per visitor is skewed by a few big baskets, so it needs a test that copes with that, such as Welch's t-test on a large sample or a bootstrap. And with a split by session, the session has to be the unit of analysis too. My free calculator covers the planning, the multivariate set-up, several metrics at once and the risk of picking the wrong winner.
Experiments were a team effort, . I worked with the technical team to validate each test before it went live, and I evaluated the results.
Metrics · how they were measured
M13~5experiments per quarter
A/B tests on the Sprinter ecommerce site, run by the team. In the grid test, success was revenue per visitor, with clicks on the grid and add-to-cart as early signals.
I validated the set-up and evaluated the results; I didn't run the tests alone. Splitting by session means some returning visitors saw both orderings, which shrinks the measured difference. No figure here for which algorithm won.
Case 09
Can the clinic's numbers be trusted?
Personal project · dbt and DuckDB on synthetic data · 2026
A practice project on how I'd structure analytics a team can trust. Fourteen business questions about a fictional clinic, from 30-day readmissions to medication adherence, each answered by its own dbt model on synthetic data. No real patients are involved.
The data comes with defects planted on purpose: duplicated intake forms, a physician with no department, stays discharged before they were admitted and impossible lab values. Bad rows are flagged, not hidden, and each model decides what to exclude. and a data quality scorecard catch the defects: known ones warn without blocking the build, real breaks fail it.
It also works as a data catalogue. Every model has an owner, a data classification and its personal data columns tagged, and the lineage graph runs from the raw data to the reports that use it. A check in the pipeline fails the build if is left undocumented.
Schema tests plus checks on the logic, such as the hospital total equalling the sum of its departments. Last build: 81 passed, 3 warnings, 0 errors. The 3 warnings are the planted defects.
Synthetic data and a practice project, not work for a company.
M156 of 10quality rules fail, as designed
The data quality scorecard: 6 rules fail, 2 are within tolerance and 2 pass.
The failures are the defects planted in the generator, so this shows the checks work, not a real clinic's data quality.
M1634 of 34models and seeds documented and classified
Checked in the pipeline after every build: each needs a description and a data classification, and each model an owner. The check also lists 25 personal data columns.
The owners are roles in a fictional clinic, and the reports at the end of the lineage are illustrative.
AI
From trusted data to useful AI
Analytics taught me when a number can be trusted. An AI agent needs the same answer before it acts on data, so that's where I start.
Build
Data products
Nutr(IA) Coach, Case 05: agent architecture and data flows on LLM APIs and Vertex AI.
AI agents
LLM APIs
Vertex AI
Govern
Who checks the AI
A professional reviews every recommendation before it reaches a client. I'm now studying AI Cybersecurity and Governance with Columbia Engineering.
Human in the loop
AI risk
GDPR
Columbia, in progress
Use
AI in the analysis
At JD Sports, the OpenAI API categorised open-text survey answers at scale (Case 04). Day to day, AI takes the repetitive tasks and I verify the output before I sign it off.
OpenAI API
Claude Code
Ollama, local models
How I design it · Nutr(IA) Coach
Client data
Can it be trusted?
AI agent drafts
Nutritionist reviews
Client
Agentic AI in my own work
I brief AI agents the way I'd brief a team: a clear task, checks on what comes back, and a person who signs off.
Job searchA multi-agent system for my own job searchTen Claude Code agents in four phases: find openings on job sites and company applicant tracking systems, score each one against my criteria, adapt the CV and cover letter for the ones I choose, and prepare interviews. Only openings above a set score go forward, every claim is checked against one file of verified facts, and parallel sessions share a log so they don't overwrite each other's work. The agents draft; nothing is sent without my OK.
Case 09The dbt data quality projectBuilt with Claude Code: the agent wrote the models and the tests. The project shows the structure and the quality rules, not code I wrote by hand.
Career
How I got here, version by version
I didn't come to analytics by one road. Each step added a layer that checks a different part of a number. Scroll to watch the build.
Base
BA Sociology, Market and Social Research · Advanced Technician in Software Development
How to ask people questions and what an answer can't tell you, plus how software actually collects data.
+ social research
+ software
2010–2013 · Spain
Social Research Analyst, public sector and academia
Social research for the public sector and universities, before I moved into digital.
2013–2014 · UK
Insights Analyst, Branded3 (SEO agency)
Client reporting, analytics audits, UX and conversion audits, and A/B testing. My first analytics role.
+ digital marketing analytics
2015
Head of Digital Marketing, aBoatTime and BoatGrid
My first team: four people, and a budget to move channel by channel. Case 06.
+ digital leadership
2016–2017
MSc Big Data and Business Analytics, Merit
Data science and big data: models at scale. I've worked in Python with large datasets ever since.
+ data science and big data
2016–2017 · Spain and UK
Digital Analyst, Goldcar · eCommerce Analyst, TUI Group
A measurement plan across 15 countries and customer lifetime value defined with the Chief Digital Officer at Goldcar (Case 07), then long-haul analytics for three brands at TUI.
2017–2021 · London
Senior Performance Analyst, Government Digital Service and Department for Education
Multidisciplinary Agile teams. I wrote the analytics specs developers built from, owned the data quality of the metrics I defined, implemented GDPR across the unit with the Head of Privacy, and trained as a GDS service assessor. Case 02.
+ product and Agile
+ data governance
+ compliance (GDPR)
2021 · Spain
Senior Digital Analyst, Atida Group (DosFarma)
An online pharmacy with 40,000+ product references. RFM customer segmentation for retention and targeting.
2021–2024 · Spain
Senior Digital & Marketing Data Analyst, JD Sports Group
Product owner of an 8-project measurement programme: one agreed set of KPIs before any dashboard. Case 04, Case 03 and Case 08.
product owner
KPI governance
LLM text classification
2024 to now
Co-founder and AI Product Manager, Nutr(IA) Coach
An AI product taken from concept to beta. I designed the agent architecture and data flows, and a professional reviews every recommendation. Case 05.
+ data products and agents
human in the loop
2025
Agentic AI
AI agents in Nutr(IA) Coach and agentic tools in my daily work, such as Claude Code and local models with Ollama (how I use them). Alongside, Google Cloud's Gen AI Leader learning path and a 280-hour course in applied AI for business.
+ agentic AI
2025
Professional Certificate in Teaching Vocational Training (SSCE0110)
Qualified as a trainer. Training was already part of every dashboard I handed over; now I can teach it formally.
+ training others
2026
Web Data Analyst, Customer Data Analytics Center of Excellence, Ingersoll Rand
Governance at scale: tag and consent rules for 60 brands and 100+ websites. Case 01.
governance at scale
2026 · in progress
AI governance
AI Cybersecurity and Governance with Columbia Engineering: the rules for deciding what an AI is allowed to act on.
+ AI governance
Output
Sociology taught me to find out what stakeholders actually need, which isn't always what they ask for. My grounding in software development and data lets me turn that into something the technical team can build. I work as the bridge between the two.
Together they answer one question: can you trust this data enough to decide with it, or to let an AI agent act on it?
Leadership
How I lead
I've managed a team once. Most of my leadership has been without line reports: getting teams that don't report to me to agree on what to measure.
aBoatTime · 2015Line managementLed a team of four, three marketers and a designer, for nine months, after nine months managing an intern.
JD Sports · 2021–2024Leading a programme without line reportsProduct owner of an 8-project measurement programme. I agreed objectives with each area before any KPI was defined, and worked with a PMO project manager across marketing, product, technology and agency teams.
UK GDSAssessing other teams' servicesTrained as a GDS service assessor and sat on Service Standard assessment panels as the performance analyst.
GoldcarSupporting juniorsThe senior person the interns came to.
Built and written
Things I've built and written
ToolA/B and multivariate test calculatorA free tool I built and keep updating: sample size, risk analysis, CUPED and quasi-experimental methods.
RepoCustomer value with machine learningRFM segments checked against what customers did next, and a six-month spend forecast that has to beat simple baselines, explained with SHAP. Synthetic data. Rebuilt in 2026 after auditing my own 2024 code.