PRODUCT MANAGEMENTFULL PROCESS2025

Coffee Chat Operations Dashboard

Owned end-to-end: from stakeholder interviews and PRD to a shipped Streamlit dashboard that replaced a broken Excel tracker for MSTI's 106-request coffee chat program.

TIMELINE

Jan 2025 – May 2025

TEAM

UW MSTI

ROLE

PM Intern

TOOLS

Python, Streamlit, Google Sheets API, pandas, SQL, Google Analytics

LONG STORY SHORT

01

Ran 7 stakeholder interviews, synthesized findings into a PRD, and shipped an MVP in 6 weeks.

02

Reduced coordinator tracking time by 40% through automated SLA visibility, no backend, no migration.

03

Achieved 91% internal user satisfaction across all 11 MSTI staff in a post-launch survey.

THE CHALLENGE

How might we give MSTI coordinators real-time visibility into 100+ coffee chat requests without adding manual overhead?

LIVE PRODUCT

See it in action

The dashboard shipped in Spring 2025 and is actively used by the MSTI program team. It reads from a live Google Sheet and updates in real time, with no backend required. The coordinator view, admin view, and export function are all accessible from the sidebar.

VIEW LIVE DASHBOARD →

PROBLEM

The Excel tracker wasn't working

The MSTI coffee chat program ran on a shared Google Sheet maintained by 5 coordinators. Each row was a student request with name, industry of interest, preferred timeline, and a manually typed status like "assigned" or "email sent." When the program was small, this worked. At 106+ requests per semester, it collapsed.

The core problems: coordinators had no way to see who owned what. Status updates were inconsistent. One person wrote "intro sent," another wrote "emailed," another left it blank. There was no SLA visibility, so requests could sit in "assigned" limbo for two weeks with no one noticing. An estimated 8–12 requests per semester were simply dropped. Students who submitted never heard back.

The biggest pain point surfaced in a coordinator interview: "I spend 20 minutes every Monday just figuring out what I'm supposed to be doing." That was the problem worth solving.

Student coffee chat intake form

Student intake form. Each submission became a row in the shared tracker

Original Google Sheet tracker

Original Google Sheet tracker with 5 coordinators, no ownership column, and no SLA visibility

DISCOVERY

Interviews first, build second

Before touching any tooling, I ran 7 structured stakeholder interviews over two weeks: 5 coordinators and 2 program directors. Each session followed the same script: "Walk me through how you handle a request from the moment it comes in to the moment feedback is collected." I was looking for where time was lost and where ownership broke down.

Findings clustered into three themes: ownership ambiguity (no one knew who was responsible for what), status vocabulary drift (14 unique variations of "intro email sent" across the sheet), and SLA blindness (no deadlines, no escalation path). I synthesized these into a 2-page PRD that scoped the MVP: a read-layer dashboard on top of the existing Google Sheet, with standardized status stages, coordinator-level ownership views, and automated SLA flags.

01

Discovery

7 stakeholder interviews, pain point mapping, jobs-to-be-done analysis

02

PRD

Requirements doc scoping MVP scope, success metrics, and out-of-scope decisions

03

Build

Python + Streamlit + Google Sheets API, shipped iteratively with weekly coordinator feedback

04

Measure

Post-launch survey, tracking time logs, data quality audits at 1, 3, and 6 weeks

SOLUTION

Building the dashboard

I rebuilt the system around a single core model: every request moves through four explicit stages, each with a hard SLA deadline. The dashboard flags anything overdue in red and approaching in amber, automatically.

Submitted

Day 0

Assigned

≤ 3 days

Intro Sent

2 days overdue

Feedback

≤ 14 days

I built it in Streamlit backed by a Google Sheets API data source, no backend rip-and-replace required. Coordinators still edited the sheet; the dashboard read from it and layered intelligence on top using pandas for data normalization across the 14 inconsistent status string variants. Key features: coordinator-level ownership view so each person saw only their queue, a cross-coordinator admin view for the program director, bulk export for end-of-semester reporting, and a summary banner showing live counts of on-track vs. overdue requests.

TECH STACK

Python + pandasData processing, SLA logic, status normalization across inconsistent string variants
StreamlitDashboard UI: no frontend build step, rapid iteration with weekly coordinator feedback cycles
Google Sheets APILive data source: kept coordinators in their existing workflow, zero migration friction
SQLAd hoc querying for weekly check-in reports and end-of-semester leadership summaries

The biggest build decision: keep the Google Sheet as source of truth rather than migrating to a database. This was a deliberate scope call. Coordinators already lived in the sheet. Forcing a tool switch would have tanked adoption before a single request was tracked. The PRD explicitly scoped this out. The dashboard was a read layer, not a replacement.

Coffee chat operations dashboard

Dashboard overview: status pipeline, SLA indicators, and coordinator assignment view

SLA Tracking

3-tier deadline system per request: assignment, intro email, and feedback. Overdue items surface automatically in red.

Ownership View

Each coordinator sees only their active queue. No more 'I thought you were handling that.'

Admin Overview

Program director gets a cross-coordinator view with total requests, completion rate, and average time-to-intro.

Bulk Export

One-click export of the full semester's data for reporting to MSTI leadership, formatted rather than raw.

IMPACT

Results and learnings

We launched in Week 3 of Spring 2025. In the first month, coordinator self-reported tracking time dropped by 40%, from an average of 18 minutes per weekly check-in to around 11. Post-launch survey of all 11 MSTI staff showed 91% satisfaction. Zero requests were dropped after launch, compared to an estimated 8–12 in the prior semester.

The hardest lesson: the dashboard was not the hard part. Getting coordinators to update the underlying sheet consistently was. We solved it by adding a 2-minute data hygiene check-in at the top of every weekly coordinator sync. The dashboard was open on screen, overdue items were visible to everyone, and social accountability did the rest. Data quality went from ~60% to ~94% complete within three weeks of that ritual.

40%

Reduction in coordinator tracking time per week

91%

Satisfaction rate across 11 MSTI staff post-launch

0

Requests dropped after launch (vs. 8–12 prior semester)

Program analytics showing requests over time and weekly activity

Week-over-week request completion rate before and after dashboard launch