Galway, Ireland · Product & UX Analytics

I turn what users actually do into metrics UX Research can trust.

Data analyst working with event-level product data. I instrument websites with Contentsquare, analyse behaviour in Snowflake SQL and Python, and build dashboards where every number has a written definition and can be traced back to source.

0
e-commerce events analysed in Snowflake
0%
session-level cart to purchase rate, checked two ways
0
funnel stages instrumented and mapped in Contentsquare
0%
measured accuracy across 2 yrs of financial data QA
SCROLL ▾

How I work

Instrument → Measure → Validate → Explain

Product decisions should be based on what users actually do, not on guesswork. Each project below runs this loop end to end.

Instrument

Set up tracking that reflects real behaviour: tag deployment, event definitions and page-group mapping, kept accurate as the product changes.

Measure

Work at the level of individual user actions: sessionisation, funnels and journeys, in SQL over cloud warehouses and in Python.

Validate

Reconcile against known baselines, compute the same answer two independent ways, and chase discrepancies to root cause. This includes AI-generated output.

Explain

Dashboards people rely on, definitions written down, and findings presented clearly to technical and non-technical audiences.

Case studies

On GitHub↗

Each project below is one full turn of that loop — a real question, the analysis, and how the numbers were checked — mapped stage by stage from instrument to explain. The charts use the actual figures from each repo; hover any bar or point for detail. Every project links to its versioned SQL, notebooks and source exports.

Snowflake · SQL · Power BI

Same data, two answers: why metric definitions matter

A stakeholder asks for the cart-to-purchase conversion rate. Two reasonable SQL queries come back with 69.11% and 50.31% — nearly 19 points apart. The work is proving which one is true.

InstrumentLayered RAW → CLEANED pipeline over 884,474 events; NULL audits, duplicate detection and price/timestamp validation before any analysis ran.
MeasureSession-level funnel via a CTE with conditional aggregation — the honest cart-to-purchase rate of 50.31%.
ValidateA second independent method (LEFT JOIN of cart to purchase sessions) returns the same 50.31%; dashboard revenue reconciled to €5.13M.
ExplainPower BI dashboard filtered to purchase events, every metric defined in writing — including why the naive 69.11% is the wrong grain.
View SQL & dashboard on GitHub
0%
event-level
(purchases ÷ cart events)
0%
session-level
(cart sessions that purchased)

The 18.8 point gap comes from the aggregation level alone. The session-level figure is the one reported.

Homepage
0
Product Listing
0
Product Detail
0
Cart
0
daily sessions · hover for detailone-week observation window

Sample: 7 sessions, 120 page views. Reported as directional, with the limitations written down.

Contentsquare · Instrumentation · Python

Instrumenting a live storefront, then fixing my own tracking

To learn instrumentation for real, I deployed an open-source storefront and tagged it with Contentsquare. Then the analysis caught a bug in my own tracking — and fixing it became the case study.

InstrumentDeployed the storefront and Contentsquare tag, then configured page groups for Homepage, Listing, Detail and Cart.
MeasureBuilt the 4-stage journey funnel in Python; the largest drop-off is Product Detail → Cart (60%).
ValidateJourney analysis surfaced an unresolved page label from a mapping gap — traced to root cause, fixed, and re-measured.
ExplainEvery percentage reported with its sample size (7 sessions, stated as directional), from label-based, reproducible extraction.
View notebook & exports on GitHub
Python · Pandas · Segmentation

Customer value segmentation on 3,660 transactions

Which customers actually carry the revenue? Splitting 3,660 transactions into four equal-sized value segments turns a vague question into a number you can act on.

InstrumentStructured customers into four equal-sized quartile value segments (915 each) from the transaction export in Pandas.
MeasureThe top-value quarter generates 45% of total revenue — the case for targeted retention.
ValidateRelationships true by arithmetic (price vs final price) used as data checks, not presented as findings.
ExplainLimitations stated plainly: one transaction per customer means retention can't be measured, so it isn't claimed.
View analysis on GitHub
Low value
Rs 50.1K
Mid-low
Rs 138.6K
Mid-high
Rs 227.7K
High value
Rs 341.0K
45%

45% of revenue comes from the top quartile of customers. The four segments are the same size, so the value difference is real.

AI-assisted analytics

I use AI in my work, and I verify everything it produces.

Every one of my repositories states where AI assistance was used, because generated output is a draft, not an answer. Before anything I produce reaches someone else, I read the SQL for grain and join logic, reconcile totals against a known baseline, and where it matters, compute the same answer a second independent way. That review step is how a 69.11% "conversion rate" became a defensible 50.31%.

Click a card to see it in the terminal →

I've written this method up as a reusable skill: a versioned instruction file with runnable SQL, a Python export-QA module and MCP setup, so an agent (or a colleague) can follow the same validation loop I do.

Read the skill: ux-analytics-validation

About

Ten years running my own business, then a career change into data.

Before data, I was a self-employed barber for a decade. That work is where I learned to listen for what someone actually needs, which is not always what they first ask for, and to keep their trust when I disagree with them. Those habits carry straight into working with stakeholders.

The change took two qualifications back to back, a Level 7 in software development and then a Level 8 Higher Diploma in Data Analytics, completed while working. Since 2024 I've been a financial data analyst at Infosys BPM, doing data quality on mutual fund and ETF data where mistakes have real consequences: cleansing, metadata validation, reconciliation against source, and chasing every discrepancy to root cause, at a measured 99.4% accuracy average with regular 100% weeks.

The projects on this page are how I built product analytics experience deliberately. Not tutorials: a real instrumented site, a real cloud warehouse, and dashboards whose numbers I can defend line by line. Fluent in English and French.

Warehouse & SQL

SnowflakeCTEsWindow functionsJoins at scaleMySQL

Product analytics

ContentsquareJourney analysisSessionisationFunnelsTracking taxonomy

Analysis & reporting

Python · PandasPower BIMatplotlibExcelMetric definitions

Quality

ReconciliationRoot-cause analysisAI output reviewGit / GitHub

Contact

Get in touch

contact@christianlomboto.ie