Churn Buster
Product management, product design, full stack development.
I was the second developer hire at the time with Churn Buster, so I worked on the entire stack with a focus on the front end. Below are some selected projects.
Roles: Full-stack development, product design, wire-framing, scoping and prioritization, support and some dev ops.
Live Offer Editor
Design and implement a “live” offer editor where users could see a live preview next to their work.
The Offer is a complex object with multiple variants controlled by filtering based on customer data. We wanted an interactive single space where a user could quickly navigate and see and maintain all of the facets of their offer.
The product was Cancel Flows, which presented a set of curated offers to an end-customer when they moved to cancel their e-commerce subscription.
Primary Nav Redesign to Sidebar
We need space. Redesign from top bar navigation to responsive sidebar.
As our app grew in functionality, we had a deeper information architecture. I redesigned the primary top bar navigation to a sidebar with tree-nesting and upsell capability.
The legacy codebase needed special care to perform this redesign due to how the layout was done and inflexible to support the drawer version on mobile.


Dynamic Style Editor
Design and implement a “live” offer editor where users could see a live preview next to their work.
Expose to users a way to adjust standard styling options.
Our accounts (e-commerce businesses) used our application to land their end-customers on a screen to present offers when attempting to cancel.
In the past, our CX team would work with developers to manually style the landing page. This feature made it so the account user could style it themselves safely within the confines of the base design.


Sessions Index Performance and UX Improvements
This page is timing out due to large data volumes. What can we do?
We had a unique account where one customer resulted in many cancel sessions attributed to them. It was so many it was timing out the page.
As a solution, I refactored the design to reflect the most recent cancel session on the index row, but exapand to show the last several sessions. Older than that, the user can get from exports, but the use case for that was rare or non-existent. The vast majority of need for this page was to deal with a recent customer service experience.
Several pieces of work and design came into play:
Optimize the base query which was very costly in Postgres’s explain.
Do not load all sessions on page load, but load the customer’s historic activity after the row is expanded with Stimulus and Turbo.
