Automating 10 Hours of Weekly Scheduling
I built a scheduling engine for complex post-production workflows.
A TV studio in Los Angeles uses Google Sheets to build their episode schedules. Each sheet follows a standard template, but can involve 20+ episodes cycling through the many production phases - all with overlapping timelines, shared staff, and strict sequencing rules. Building these by hand was a significant time sink at around 10 hours per week, and prone to the kind of errors that cascade when one phase slips.
I was contracted to design and build a web application that would generate these sheets for them. I was provided detailed requirements covering the scheduling rules and rough UI direction, while taking ownership of technical direction and higher level UX.
Production phases follow a fixed order, but resource constraints (e.g. staff availability, concurrent task limits, minimum spacing between milestones) create ripple effects across the entire schedule. The UI walks users through each layer, with each step dynamically shaped by earlier inputs. When a conflict arises, the system either resolves it automatically or flags it for human review. The generated sheets match the exact format the team was used to, so adoption was seamless. Same layout, same visual language, just without the manual effort.
Architecturally, a Node.js backend with TypeScript was the clear choice for this project. While the scheduling logic is complex, it’s not computationally heavy. Being able to share type definitions and scheduling formulas with the UI significantly reduces the surface area for potential issues. The scheduling engine itself is its own layer, decoupled from the Google Sheets implementation. This ensures the scheduling logic can be validated against known-correct input/output pairs without involving the specifics of the Sheets API.
The platform is already reducing what was previously a significant weekly time investment, freeing the team to focus on creative work instead of logistics. What used to slip through as human error now gets caught before it ever reaches a production calendar.