From design challenge team member to quasi-CTO: my exciting journey with Crown Town Compost

Reflecting on seven years supporting an incredible team of environmentally-conscious entrepreneurs

Robert Mion
7 min readMay 7, 2020


A collage of milestones

The highlights

Problem worth solving

Charlotte and its suburbs don’t offer any dedicated food waste collection services:

  • Food waste mistakenly gets routed to landfills
  • Citizens are less incentivized to start or maintain community gardens
  • A potentially life-saving loop of ‘food waste to food supply’ remains closed

Five ways I helped them grow their business

  1. Website re-design
  2. Customer-facing application MVP
  3. Daily pick-up route optimization and management
  4. Consolidation and automation of several key tasks during customer acquisition
  5. Lead generation and tracking

Website re-design


Before and after: from text-heavy and company-focused, to bold photography, colors and headlines that draw on emotion

Service offerings

Before and after: from text-heavy and company-focused, to organized sections with clear labels and calls to action

Check address for pick-up service

Before and after: five address form fields that must all be filled on, to four fields of which one must be filled and likely one changed

Local business showcase and lead generation

First to last: new section featuring commercial customers, button at the end for lead generation, short form to capture commercial leads
Simplified navigation with homepage link and two others that are most sought after information

Customer-facing mobile app prototype

The founder wanted to build a mobile app that increased customer loyalty, commercial customer acquisition, and number of referrals.

The critical feature of this app was to present customers with a map featuring markers for each commercial customer and corresponding coupons to redeem each week or month.

Collage of several views within the prototype

Early ideas, sketches and wireframes

Videos for each prototype iteration

Flows from the latest iteration

A series of onboarding screens welcomes and educates anyone referred by friends who may not know anything about Crown Town’s services or the app.
The shining capability of this app: a way to discover new places in Charlotte and incentivize customers to shop there…or non-customers to create an account with Crown Town to start composting and access these perks.
This screen is designed to make it easy to tell followers, friends or family about Crown Town’s services and customer perks.
A key capability is to let customers update or verify their memberships. Since prospective customers will likely be using this app, we made it easy to get a bucket and pick a plan.

Try the prototype now:

The interactive prototype can be used at:

Daily pick-up route optimization and management

Several times throughout the prototyping process, I watched the team’s operational lead manage each day’s route.

Each evening, she reviewed the following day’s spreadsheet:

  • Account for new customers
  • Determine which day they fit best in
  • Add them to the weekly text reminder for that day
  • Email them a welcome message with onboarding instructions
  • Add them to the correct day’s spreadsheet representing the route
  • Re-order the rows in each spreadsheet based on a hunch as to the best route given the locations of each pick-up
  • Send a batch text reminder to the day’s group members
  • Check if any members opt to skip the route that week
  • Update the spreadsheet’s order accordingly

With a fuller understanding of each manual step — and how error-prone this process already was — I set out to make life easier for her, the drivers, and the whole team as a result.

Route optimization API

A single day’s stops could range from 0 to 100. This ruled out nearly all free and paid services, as most limited route optimization to 20 or 30 stops. All, but one: Here. Signing up is free. They offer a REST API that accepts any number of destinations. The only limit is a cap of 10 requests every 24 hours.

Consolidated Google Sheet

I helped the team consolidate all active customers into a single spreadsheet, retaining each bit of information as a particular column. I would use the ‘Service-Day’ column to run the route optimization and display the correct stops each day.

Google Sheet CRUD wrapper API

Google permits CRUD operations via its Google Sheets API. However, using it can be an authentication nightmare. Luckily, services like SheetDB exist which wrap the Google Sheets API and offer a far more convenient API for performing CRUD operations on a Google Sheet.

The mobile app for drivers

I created a web application that helps drivers stay focused on their primary tasks: marking the current stop done and getting to the next stop…without managing a spreadsheet

As seen in the third screen, each action is one tap away:

  • Next or previous stop
  • Get directions
  • Mark complete
  • Flag the address in case the current one is incorrect
  • Call the customer
  • Skip to the middle of the route (in case two drivers split it)
  • Return to most recent stop (if driver has chosen to use the scrubber to preview the route)
  • End the route (get directions to the warehouse)

Consolidation and automation of several key tasks during customer acquisition

When a new recurring plan is created in MoonClerk, our checkout form vendor…

  • Add a row to the spreadsheet
  • Assign several values to their respective columns
  • Update certain columns based on another column’s value

When customer’s respond to our SMS messages the night before…

  • Update the correct row to indicate whether to exclude that customer from tomorrow’s route

Once each Sunday morning…

  • Reset the values in the column indicating whether to skip a customer
Connected apps in zapier as part of nearly 20 ‘zaps’ that act as a pipeline for automatically onboarding new customers.

Lead generation and tracking

Each day…

  • Drivers on route click a button to generate an optimized route for the day
  • Potential customers are checking their address on the website
  • Existing customers are potentially referring their friends and family members

It is of utmost importance that we track each daily occurrence of these events so that we can improve, follow-up and perform targeted marketing.

Tracking generated routes

Using FaunaDB to track the generated route each time a button in the mobile app is pressed

Tracking addresses checked

Our service areas don’t correspond to zip codes, but rather NPA zones. Checking whether we can service an address requires writing an algorithm that can identify whether a given coordinate lies inside one of any number of spacial areas.
First to last: JavaScript algorithm that returns ‘true’ or ‘false’ after checking whether a set of coordinates lies within one of a few hundred polygonal areas, Netlify dashboard where I monitor the status of my published application with its single lambda function: the address checker, and a section of the spreadsheet that is updated each time a user checks their address on the website: it stores the date checked, the address entered, and the result returned from the algorithm

Tracking referrals

The flow: customers are sent a link to a custom landing page, the person they refer receives an email with a personalized link to a custom landing page where they must check their address, and depending on the result of the algorithm mentioned above, they may see the final landing page

How a design challenge blossomed into an opportunity to prepare the company’s operations for any scale

When I met the founders as part of the nighttime design program, I was early in my User Experience Design career.

During that program, my team prototyped the first iteration of a customer portal.

A few years later — upon reconnecting with the founders — I was prepared and excited to help them better market and communicate their value to potential customers via their website.

A year later, I met with the CEO to reconnect again and discuss his short- and long-term strategy for the business. This helped me learn about his priority for building the rewards-based customer portal.

After making several prototypes and improving it through several rounds of user testing, it was proving usable and useful…but the timing didn’t seem right to build and launch it.

Instead, I proposed to the team that they hire me part-time as CTO: the member of their team who would act as lead developer for custom applications, and as someone who could recommend which technologies to buy or build to support our operations as we scale.

They accepted my offer.

I immediately started work on the driver’s app and optimizing routes.

In the months since, each driver has helped me improve upon and expand the mobile app’s capabilities and user interface to better support their needs.

Each day, as people visit the website and hopefully purchase a recurring plan, the proper databases and spreadsheets are updated. The next morning when the driver starts her route, the app shows exactly the right stops…in the right order…with the right information to help the driver know what to bring and where to go.

Thank you for reading!



Robert Mion

Designer, Developer, DataViz, Dad •