Dashboard Filters Are Not Row-Level Access Controls
Dashboard filters change what a report displays, not who can access the source data. Use viewer-email filtering or separate per-rep files, then verify access as the recipient.
Leveraging a career that spans manufacturing, education, and urban mobility, I specialize in solving complex challenges. My focus is on using data to find clarity and drive measurable growth, regardless of the industry.
Grain First
Table & Metric Clarity
4 Pillars
Metrics · Data · Reporting · Ownership
AI + Ops
Production Systems & RAG
Conflicting totals usually start when spreadsheets mix orders, line items, and payments in the same view. Declaring the table grain first restores trust in every downstream metric.
Selected case studies across business development automation, educational transformation, and AI-assisted career learning.

An existing English-learning LMS, with a wider data and software career-learning direction planned.

Leading a language school's complete pivot to online learning during COVID-19.

A modular Python pipeline that automates multi-stream business development, from prospect research to AI-drafted outreach.
With a unique blend of hands-on manufacturing expertise, educational leadership, and data analytics skills, I bring a comprehensive perspective to every project. My approach combines decades of real-world experience with modern technological solutions to deliver tangible results.
About Me
Field notes on turning messy spreadsheets into reliable decisions, alongside essays on AI engineering and language pedagogy.
Dashboard filters change what a report displays, not who can access the source data. Use viewer-email filtering or separate per-rep files, then verify access as the recipient.
When a Data Studio dashboard total differs from your Google Sheet after refreshing, check filter scope across every metric, replace AVG or SUM of row percentages with a guarded SUM/SUM calculated field, and match COUNT_DISTINCT(order_id) versus COUNT(line_id) grain.
Check saved edits, the Google Sheets connector Optional Range, report date filters, and the 15-minute query cache in order, then compare the report total, row count, and latest date against a sheet check block.