Hari Prasath Ulaganathan
Data AnalystSilverthorne, ColoradoOpen to relocation
Work authorization: EAD (I-485)

Hari Prasath Ulaganathan

I build the layer between raw data and the decision: modeling source data into tested, documented pipelines, then the dashboards and reports teams actually act on. Four-plus years across analytics, BI and reporting, in SQL, Python, dbt/Snowflake and Looker.

Skip intro ↓
Recent projects A few things I've built lately.
01

Housekeeping scheduling, automated

Grand Colorado on Peak 8 · Python, OR-Tools, Power Automate
02

Budget tracking system

Grand Colorado on Peak 8 · Streamlit, Supabase
03

Analytics warehouse

dbt · 15 models · 51 tests
04

What they're worth

Hours and dollars saved each year
Keep scrolling to watch them run ↓
01 · Scheduling engine · The problem245 rooms across three buildings, assigned by hand every morning.Real floor plans · illustrative day · how it works ↓
01 · Scheduling engine · The algorithmNow it builds itself at 5 AM: fair workloads, less walking, no rule broken.BGV-Scheduling · details ↓
02 · Budget trackingEvery expense recorded once and compared with the budget as it happens, with a warning before it runs over.gc8-budget-tracker · illustrative months · details ↓
03 · Analytics warehouseRaw data modeled into tested layers, so the dashboard number can be trusted.dbt_TS · details ↓
04 · The payoffWhat the tools give back every year.See the case studies ↓
What I bring to a team

Analysts who only build charts create a queue. I try to remove one.

Every point below is something I have already shipped in production; the evidence sits in the case studies further down.

End to end

I own the whole path, not just the last chart

I model raw source data into layered, version-controlled dbt marts on Snowflake, then build reporting on top of that curated layer, so the number on the dashboard has a traceable lineage instead of a one-off script behind it.

Self-service

I build self-service so the queue shrinks

At CMA-CGM I defined Looker Explores and metric definitions so PMO and infrastructure teams could pull their own ticketing and resource numbers. Requests that used to need an analyst stopped needing one.

Data quality

I check the number before someone else has to

I trace upstream discrepancies back to source tables and embed validation and tests into transformations, so dashboard metrics reconcile with the source of truth and people keep trusting the report.

Translation

I turn a business question into a spec

An MBA and two years in a PMO taught me to sit with stakeholders, gather requirements and convert them into KPI and metric definitions and report specifications before any SQL gets written.

Measured impact

What the tools I built are worth in a year

Time and cost taken out of one department's operation by two tools now running in production.

990 hrs
of manual work removed a year: about 3 hours a day across scheduling and budget entry
$36,250
cost avoided a year: $50/day in scheduling plus $1,500/month in curtailed expenses
30,401
shift records recovered from 85 spreadsheet tabs
181
employees covered by the resulting schedule analysis

Scheduling runs every day, so it is annualized over 365 days; budget entry over a 260-day working year. Daily and monthly figures are conservative baselines; the yearly numbers follow from them.

raw source staging intermediate mart dashboard / report

The dbt layering I use on Snowflake: each stage version-controlled, documented and testable, so a metric can be traced back to the row it came from.

Case studies

Five problems, and what changed

Most recent first. Each follows the same shape: the problem someone actually had, what I built, and what was different afterwards.

Grand Colorado on Peak 8  ·  2025–now

Housekeeping scheduling, automated end to end

