Jonathan Duckworth
Problem Solver
Online Ordering Platform
In 2019, I bought a pizza shop. By 2021, I was quietly running a small data operation that happened to sell pizza. This is the story of how that transition happened — and why it doubled our sales.
The Setup: A Pizza Shop Meets a Pandemic
Ski & Benny Pizza had been slinging dough in Anchorage for about 30 years before I took it over in 2019. It had a loyal neighborhood following, and an online presence best described as “rumored to exist.” No real website. No ordering system. No email list. Nothing. In the pre–pandemic world, that was mostly fine — pizza is a call–it–in, walk–it–out kind of business, and Ski & Benny Pizza had the call–it–in part down pat.
Then 2020 happened.
Nearly overnight, the restaurant industry’s center of gravity shifted from “where do I want to go tonight” to “which app has the shortest delivery time.” DoorDash, Uber Eats, Grubhub, and every other aggregator with a venture–backed marketing budget suddenly owned the customer relationship. And they were happy to charge us for the privilege.
Most 3rd party delivery services charged around 30% of the order value. For a pizza shop operating on thin margins, 30% is not a cost of doing business. It’s an existential threat.
The Real Problem Wasn’t the Fee
It’s tempting to frame the delivery–app problem as a pricing problem. Thirty percent is a lot. But the fee, honestly, is not even the worst part.
The worst part is this: when someone orders Ski & Benny Pizza through DoorDash, they are not a Ski & Benny Pizza customer. They are a DoorDash customer who happened to want pizza that night. We do not know their full name, their phone number, their address, or when they last ordered. We cannot send them a coupon. We cannot tell them about the new specialty pie. We cannot even thank them for their loyalty, because we cannot see that they are loyal.
Every order that came through a delivery app was, in effect, a rental of our kitchen. The customer belonged to someone else. That was the problem I actually wanted to solve. The 30% savings was just the kicker.
Building the Platform: TastyIgniter (Plus a Lot of Glue Code)
Instead of paying a Software–as–a–Service online–ordering vendor — which typically charges a monthly fee per location plus a percentage of every order (ironically similar to the structure we were trying to escape) — I went open source. TastyIgniter is a self–hosted restaurant ordering platform built on Laravel. Free to install. Free to run. Free to customize. And it needed a lot of customization for our use case.
Here is the thing about selling pizza: a pizza is not a static product. A pizza is a decision tree with teeth. Small, medium, or large? Thin crust, hand–tossed, or deep dish? Red sauce, white sauce, ranch, or some unholy combination? Half pepperoni and sausage on one side, half mushrooms and olives on the other, with extra cheese but only on the pepperoni half? Off–the–shelf ordering platforms tend to think of menu items as “widgets with a few options.” Pizza shatters that model on contact.
So I wrote a significant amount of custom code on top of TastyIgniter to handle the combinatorial chaos of real–world pizza ordering: half–and–halfs, topping intensity, specialty–pie conversions, upcharge rules, and the entire tangle of “the customer wants it exactly how the customer wants it” logic that makes pizza, well, pizza.
The Box Topper Gambit
Launching a website solves exactly zero business problems if nobody knows it exists. We now had a direct–ordering platform, but our customers were still comfortably parked over on the aggregators. We needed to convert them — and we needed to do it without paying to advertise to the very people who had already bought from us.
Enter the humble box topper.
A box topper is a flyer stuck to the lid of a pizza box. Every single 3rd party delivery we sent out got one. The message was simple: your next order is 30% off if you order directly through our website. Here’s the code.
Thirty percent off happens to be almost exactly what we were paying the aggregators. We effectively took the money we were giving to DoorDash and handed it directly to the customer instead. Same meal, same margin, new customer relationship. It worked. Slowly at first, then faster. Every converted customer was someone we could now talk to directly, forever, at zero marginal cost. The first conversion cost us 30% of one order. The second order, and every order after, cost us nothing.
Listmonk and the Marketing That Didn’t Cost a Dime
Once customers started ordering through our own system, we had something we had never had before: a list. Names, email addresses, order histories, behavioral data, the whole picture.
You might assume we piped all of that into Mailchimp or Klaviyo and started paying per subscriber. I opted instead for Listmonk — another open–source self–hosted tool, this one purpose–built for mass email campaigns. It’s fast, it’s free, and it scales to hundreds of thousands of subscribers without a usage–based bill at the end of the month.
That meant our marketing cost, structurally, was approximately the cost of the small virtual server running Listmonk. Not per campaign. Not per subscriber. Total. The economics of reaching our customer base went from “a line item” to “a rounding error.”
The VOIP Detour (and the Data It Unlocked)
Around this time — initially as a pure cost–cutting move — we replaced our GCI landlines with VOIP phones. (For non–Alaskans: GCI is Alaska’s incumbent telecom, and the monthly bill for a restaurant’s worth of landlines adds up faster than you might think.) The VOIP switch saved us roughly $3,000 a year. That was the reason I did it.
The real payoff came later.
A VOIP phone is not really a phone. It’s a computer pretending to be a phone. Every call produces data: caller ID, call duration, timestamps, recordings if we want them, routing information. That data, combined with our POS system and the online ordering platform, meant we could start building something most small restaurants simply do not have — a unified customer profile.
Not just “this person ordered X on Y date.” We could see:
- Which menu items a given customer looked at, and for how long, before ordering.
- Whether they built a large pizza and then quietly downsized to a medium before checkout — a classic price–sensitivity tell.
- Cart abandonment patterns: who filled a cart, walked away, and never came back.
- Call frequency and call–to–order conversion on the VOIP side.
- In–store purchase history from the POS.
- Average time between order placement and pickup arrival per customer — the quiet little number that determines whether a pizza is hot or lukewarm when it reaches the customer’s hands.
Stitch all of that together and you are no longer a pizza shop that happens to take orders online. You are a small, very focused customer data platform that happens to make pizza.
The AI System We Almost Built
This is the part of the story where I get to admit I considered something and decided not to do it — which, I would argue, is just as important as what I actually built.
With voice transcription APIs improving rapidly, and facial recognition getting cheap enough for a small business to experiment with, I seriously considered building a system that would recognize customers as they walked in or called, look up their profile, and pop a small card on the staff’s screen: “This is Sarah. Usual order: large pepperoni, light sauce, Tuesday nights. Likes to chat about her dog, Biscuit.”
The technology was doable. The value was real — being remembered is a genuine differentiator for a neighborhood business, and no DoorDash algorithm is ever going to ask how your dog is doing. I thought about it even harder when we later owned coffee shops, where “the usual” is practically a sacred phrase.
In the end, I decided the juice was not worth the squeeze at our scale. The operational complexity, the privacy considerations, the ongoing maintenance — all of it added up to a project that, for a single pizza shop, probably would not pay back its investment within a reasonable horizon. It’s a decision I would still like to revisit with a bigger footprint. File it under right idea, wrong scale.
The Result
Here is what the stack of deliberately unsexy decisions — open–source tools, flyers on pizza boxes, VOIP phones, a unified customer database — actually added up to:
- We doubled sales within two years. The combination of cutting 3rd party middlemen out of the majority of orders and retaining repeat customers on our own infrastructure moved the needle in a way no single marketing campaign ever could have.
- Our email and social performance jumped. Owning the data meant we could A/B test properly. Subject lines, send times, discount structures, creative — all of it testable. Our open rates and actual order conversion both improved meaningfully as we learned what worked for our specific customer base, not some industry benchmark.
- Personalization became possible for all. The single biggest impact was not any individual feature; it was that our customer interactions stopped feeling generic. We knew who we were talking to. We knew what they liked. And that personalization did not stop once the customer finished crafting their ideal pizza — it extended across email, the phones, the front counter, the whole relationship.
The Takeaway
If I had to distill five years of pizza–shop ownership into a single sentence of business advice, it would be this: own your customer relationship, or someone else will.
The 30% that delivery apps take is the visible tax. The invisible tax — the customer you no longer know, can no longer reach, and can no longer delight — is the one that actually kills independent restaurants. And it compounds quietly, one forgotten face at a time.
You do not need to be a tech company to fix it. You just need to act like one for a few months. The tools are open source. The tactics are older than the internet (a flyer on a pizza box, for heaven’s sake). And the payoff is measured in real customers you can actually talk to.
Which, it turns out, is the whole point.