Lightweight Systems Thinking
Mapped and delivered a new audit workflow without touching technical debt — reducing review time by 80% and avoiding legacy rebuilds.
October 2021

Overview
When sales audits started falling behind, I didn’t begin by fixing the old admin dashboard. Instead, I asked a simpler question:
“What’s the fastest way to support audit decisions — using what we already have?”
This project shows how I tackled an internal bottleneck by designing a lightweight system outside the product itself — leveraging backend data and Slack to restore momentum without adding new interfaces.
About MyMusicSheet
MyMusicSheet is a global platform where music performers upload and sell their original sheet music.
Before a sheet goes live, each submission goes through an internal audit process — checking copyright details, content quality, and formatting.
The Problem
As MyMusicSheet expanded its performer base and onboarded more diverse instruments, audit volume spiked.
To understand the slowdown, I analyzed backend logs and extracted timestamps of each audit session.
Here’s what the data showed:
Metric | Value |
---|---|
Audit requests per day | 80+ |
Active reviewers | 3 |
Audits per reviewer (avg/day) | 10 |
Total audits processed per day | ~30 |
Average review time | 2.5+ days (increasing) |
We couldn’t skip audits — doing so required long-term negotiation with copyright associations. And rebuilding the internal tool wasn’t realistic under the resource constraints.
So the challenge was clear:
How do we reduce wait time — without changing policy or touching the admin interface?
The Solution
1. Mapping what matters
I started by identifying the key information needed to approve a sheet: copyright metadata, lyric presence, content type. Then I matched each item to existing backend fields — separating:
What could be pulled automatically
What required reviewer attention
What needed escalation
2. Designing around the workflow
Instead of modifying the legacy admin, I built a Slack-based audit workflow where the team already worked. Here’s how it ran:
When a new sheet was submitted, the backend pulled key audit fields
The data was formatted and sent to Slack in a structured message
Reviewers checked, commented, and approved — all in-channel
This reduced context-switching, sped up decisions, and allowed faster collaboration with other teams.
3. Building the Slack internal app.
The goal wasn’t scale — it was to solve the problem immediately.I designed a simple Slack app to support this audit flow:
I reviewed the Slack API and explored the Block Kit components
I used the Block Kit Builder to prototype audit messages in JSON
I tested the messages with the audit team to ensure they were clear and actionable

By designing within the channel the team already used, we avoided new UI development and moved straight to execution.
The Result
By shifting audits into Slack internal app and designing around reviewer needs, we:
Processed more audits with the same team
Cut average review time from days to hours
Prevented submission drop-offs and reduced complaints
Even without changing the policy, we were able to deliver value to users in just a few working days — instead of making them wait nearly a week.
Metric | Before | After |
---|---|---|
Audit requests per day | 80+ | 80+ |
Active reviewers | 3 | 3~8 (flexible) |
Audits per reviewer (avg/day) | ~10 | ~15 |
Total audits processed per day | ~30 | 90~120 (flexible) |
Avg. time to complete one audit | 2.5 days | Under 12 hours |
© 2025