PythonOR-ToolsStreamlitSupabasePower AutomateSharePointTeams
github.com/hari-94/BGV-Scheduling →
2+ hrssaved daily
$50saved a day
$18,000+a year
0manual steps
41colleagues using it
$0a month to run
Animated walkthrough in five steps: the schedule built by hand; a Python engine packing rooms into balanced workloads; the team app on phones; the automated 5 AM flow from email through Power Automate to HotSOS, SharePoint and Teams; and the results: 2+ hours and $50 saved a day, $0 a month to run.
The whole story in 48 seconds · loops
Problem
Every morning, two people divided the day's rooms (100+ on a busy day, across three buildings that don't all connect) among 15–30 housekeepers by hand, then typed each assignment into HotSOS, the hotel's housekeeping system, one room at a time. It was slow, one wrong entry meant a missed or double-booked room, and workloads were hard to keep fair.
Engine
A Python engine packs each day's rooms into balanced workloads under the department's hard rules: a time cap per person, one apartment to one housekeeper, never two buildings that don't connect. Rooms are ordered by walking route from the real floor plans, and a Google OR-Tools (CP-SAT) solver checks each building for the fewest people and the tightest fit.
App
A Streamlit and Supabase app with roles for managers, inspectors, housekeepers and housepersons. Each person sees their own rooms on their phone, in English or Spanish, with a done-by time for each room paced to finish by 3:30 PM and early arrivals first. Managers reassign rooms by drag and drop and follow the floor live.
Automated
Power Automate saves the front desk's Arrival Report from email. At 5 AM an agent on the office PC pulls the day's room report and the staff schedule from SharePoint, builds the schedule, writes the day's sheet back to SharePoint and sends every assignment to HotSOS. At 7:30 the notes go to the team's Teams chats. A second PC takes over if the office PC is down.
Forecast
Every two hours the agent reads bookings for today and the next 21 days and turns them into how many housekeepers and inspectors each day needs, split by Full Clean and Daily Service, so a week can be staffed before it arrives.
Reports
A performance report counts rooms cleaned and inspected per person. A timing view shows when each room was started, finished and inspected, and flags late starts and rooms left open.
Outcome
The schedule is ready before anyone arrives, with no manual steps from email to HotSOS. At least 2 staff hours a day come back (about $50 a day), and it runs on free tiers plus tools the department already had. In the last 30 days, 41 colleagues used it: 28 housekeepers, 10 inspectors and 3 managers.
What it solved
  • Ready at 5 AM. The schedule builds itself before anyone arrives, and nobody types it into HotSOS.
  • Fair workloads. The same rules for every person, every day.
  • Less walking. Over the stored days, Daily Service lists kept inside one building went from 112 to 153, and inspector rounds crossing buildings fell from 245 to 192.
  • Finishes on time. 95% of room lists are paced to finish by 3:30 PM.
  • Staffed ahead. A three-week staffing forecast from live bookings.
  • Measured at last. Start, finish and inspection times for every room, per person.
  • Easy to use. Rooms on each person's phone, in English or Spanish.
rules engine team app & logins 5 AM automation forecast & reports

How it grew, one manual task at a time: 300+ updates and about 30,000 lines of code in the current version.

Every morning Three sources in, one 5 AM build, and the schedule lands everywhere it is needed. Nobody copies anything by hand.
The engine The morning room list, the staff sheet and the floor plans go in. A plan in walking order comes out on every housekeeper's phone.
Grand Colorado on Peak 8  ·  2025–now

Budget management system

StreamlitSupabasePostgreSQLReportLab
github.com/hari-94/gc8-budget-tracker →
1 hrsaved daily
$1,500expenses cut / mo
$18,000a year
Problem
Departmental budget tracking lived in manual spreadsheets, an hour of data entry a day, where the same expense could be entered twice and nobody noticed until reconciliation.
Built
A full-stack budget application on a relational database with vendor management and database-enforced duplicate-expense prevention, a live dashboard showing month-over-month variance and over-budget alerts, and automated PDF reporting for stakeholders. I owned deployment through GitHub and Streamlit Cloud.
Outcome
Removed an hour of manual Excel entry a day and gave the department visibility that curtailed expenses by at least $1,500 a month. The data now validates itself and the monthly report generates itself.
What it solved
  • One source of truth. The whole budget lives in one app instead of scattered spreadsheets.
  • No double counting. The same expense can't be entered twice.
  • Clear accountability. It shows who changed what, and when.
  • No surprises. Spending against budget is visible at a glance, with a warning before it runs over.
How it works Every expense, old or new, is checked and stored once. That one copy feeds the dashboard, the alerts and the monthly report.
Grand Colorado on Peak 8  ·  2025–now

Labor schedule data recovery

PythonopenpyxlETLclustering
30,401records recovered
85sheets consolidated
181employees covered
Problem
Years of housekeeping scheduling history sat trapped in a single multi-year Excel workbook of roughly 85 sheets: unqueryable, and therefore unused.
Built
A Python/openpyxl ETL pipeline that cleaned and transformed the workbook into 30,401 structured shift records across 181 employees, then ran quantitative trend, clustering, travel and workload-balance comparisons across them.
Outcome
Scheduling policy could be argued from measured history rather than recollection.
What it solved
  • Years of data made usable. Scattered scheduling sheets turned into one clean dataset.
  • Patterns made visible. Who works when, and how evenly the work is shared.
  • Better planning. Staffing decisions are now based on facts, not memory.
How it works Years of hand-kept sheets are read, cleaned and loaded into one table, which can answer questions the workbook never could.
ThoughtSpot  ·  2022–2023

Analytics pipeline modernization

