Workflow Automation

Culvert

Automation lead · Dec 2025 – Present

2 hours reclaimed daily, per person, across 60+ writers.

My role

Built the sync engine end to end, then led the rollout across a 25+ person matrix team split between the US and Manila.

JavaScript · Google Apps Script · Buganizer API · Google Sheets

Problem
Bug triage for 60+ writers ran by hand between two systems that did not talk to each other.
Insight
Nobody in the sync step was making a judgment call. They were retyping the same fields between two systems, twice a day, in both directions.
Result
A bi-directional sync engine that removed the manual step entirely, built and then deployed across a 25+ person team spanning the US and Manila.

The full story

Work arrived in Buganizer. Allocation happened in Google Sheets. Between them sat a person, every day, copying state across so allocation could be done, then copying the decisions back so the tracker stayed true. It held up only while that person was available, and it was taking time from people hired to write.

Culvert is a bi-directional sync engine written in JavaScript and Google Apps Script against the Buganizer API. New issues appear in the sheet with their metadata; allocation decisions made in the sheet flow back as Buganizer updates. The transcription step no longer exists. Making it faster would still have left someone doing it every day.

The engineering was the smaller half. Rolling this out meant directing a 25+ member cross-cultural matrix team across the US and Manila, which is a different problem: two time zones with a handful of overlapping hours, different escalation habits, and a workflow people had personal systems around. The deployment had to earn trust from writers who were being asked to stop doing something they had always done by hand.

The outcome is 2 hours reclaimed daily per person across 60+ global writers, and 100% pipeline operational continuity, including through periods when the people who used to run the sync by hand were unavailable. The second number matters more than the first: the process no longer has a single point of failure who can take leave.

Key decisions

  • Make the sync bi-directional rather than one-way. A one-way feed would have been half the work and would have left the reconciliation problem exactly where it was, just pointing the other direction.
  • Build it before it was asked for. The job needed doing and no ticket existed for it, which is a reason to build it carefully, not a reason to wait.
  • Roll it out through the matrix team rather than switching it on. A tool that removes a habit needs the people who hold that habit to trust it first, and across two continents that is a scheduling and communication problem before it is a technical one.

What it taught me

Writing the sync took about three weeks. Getting 25 people across two continents to stop doing something they had always done by hand took a good deal longer, and I had not planned for that at all. Several writers in Manila had built their own tracking around the manual step and were not inclined to hand their queue to a script on my say-so. What actually worked was running Culvert alongside the manual process for two weeks so people could check it against their own sheets before trusting it.

← Back to Portfolio