2026 · Business Intelligence · Dashboard Design · Data Engineering
Tatari
Tatari’s internal teams had spend data spread across channels, deal structures, and inventory types, with no single view tying it together. I built the Inventory Insight Dashboard and the dedicated data source behind it, turning a reconcile-it-yourself workflow into one place stakeholders could answer their own questions.
role
Data Science BI Intern
timeline
June – September 2026
tools
SQL, Python, Tableau
team
BI team, partnered with media, revenue, E-staff, and directors
01 — context
Measurement is the product
Tatari runs a convergent TV ad platform, letting hundreds of brands and agencies buy and measure campaigns across streaming TV, linear TV, and online video from one place. Measurement is what customers pay for, so nearly every internal decision runs on spend and inventory data too. I joined the business intelligence team for the summer, sitting between the stakeholders asking questions and the data that answers them.
02 — core duties
What I owned
Build and own Tableau dashboards, the Inventory Insight Dashboard chief among them
Develop new data sources in SQL and Python, pulling from across the business
Maintain the live connection so reporting stays current without manual refresh, and safeguard data quality and accuracy
Handle ad-hoc data requests from teams across the company
03 — problem
No dashboard painted the full picture
Anyone who wanted to understand where the business was spending had to open multiple dashboards and reconcile them by hand before the picture made sense. Spend was split across channels, deal structures, and inventory types with nothing tying them together, and each dashboard answered only part of the question. Every remaining gap came back to the BI team as a manual data pull, which meant stakeholders waited on us for answers they should have been able to get themselves.
04 — process
Start at the data layer, not the chart
I scheduled meetings with stakeholders across the teams that would use it, asking what they wanted from the dashboard, what had been inconvenient about the existing setup, and which questions they were trying to answer.
Decision 1 — build a source, not another view
What came out of those conversations was that no existing dashboard painted the full picture. Adding one more view on top of the same fragmented inputs would have reproduced the problem, so I built a dedicated data source instead.
Decision 2 — make it live
A dashboard that needs a manual refresh is a dashboard someone has to own daily. I connected the source to auto-update on a daily schedule so the view is current whether or not anyone on BI touches it.
Decision 3 — design the cuts around real questions
Channel, deal structure, and inventory type became the primary breakdowns because those were the dimensions stakeholders kept reconciling by hand, not because they were the easiest to model.
05 — solution
One dashboard, one source
The Inventory Insight Dashboard: a new data source developed in SQL and Python that pulls the relevant data together, connected live so it auto-updates daily, surfaced through a single Tableau view that breaks spend down by channel, deal structure, and inventory type.
06 — outcome
What moved
The dashboard became the one-stop shop for understanding the business’s spending dollars, replacing the reconcile-it-yourself workflow. It cut the manual data pulls the BI team was fielding and gave stakeholders a current view without waiting on anyone.
07 — reflection
The stakeholder defines the solution
There is no one size fits all solution. The what, the why, and the how all shift depending on who is asking, and that changes how I frame the problem, how I work through it, and what the final result needs to look like. Getting the stakeholder right early is what kept the dashboard from becoming another partial view.
The summer also changed how I work with AI. It is part of the day-to-day here, and using it well is a skill of its own — knowing where it accelerates the work, where it needs to be checked, and how to lean on it for both speed and quality rather than one at the cost of the other.
2026 · Team Leadership · Full-Stack · Python
Davis Data Science Club
I led a six-member cross-functional team building an AI-assisted study platform over a full academic quarter, owning technical direction and the process that got a mixed-experience team to ship.
role
Project Lead
timeline
January – May 2026
tools
Python, SQL, Git/GitHub
team
Six members, cross-functional
01 — context
A club that ships
The Davis Data Science Club serves students interested in data science through educational workshops, professional events, and project groups that build real applications each quarter. I led a six-member cross-functional project team building an AI-assisted study platform.
02 — core duties
What I owned
Own system design and technical direction
Run sprint planning and weekly standups
Implement core application logic in Python and SQL
Guide the team in the right direction, assisting across the full stack, algorithms, and application logic
Set and enforce code review standards
03 — problem
A wide experience gap
The team spanned members who had never shipped code, with only one having internship experience. Without structure, a quarter-long project with that spread usually ends as unfinished pieces that never integrate.
04 — process
Scope to the team you have
I scoped the roadmap down to what a mixed-experience team could realistically deliver, split it into sprints, and paired less experienced members with stronger ones on each. Code review was mandatory from week one so integration problems surfaced early rather than in the final week.
05 — solution
A working platform, built in sprints
A study platform with a Python and SQL backend and a functional front end, delivered in reviewed increments against a scope that matched the team.
06 — outcome
Shipped on schedule
The team delivered a working product by the end of the quarter, and every member had merged code in it.
07 — reflection
Everyone brings something worth using
My biggest takeaway is that people come in with their own strengths, ideas, and perspectives, and a good team is one that pulls every one of those into the work. Valuing what each member saw differently made the product better than any version I would have directed on my own.
It also sharpened the project management side: aligning scope, holding the timeline, working through friction inside the team, and making sure every person had a role that mattered. What I am happiest about is that everyone walked away with real experience and something new.
2025 · Research · Python · Data Collection
Psychological and Measurements Lab
The lab’s outreach depended on manually collecting author contact data from published papers. I automated it, turning unstructured academic sources into clean datasets researchers could trust without re-checking.
role
Undergraduate Research Assistant
timeline
September – December 2025
tools
Python, Pandas
team
Lab led by Dr. Mijke Rhemtulla
01 — context
Research about research
The Psychological Models and Measurement Lab, led by Dr. Mijke Rhemtulla at UC Davis, examines how the statistical models and analysis techniques used in psychological research affect the validity of the inferences researchers draw from them. Because the work is about published research practice, it depends on reaching the authors of relevant papers at scale.
02 — core duties
What I owned
Collect and structure author contact data from academic sources
Write Python scripts to automate extraction
Maintain data quality standards across records
03 — problem
Copied by hand, paper by paper
Contact collection was fully manual: researchers opened papers one at a time and copied author details by hand. It was slow, inconsistent between people, and the resulting records were unreliable enough that they often had to be re-verified before use.
04 — process
Find the machine-readable path
I looked at where the information actually lived and found that DOI metadata offered a consistent path to most of what was being copied by hand. I prototyped extraction on a sample, checked results against manually collected records, and tightened the parsing until the two matched.
05 — solution
A pipeline instead of a process
A Python and Pandas workflow that pulls DOI-linked author contact data and outputs clean, analysis-ready datasets with consistent formatting and validation applied.
06 — outcome
Double the outreach
Research outreach productivity doubled, and downstream studies could use the dataset without re-verifying records.
07 — reflection
Look for where the data already lives
Before automating a manual process, it is worth asking whether the information exists somewhere machine-readable already. Finding DOI metadata saved far more time than optimizing the copying ever could have. I also learned to validate on a sample before scaling a pipeline: the edge cases I found early would have quietly corrupted the full dataset.
2025 · Data Engineering · PostgreSQL · Automation
Learnbotix
Learnbotix’s data — survey responses, Big Five personality scores, MBTI results, and related assessments — arrived continuously and was handled in spreadsheets. I replaced that with PostgreSQL pipelines and automated validation, and helped build the agentic engine that turns those results into personalized reports.
role
Data Engineer
timeline
May – November 2025
tools
PostgreSQL, Python
team
Remote, AI knowledge products
01 — context
Turning documents into products
Learnbotix builds AI tools and rich metadata that turn unstructured information into intelligent applications, including curated Knowledge Packs and AI-powered recommender systems. A large part of what feeds those systems is assessment data: survey responses, Big Five personality scores, Myers-Briggs Type Indicator results, and related test scores, arriving continuously in inconsistent formats from many sources.
02 — core duties
What I owned
Design schemas and transformation logic on PostgreSQL
Model survey, Big Five, and MBTI assessment data into a consistent structure
Implement features letting users take the assessment directly on the website
Automate the full path from response capture through to storage
Develop Python validation routines for incoming data
Onboard new data sources into the existing model
Assist in developing the agentic analyzing engine that generates personalized reports
03 — problem
Spreadsheets as infrastructure
Source data was handled in spreadsheets, passed between people and edited in place. Errors were caught late or not at all, and each new assessment source meant rebuilding the ingestion and cleanup from scratch. Anything built on top of that data inherited its inconsistencies.
04 — process
Separate cleanup from transformation
I audited the spreadsheet workflow to separate genuine transformations from manual cleanup covering for inconsistent inputs. That split showed most of the effort was validation rather than analysis, so validation is what I automated first.
05 — solution
Pipelines with validation built in
Features that let users take the assessment on the website, feeding an automated path from response capture through extraction to storage — a pipeline I oversaw end to end. Underneath it, PostgreSQL pipelines with Python-based validation routines and schemas designed so new sources could be onboarded without reworking existing jobs. On top of that foundation, I assisted in developing the agentic analyzing engine that processes a person’s assessment results and generates a unique, personal report from them.
06 — outcome
72% more efficient
Evaluation efficiency improved 72% and manual data prep time fell by more than half.
07 — reflection
Most of the work is validation
Auditing the spreadsheet workflow taught me to separate real transformation from cleanup covering for bad inputs. Once I saw how much of the effort was the latter, the fix became obvious — move validation upstream so the data arrives usable instead of getting repaired downstream. Building that end to end also showed me what it takes to own a pipeline rather than a script.
2024 · Research · EDA · Dashboards
Human Development and Media Lab
Researchers studying parent-child technology use needed to explore findings themselves rather than requesting a new chart each time. I built the analysis and the dashboards that let them do it.
role
Undergraduate Research Assistant
timeline
September – December 2024
tools
Python, R, Power BI, Tableau
team
HDML, directed by Dr. Drew Cingel
01 — context
Media and child development
The Human Development and Media Lab, directed by Dr. Drew Cingel within the UC Davis Media Labs, studies the interplay between media technology and child and adolescent development. I worked on a study of parent-child technology use across ages 1 to 10.
02 — core duties
What I owned
Run exploratory data analysis in Python and R
Build interactive Power BI and Tableau dashboards
Prepare findings for review by non-technical researchers
03 — problem
The patterns lived in the slices
The dataset spanned a wide age range and several mediation strategies, and the interesting patterns only appeared in specific slices. Static charts forced researchers back to the analyst for every new question.
04 — process
Let the questions set the filters
I ran exploratory analysis to find which variables actually separated outcomes, then checked with the researchers which cuts they kept asking for. Those became the dashboard filters rather than guessing at what would be useful.
05 — solution
Dashboards researchers could drive
Interactive Power BI and Tableau dashboards that let researchers filter findings by age band and mediation strategy themselves.
06 — outcome
A finding that shaped the next study
The analysis linked specific parental mediation strategies to a 22% reduction in screen-time risk factors, informing the lab’s follow-up study design.
07 — reflection
Design for the question, not the chart
Watching researchers come back to me for one more cut of the same data made clear that a static chart answers one question and creates three. Letting the questions they kept asking define the filters meant they stopped needing me in the loop. It was the first time I saw analysis work change how a team operates, not just what they know.
It taught me to put myself in the stakeholder's shoes before building anything: anticipate the questions they will ask next and give the charts enough flexibility to answer those too.