How We Spent $500 on Tech to Ship $2.6M of Soylent
--
In April 2014, John Coogan, the chief technical officer of Soylent and Matt Cauble, the chief operations officer, set up a $500 system that successfully managed the first four months of Soylent shipments.
In total, their setup shipped and tracked approximately $2.6 million worth of Soylent and saved the five-person team $150,000 in logistics — or roughly three months of total operations costs for the (then) tiny company.
The system merged a stack of low-cost or free services with Heritage Paper, a warehouse that was willing to step outside its normal business of freight shipments and accommodate a custom technology infrastructure for consumer deliveries.
In this interview, John and Matt discuss with me (Alando Ballantyne) the hacked-together, original fulfillment system.
Alando: When Soylent started shipping, how were the very first orders fulfilled?
John: So I pulled all of the orders that we needed to fulfill into basically a bunch of big CSVs — which are like Excel sheets — and then I would process them with Python and organize them based on the total quantity.
I’d slice off a CSV, Matt would [email it to Heritage Paper, the warehouse] and then they would print out the labels–
Matt: Heritage would go to FedEx.com and USPS and they would print out all the shipping labels and they would send us an Excel sheet that changed every day.
"But every day it was a different format."
John: Every single day. They would send us an Excel sheet back with like, “OK, we sent those [orders] out. Here are the tracking numbers.” But every day it was a different format.
Alando: You needed tracking numbers back so that you could send out shipping confirmation emails?
Matt: The confirmation and then also the accounting — because you need to be able to see what you shipped out of your inventory, but these Excel sheets were all completely different formats. And there were hundreds of rows sometimes.
John: It wouldn’t have been a problem if it was the same format every day because I would just write a Python script to import all of the data into our database and track everything and we could send out emails based on that.
Alando: Why did the warehouse send back spreadsheets in different formats?
John: They [initially] did it by hand because they were doing us a favor. Normally they were used to dealing with a few dozen clients with massive bulk shipments rather than delivering to individual consumers. Our system was not something that any of their other customers asked for, that we’re aware of. It was something that they did to help us out.
"… Excel… would truncate it, because it would be like, “That is a 24-digit-number. We should store this in scientific notation.”
A UPS tracking number is 15 digits or something like that, but a FedEx tracking number is 24 digits. If you opened it in Excel it would truncate it, because it would be like, “That is a 24-digit-number. We should store this in scientific notation.”
Matt: So you’d get like 1.2E20 (laughing).
John: So you get that hard coded into the CSV and there was no way to get the actual tracking number. We’d be like, “We’re totally screwed. We sent these people the wrong things, this tracking number doesn’t exist.” It was just such a hassle. [So] we asked ourselves, “How can we get the data reliably back into our system?”
Matt: So that was the first three weeks [of shipping Soylent]. And then — we just went up. We were like “Fuck this, we’re going to do this. This is the only way that this is going to work, because these Excel sheets and this whole issue is just awful.”
John: It was just such a nightmare.
Matt: So we were like, “Ok we’re just going to go buy a laptop, buy a hotspot–”
John: Let’s just replace all of their technology infrastructure with something that we control.
Matt: Yeah.
John: We got there. We checked it out. The label printer had been delivered, we just needed to connect it to Google Cloud Print — to the internet — such that we could print remotely.
Matt: We were super-sketched out by their tech infrastructure. They had already told us that “Our email is down today,” or “Internet is down today.”
John: We went to Best Buy. I think we initially bought a Chromebook, but then we figured out that that was wrong because the Chromebook couldn’t have the drivers for the Zebra printer. You’d need a Windows box for that.
Matt: The Zebra printer was an old, out-of-commission printer. It worked really well, but it wasn’t supported anymore so we had to download some driver from 2005.
John: We had to hack a bunch of stuff together. I think I left at some point and went and got a Windows box — a Windows laptop. Once we did that it was pretty easy. It only took a couple of hours, max.
We didn’t have to rely on their internet connection. We didn’t have to rely on their computers. We didn’t have to deal with their Excel, because all of the data would be collected with us.
So we set up Shipstation which lets you print shipping labels and interacts directly with FedEx’s system–
Matt: Shipstation, they basically aggregate the APIs of USPS, UPS, FedEx and I think maybe DHL. What you can do is upload all of your orders in a standard CSV format and then you select the shipping that you’re going to use. We had a custom FedEx account that we negotiated rates with FedEx on.
Alando: Prior to working with us, Heritage's business was centered on freight logistics rather than individual consumer shipments. What did the final process that we implemented look like?
Matt: The process ended up being: We identify how many [units] we could ship based off of how much inventory we had, and then print all of that in the evenings so that someone would roll into the office [at Heritage] and see a spool of 300 labels on the ground and then take that out to the floor and apply those to packages.
The nice thing about Heritage, they were really flexible. They would let us do whatever we want.
John: No [other] company would let you do that.
Matt: Oh, no way. No fulfillment center. Basically what Heritage is really good at is that they’re really good at filling boxes and loading them onto a truck. And they’re really flexible about it.
Alando: Was there ever any malfunction with the system?
Matt: Oh yeah, every month or so the laptop would go down and then somebody would have to turn it back on.
John: I’d call Brandon and basically just told him to turn it off and turn it back on, which is the classic IT solution to everything, but it really does work. I’d set up the proper boot scripts to get to the place where you need to [be]. You press the power button [and] it would automatically connect to the internet.
"…just weird stuff crops up on a computer if you leave it on for months at a time. Everyone’s had that with their home computer."
It would automatically connect to Chrome [and] connect to Google Cloud Print. It did everything that it needed to do automatically — that stuff wasn’t broken. It would just... just weird stuff crops up on a computer if you leave it on for months at a time. Everyone’s had that with their home computer.
Matt: Another huge problem [was] that Shipstation, as soon as you click print, fires off the email confirmation to the customer and lets them know that their shipment is on the way with the tracking number.
And so we’d export data and we’d think we had it right and then upload it and come to find out that we’d already shipped to a quarter of these people, [or that] a quarter of these people shouldn’t be getting [shipments] this soon.
John: The hacks that Matt came up with were ridiculous. I remember I just stopped dealing with it at some point. At one point I remember him being like “Oh yeah we uploaded orders 1–1,000 and then we shipped those but then we accidentally uploaded 1–1,000 again, and we can’t delete them through some batch delete, so I’m going to upload a CSV with orders 1–1,000 and just quantity, “0”.
Matt: Yeah, that would cancel it.
John: There were all these crazy filters and shit. It was the best — we just started crushing their system. It was so bad.
Matt: Oh yeah, it would slow down. The worst part was that Shipstation was not ready for us to push thousands of orders through it.
John: I’m surprised that it even kept working.
Alando: But they’re a bigger company, right?
John: It’s a bigger company in the sense that they have a lot of customers. But it’s all designed for a “Mom and Pop” and “You fulfill yourself.” Like, “I work on Etsy. I make a t-shirt with my shirt press. I get an order, I look at it, I fulfill it and I print the label right there because I bought a label printer.” It’s for your [smaller] LLCs–
Matt: That being said, if they would have let us print labels and then cancel them and the customer never knew that was going on, I would be fine. But we basically had a gun to our head every time we had to click print. (laughing)
“We basically had a gun to our head every time we had to click print.”
Because it was like if you click print and if you mess this up — which we did all the time in the beginning — customer service would get swamped. Customer service equals Julio [Miles, Soylent's current Creative Director], just getting completely crushed.
I would hear Julio just hit the wall and yell “Damnit!” And it would be like, “Dude, sorry. Didn’t mean to re-send it to all those [people] who already received it.”
John: So bad. So bad.
Matt: It was terrifying. So someone had created a ticket in 2010 on Shipstation’s forums that said this [cancellation] feature should exist. And I pushed for this and I emailed them. I’ve seen over the past year more and more people chime in and say that this needs to exist and they actually just announced that they’ve implemented the feature.
John: Of course we would have loved to integrate with Shipstation’s API to solve this ourselves, but it just wasn’t in a place where that was possible at the time.
"But both of these companies… we wouldn’t have been able to get where we are if they weren’t there."
But both of these companies… we wouldn’t have been able to get where we are if they weren’t there. We wanted to use Shipwire in the beginning, but it was way too expensive.
Matt: It was crazy expensive for us then, but with scale, the costs just drop.
John: Exactly, so it’s really just all about where you are and what’s right for you at that time. As ridiculous and janky as that initial experience was, it wasn’t like it was a failure on our end or on the other end. I wouldn’t really see this as a shortcoming.
Heritage Paper couldn’t offer the level of service that Shipwire does for cheaper, at that cost. It’s just not economically possible. Shipwire has a whole data center and a pretty solid team of developers.
Matt: Shipwire’s completely dedicated to just software development. And then they have set up partnerships with other huge, enormous fulfillment centers.
It was crazy expensive by our standards then, but now it’s plenty affordable and we’re fine. Shipwire might actually work for you from the beginning — it just depends on your product, and it depends on your current cost structure.
There are start-ups that I think I’ve seen too — I don’t remember what they’re called — but there [are] other startups that are working on fulfillment systems just for start-ups that place an emphasis on being software-friendly. Being software-friendly is nice.
"It’s not just a web app any more. It’s a web app and a really intelligent and scalable API that can handle all the other stuff."
John: It’s interesting because you say “software-friendly” and a couple of years ago, Shipstation would be that “software-friendly.” But now we mean that it needs to talk directly to a computer. It needs to have a robust API. It’s not just a web app any more. It’s a web app and a really intelligent and scalable API that can handle all the other stuff.
Matt: And be adaptable. Being adaptable is crucial because not everyone is the same. The more SKUs you have, the more complicated this gets. We’re lucky that we only had one or two.
After four months of shipments, in the fall of 2014, the team switched the bulk of fulfillment over to Shipwire, a global third party logistics provider. We continue to work with our excellent partner, Heritage Paper, who now helps warehouse freight shipments and package Soylent starter kits.
To learn more about Soylent please visit Soylent.com.