Step 1
Ask
what the question really is: what they asked for, and what they need. Sometimes that is a report they didn’t know to ask for, sometimes no report at all.
Step 2
Learn the system
on my own: the tables, the fields, the joins, where each number is born. Then I ask about what still doesn’t add up.
Step 3
Query and clean
the data in SQL, and in Python when SQL runs out, with AI to move faster. Nothing gets trusted until I have checked it against the source.
Step 4
Analyze
on my own, with AI or without it, until the number is explained and not just reported. When two numbers that should match don’t, I find out which one moved.
Step 5
Build it to run
as a dashboard people can check down to the row, or a pipeline that runs without me: scheduled in the warehouse, or a small one on my Mac. Then I write down how it works.3
How I work, told twice.
Analyst by trade, operator by need, tinkerer by habit.1
Operations and analytics at Stripe, after nearly four years in enterprise data at F5. I learn the system, write the query, clean the data and build what keeps the answer current. I use AI along the way and check it against the source. Everything here is told twice: the way a slide would say it, and the way it actually went.

Three cases, short
ResultIt is in use, and planning by sales segment follows it.
Targets by seller segment had to reflect past performance and what the business expected next.
I built a multi-variable model on historical performance and stated business assumptions, with its dashboard, and refined both from stakeholder questions, walking them through scenarios and checking each assumption.
- Modeling
- Scenarios
- Dashboards
ResultCandidates ranked into confidence buckets for people to review.
Before a migration, accounts in the CRM and customers in the ERP didn’t line up, and reviewing them by hand was impractical.
A layered pipeline: exact and cleaned names first, then phonetic keys and fuzzy similarity. An identifier both systems already shared settled many matches outright.
- SQL
- Python (AI-assisted)
- Cloud warehouse
ResultErrors get fixed where they start, not patched in the report.
Missing or wrong fields in the CRM broke the reporting that leadership relies on.
Daily SQL pipelines check the data and build a follow-up queue: who acts, on which record, with the correct value and staged reminders. People still do the outreach, and with engineers I own the automation projects around it.
- Scheduled SQL
- Salesforce
- Automation
Employer work is described in general terms, with no figures or internal details.
- The jobThe hands-on part: systems, queries, clean data, things that run.
- Track recordWhere I’ve done it, briefly.
- Off hoursWalking, music and trees, measured with the same rules.
- This siteThe pipelines behind those numbers, and what they may never publish.
- LabWhat is half-built right now, and how far along.
- Left outWhat isn’t on this page, on purpose.
The job
End-to-end analytics, from raw data to decision-ready dashboards.2
The tools change. The sequence doesn’t. Here it is with one made-up question, from the ask to the job that runs every week.
Tools, roughly in order of how often they settle the questionA conversation · SQL · Salesforce · Snowflake · A spreadsheet · Dashboards · Python (AI-assisted) · Data pipelines · React prototypes · Git · VS Code · Coding agents · AI agents · Scheduled skills
Track record
A track record across operations, analysis and data quality.4
Apr 2026 — now
Stripe
In practiceI learn the systems and build what the numbers run on: dashboards you can check down to the row, a human-reviewed AI workflow for incoming requests, daily SQL pipelines that catch bad CRM data and queue the follow-up so it gets fixed at the source, and a multi-variable target model that is in use for planning by sales segment. AI is in nearly all of it; I decide the question, check what comes back and sign off.5
Mar 2024 — Jun 2024
Advantive
In practiceOn a short contract I built and audited the Salesforce reports and dashboards Customer Success leaders used to track performance, and fixed the ones that were wrong or slow.6
Jun 2022 — Apr 2026
F5
In practiceI started on governed account changes, catching duplicates before they were created. I designed the team’s request process and SLA log, which it adopted as standard. I learned SQL by asking to shadow the analysts doing the reporting, which led to GTM reporting and a promotion to Data Analyst II. I finished on migration readiness: reconciling records between systems before they moved.7
Feb 2022 — Jun 2022
Endeavor México
In practiceIn the internship I segmented companies, kept prospect and survey datasets clean, and analyzed survey responses for entrepreneurship reports: the unglamorous data work behind them.8
Aug 2018 — now · family firm
Penagos Mendoza y Asociados
In practiceAt my family’s accounting firm I maintained operational and accounting data and built basic Excel and Power BI reporting, applying what I was learning in school to real numbers.9 Alongside the day job I maintain the family firm’s website, a structured publishing workflow, and its social-media posts. AI helps with drafts; a person reviews everything before it goes out.
Appendix D: how Penagos Mendoza is wired →
Background
- Business Intelligence · UPAEP
- Business Administration · City University of Seattle
- Co-author, “Text Mining Applied as Business Intelligence in the Tourism Industry,” De Gruyter, 2022. Read it ↗
- I am also on LinkedIn ↗10
Off hours
A longitudinal, multi-source personal analytics program.11
I walk. A lot. It is where I do most of my thinking, and trees are most of what I look at. Then, because I can’t help it, I started keeping records of the walking, the music and the trees, with the same rules I use at work. Nobody is waiting on these numbers, so they are a fair test.
- Distance
- 231.7km
- Steps per day
- 11,459per recorded day
- +8% vs the year
- Marathons
- 5.5at walking pace
- Days recorded
- 30of 30
The last 30 days, with steps a day set against the year’s pace. The small lines are the last twelve closed months.
- Distance
- 231.7km
- Steps per day
- 11,459per recorded day
- +8% vs the year
- Marathons
- 5.5at walking pace
- Days recorded
- 30of 30
The last 30 days, with steps a day set against the year’s pace. The small lines are the last twelve closed months.
Record 1
Walking
231.7 km in the 30 days to Oct 3012
The ruleTranslate the number into something a person can picture.
Appendix A: the full walking record →My eight most played albums since 2013. The bigger the cover, the more plays. The shared account’s albums are left out.
Record 2
Music
90,112 plays since 2013, once the records were cleaned13
The ruleA ranking without its sample size is decoration.
Appendix B: the full listening record →One mark per living tree. The narrow ones with veins are the five ash trees.
Record 3
Trees planted
10 trees I planted in the last two years that are still alive14
The exceptionSome numbers are here only because I like keeping them.
Two rules, then: make the number picturable, and show its sample size. They are the job’s habits, applied where nobody is checking.
This site
A privacy-first, automated personal data platform.15
Step 1
A private source
Each record starts somewhere I would not publish raw: a step counter, a phone health export, streaming histories, a scrobble log, the site’s own visits.
Step 2
The Mac mini collects
Collectors on an always-on Mac mini read the live sources. The two big exports, Apple Health and streaming history, are read once on my Mac and reduced to totals. Raw records never leave the dashed line. An Apple Music export is still on its way.
Step 3
The validator checks
Coverage, duplicates and freshness. A run that does not validate changes nothing: the last edition stays up.
Step 4
Only totals cross
The gate lets small summaries through into a public file. Nothing finer than a total does.
Step 5
The page
The file is committed and deployed, and the live site shows it. No AI subscription is in the loop.
| Record | Source | Published | Updated |
|---|---|---|---|
| Listening | Last.fm, weekly, and a streaming-history export read on my Mac; Apple Music export pending | Top 20 songs, artists and albums for the month and year, plus monthly totals since 2013; never a single play | Oct 31, 2026 |
| Walking | Fitbit through Google Health, read-only, and an Apple Health export read on my Mac | Steps and distance for recent windows, plus monthly and yearly totals since 2023; never a single day or route | Oct 30, 2026 |
| Visits | Vercel Web Analytics, no cookies | Visitors, views, countries, pages and devices, as counts | Oct 31, 2026 |
| Trees | A planting log, kept by hand | How many of the trees planted in the last two years are alive, and how many are ash | by hand |
The pipelines run without me, which is the point. The walking one still needs me now and then; it is on the bench below.
AI coding agents write most of the code; I define the system, its constraints, what gets published and what ships.16 Orchestrating agents is what I am working on most right now: a few agents wired together, and me holding the keys, meaning the repository, the API access and the final yes.
Wondering about the data? It is public too.
See this site’s analytics →AI-augmented, human-in-the-loop decision intelligence.17
LabOn the bench
A culture of continuous experimentation.18
Work in progress
- BuildingDecks and prototypes in HTML and React
Internal decks and small prototypes in HTML and React, and automations I own with engineers, with AI doing much of the typing. What I can show lives on this site.
- BuildingA walking connection that lasts
The Google side of the walking record still needs verifying, so it can run without me re-approving it by hand.
- LaterNotes
Short write-ups of things that broke and what fixed them, once there are enough.
Left out
Radical transparency.19
- Every bullet point of every job
- This page keeps the dates, the roles and how I work. The long version is on LinkedIn.
- Employer metrics, systems and partners
- Not mine to publish. The descriptions above stay at the level of how I work.
- Walking routes, times and places
- Distance answers the question I care about. Routes answer a different one: where I live.
- Heart rate, sleep and the rest of the health record
- The site never receives them.
- The full listening history
- A ranked selection is honest enough. The rest is just embarrassing.
- Where the trees are
- They are doing fine without visitors.
- Skill bars
- No one has ever been 80% good at SQL.
- A blog
- I don’t have a publishing schedule and won’t pretend to.