dbtSnowflakePythonSQL
github.com/hari-94/dbt_TS →
3model layers
51+data tests
Problem
Reporting ran on ad-hoc SQL scripts with no version control and no tests, and recurring performance reports were assembled by hand every cycle.
Built
Pulled four operational sources into Snowflake with Python on Databricks, then modeled them into layered dbt models (staging, intermediate and mart) with validation and data-quality checks embedded in the transformations. Automated the recurring KPI and performance reports in Python against the curated marts.
Outcome
Transformations became version-controlled, documented and testable, and manual report assembly came out of the analytics workflow entirely.
CMA-CGM  ·  2020–2021

Self-service BI enablement

LookerLookMLSnowflakeSQL
Problem
PMO and IT infrastructure teams needed ticketing and resource-allocation numbers on demand, and every request routed through an analyst first.
Built
LookML-defined Explores and metric definitions over curated Snowflake tables, plus a trace of upstream data-quality discrepancies in the source tables feeding them.
Outcome
Teams self-served their own KPI reporting without analyst involvement, and dashboard metrics stayed consistent with source-of-truth records.
Experience

Where I have done this

Nov 2025 – present

Internal Tools Developer

Grand Colorado on Peak 8  ·  Housekeeping Operations
  • Built a Python scheduling engine (bin-packing plus a Google OR-Tools solver) and automated it with Power Automate: it builds at 5 AM and lands in HotSOS and Teams with no manual steps. Used by 41 colleagues; saves 2+ hours and about $50 a day.
  • Added a three-week staffing forecast from live bookings, plus per-person performance and room-timing reports.
  • Built a budget application (Python, Streamlit, Supabase) with a live dashboard and over-budget alerts that helped cut spending by at least $1,500 a month.
  • Turned an 85-sheet Excel scheduling workbook into 30,401 clean shift records with a Python ETL, then analyzed workload balance across 181 employees.
  • Deployed and maintain all three tools in production (GitHub, Streamlit Cloud).
Aug 2022 – Jun 2023

Solutions Analyst

ThoughtSpot
  • Turned client requirements into KPI definitions, report specs and on-schedule dashboards that client teams used for self-service analysis.
  • Built a layered ETL pipeline: Python ingestion on Databricks, then dbt staging, intermediate and mart models on Snowflake, guarded by 51 data tests.
  • Wrote SQL against Snowflake for ad-hoc analysis and dashboard metrics.
  • Wrote the data analysis behind proposals that won new client engagements, and coached teammates on SQL and data-quality investigation.
Jun 2020 – Nov 2021

PMO Senior Executive

CMA-CGM
  • Built the IT infrastructure team's KPI dashboards and published weekly and monthly status reports on resource allocation and delivery.
  • Spotted delivery risks in project and resource trends and escalated them early, so blockers were resolved faster.
  • Built Looker Explores on Snowflake so PMO and infrastructure teams could pull their own ticketing and resource KPIs.
Jul 2019 – Jun 2020

Management Trainee, Risk Management

CMA-CGM
  • Handled ad-hoc analysis, project reporting and asset tracking for leadership in the risk management team.
Toolkit

What I work in

Languages & databases

SQL · Python · R · PL/SQL · PostgreSQL · MySQL · Microsoft SQL Server

BI & reporting

Power BI · Tableau · Looker (LookML) · ThoughtSpot · Qlik Sense · QlikView · Excel (Power Query, pivot tables) · KPI design

Analytics engineering

dbt · Snowflake · Databricks · Airflow · Azure Data Factory · Azure Data Lake · AWS · ETL · dimensional modeling · data quality testing

Python & statistics

Pandas · NumPy · SciPy · scikit-learn · Statsmodels · Matplotlib · Seaborn · regression · time series forecasting · clustering · NLP

Automation & AI

Google OR-Tools · Streamlit · Supabase · Power Automate · REST APIs · LLM agents · MCP · Git/GitHub · ReportLab · openpyxl · SharePoint

Working with people

Requirements gathering · stakeholder communication · documentation · project management · proposal writing

Credentials
Education
MS, Management & Computer Information SystemsColorado State University
2023 – 2024
PG, Data Science & EngineeringGreat Learning
2021 – 2022
MBA, Systems & MarketingSRM Institute of Science & Technology, Chennai
2017 – 2019
BE, Computer ScienceRajiv Gandhi College of Engineering & Technology
2012 – 2016
Certifications
Business Analyst CertificationThoughtSpot
Mar 2025
Generative AI FundamentalsDatabricks Academy
Feb 2025
Lakehouse FundamentalsDatabricks Academy
Dec 2024

Looking for an analyst who closes the loop

If your team needs someone who can take a business question, find the data behind it, check it holds up, and put it in front of people in a form they can act on, I would like to talk.

Hari Prasath Ulaganathan · Silverthorne, Colorado EAD (I-485) · Open to relocation Visits are counted with GoatCounter: approximate location and device, no cookies or personal details.