How and Why We Fulfill In-House

10 hours ago 2

TRMNL doesn't follow any best practices.

on the "ecom" side we don't have exit intent discounts, a newsletter popup, or lifecycle emails. i disable our abandoned cart sequence whenever someone complains. there are no analytics and no ad pixels. we use just a few Shopify apps, and i own or founded 2 of them.

on the "web app" side we don't have AI chat bots, only humans (engineers). no Discord moderator bots, only humans. no upsell emails, just a single welcome message. we charge $20 for Developer access, but we never calculated if this actually covers our growing server costs. hence the backup plan.

so when it came time to set up fulfillment, why behave any differently?

here's a story about how we accidentally created a competitive advantage by being stubborn, ignorant, optimistic, and lucky.

humble beginnings

when you bootstrap a SaaS app, you only need a computer. physical products tend to require a room. in October 2024, my windowless basement music closet became Factorio 0.1.

TRMNL assembly room, October 2024

on the 8 year old iMac we flashed PCBs, responded to order support emails, and generated shipping labels. my old bar cart was the perfect mobile packing station. walls were lined with cheap plastic shelving from Bargain Hunt, which buckled whenever we received inventory.

we assembled + shipped thousands of devices from this room between October 2024 - March 2025. on some weekends friends would stay overnight for "packing parties," and we built up to 200 devices in a day with 5 of us working side-by-side.

then something happened.

big break #1

i've had my fair share of "shoot for the moon" entrepreneurship. TRMNL was not supposed to be one of them. selling a few devices per day was my happy place. after all, i still had a day job, and so did everyone else on our (then) 4-person team.

after shipping ~1,500 crowdfunded devices, people started talking about us, including ATP.FM (ep 618), who sold us out within a few hours on December 19th.

our 50-70 daily device capacity was no longer sufficient. dozens of emails and DMs came my way: "Ryan, why don't you set up a 3PL in {{ country }}?"

it was tempting but i said No. even if we did set up a distribution network, it wouldn't solve our problem today. so we updated our website to "sold out," ordered more inventory, and waited patiently. a few dozen people canceled their orders.

back in stock (sorta)

in mid-January, we were back in stock. thousands of components arrived, we hired + trained a couple new people to build devices, and we had better processes to bulk-print shipping labels.

for about a week, everything was great. our team could make up to 100 devices per day. we were catching up on the pre-Christmas spike from the ATP shoutout.

and then it happened again.

big break #2

on January 31, consumer tech reviewer Snazzy Labs uploaded an overwhelmingly positive video about TRMNL.

it was Friday morning and i was digging ditches with my dad, installing railroad ties for a little trail project. i took this photo for an unrelated live journal, not realizing what it would symbolize.

the moment things changed for TRMNL

i opened the Shopify app on my phone and couldn't believe it. the team chat was going nuts. our inbox had 100s of emails.

after a few more minutes of shoveling i told my dad: i think i have to get on a computer.

another fork in the road

as before i got inbound from 3PLs, well-meaning friends, investor types, and concerned customers. "when are you signing a deal with a warehouse who can do this for you?"

so i gave the concept a better look. i got quotes. but the quotes were higher than i anticipated because our situation was different than they anticipated: we have to assemble everything.

in the industry this is known as kitting. a lot of 3PLs don't offer this service, and the ones who do gave me prices like so:

  • $5 to assemble
  • $5 to stow
  • $5 to ship (+ packaging, postage, etc)

i asked myself: can we do all this for < $15 per device? the answer (spoiler) is yes.

finding a warehouse

i live on some acreage in a small town. nearby industrial space is available, but i sleep about 100 feet away from a red barn. what if we renovated it? could this make it easier to serve customers 7 days per week?

starting point - my LARP woodworking shop

my home's previous owners bred goats and dogs. there were several stalls on the interior and exterior of the barn. here you can see a whopping 6x Dutch doors leading to outside pins.

the plan was simple:

  1. finish the exterior space
  2. knock out the wall of doors

we broke ground February 3. first we poured concrete to level the outside / inside areas, each 10x40 feet. by Valentine's Day the exterior walls were framed, and doors + windows were en route.

glass costs more than walls, concrete, and labor combined

next was the tricky part: knocking out the wall to create a 22x40 foot work space. without going into too many details, let's just say that hanging two of these 24 inch wide beams was not fun.

22 foot long beams distribute the load from above

four of us and a sledgehammer got it done, then the crew ripped out the previous studs and we were on our way. insulation, electric, drywall. we even added a kitchen area, bathroom, and fridge with ice. primo stuff.

cost: $40k, which i covered personally. TRMNL pays $1k /month rent so i'll break even in a few years. good math no?

setting up shop

on April 1 we moved into the new warehouse. literally just grabbed stuff from my basement and walked it across the street. we also switched tooling from Easyship to ShipHero, which has afforded a tremendous productivity boost on the label printing side.

TRMNL-warehouse-v2.jpeg 336 KB

within a few weeks we grew to 10+ people on the assembly team, negotiated rates with UPS and FedEx, and built several storage racks on the other half of the barn for component inventory. this gave us ~1600 sq feet to store, assemble, and fulfill TRMNL devices. we use every inch.

optimizations

with a proper space, team, and new processes in place, we started tinkering with the overlooked aspects of running an assembly + fulfillment operation at scale.

stuff like:

  • how can we pack faster?
  • how can we provision devices faster?
  • how can we spend less time with couriers?
  • how can we prevent lost packages?

here's where our tech minds were finally useful again.

compensation
the TRMNL warehouse is essentially autonomous, with no manager required, because everyone is paid on performance. there is a compensation menu for assembly, packing, folding boxes, flashing PCBs. anyone can do any or all of these tasks, at whatever speed they feel comfortable. payroll is simply tasks completed * $value. no hidden costs, no fluctuating gross margins.

reducing human error
TRMNL team member Liz had a background in logistics and built our own Provisioner desktop + iPhone application, which removes the possibility of inputting the wrong MAC Address or Serial during device registration. it also increased throughput by 4x.

color-coded + parallelized PCB flashing

improving service quality
USPS, UPS, and FedEx pickup 1+ times /day each when we have packages for them. previously we drove to the UPS and FedEx stores at 4:45p, 5 days per week, and stood there as the cashier slowly scanned each of our labels.

skin in the game
when you ship with an aggregator tool, postage rates are decent, but there is no recourse when something goes wrong. by signing contracts with couriers directly we now have local reps who visit our warehouse, provide free office supplies, and make it easy to file claims. in the last week alone we were received > $1000 in insurance payouts by UPS and FedEx. prior to this upgrade we shipped thousands of packages and ate every penny of courier mistakes.

more setbacks

in mid April the news broke: reciprocal tariffs of 145% on goods imported from China and nearby regions.

my back of napkin math said "OK, if we were billed $10k for goods last month, the new duty fee will be $14,500. we can deal with that." wrong.

on a regular basis we've imported 2400 QTY e-paper screens, paying ~$4.37 in Duty fees for each one. but after April ~10, that fee went to $22.90 per screen. and this is in addition to the screen cost itself.

cue more customer concern. literally 100s of canceled orders. people emailed me: "i can't support you anymore because you're American, refund my order." clearance agents at courier warehouses didn't answer my calls or respond to my emails.

we needed to raise prices. so we didn't.

zig when others zag

a long time ago i read Innovator's Dilemma and it remains permanently imprinted in my mental model about new technologies by small teams.

through this literature and others i realized: incumbent organizations benefit from regulation. they pretend to want less red tape, hiring lobbyists and playing victim, but in reality, red tape helps those who already figured out the game.

with this in mind i wondered: could we do the same thing?

who in their right mind would want to launch a TRMNL competitor now, in the midst of all tariff drama and EC license regulation? not to mention the obvious pain of spinning up a hardware business generally.

so we cut prices on shipping, giving those negotiated postage savings back to customers. sure, these would have helped make a dent in the exorbitant Duty fees. but shipping fees are an easy attack vector by competition, and in my opinion shipping should never be a profit center.

next we changed shipping brokers. our new one used to run* the same UPS warehouse that wouldn't return my calls. he's now on speed dial.

then we expanded our assembly network to Australia. through experimentation we've managed to transform goods and reduce Customs burdens significantly. yes, it's an extra step in our purchase ordering process, but at scale this is a company-saving maneuver. it also means customers don't have to pay more for the same product.

finally we did the only thing i know how to do when you need more money: provide more value.

Sage, Gray, (faux) Wood

a couple weeks ago we launched 3x limited edition case colors, priced at $15 above our default (with a $15 coupon of course), and this drove > $55,000 in additional sales within 24 hours. coincidentally that Duty bill in April was $55k.

why all this matters

yesterday a customer's package was mis-delivered to their upstairs neighbor at a house in a big city. the proof of delivery depicted a porch, and the TRMNL was stolen. their shipping label clearly stated "basement unit," but couriers don't always read.

they reached out to us on live chat to see what we could do. the TRMNL was a Father's Day gift, and they needed it in time to travel and set up the device in person on Sunday. it was 3p on Friday afternoon.

since our warehouse is 100 feet from my desk i was able to walk over, assemble another device, and hand it off to the UPS driver. their TRMNL arrived 16 hours later (signature required), in plenty of time to travel to see dad.

limited edition (faux) wood grain - also yes i still got it

this would not have been possible with a 3PL in Germany or Nebraska. 

outsourcing half of a business to people who are not paid enough to care, but paid too much to maintain healthy margins, is a bad idea.

what's next

we have a freaking warehouse. but the physical space isn't the interesting part. it's the team, SOPs, custom tooling, order support protocols, and relationships with couriers that the warehouse catalyzed.

and there's no reason we can't add more value to customers with this stack in place. so that's what we're doing.

next month, another device is coming. it will be bigger, faster, higher def, everything you'd expect and more. and we're going to make them all... upstairs. here's a progress pic of our new elevator.

pallet-friendly lift platform for raw components

by being stubborn ("we'll figure it out"), ignorant ("WCGW?"), optimistic ("logistics is fun"), and lucky (best customers in the world), we found that the only way out is through.

don't outsource your core business. don't outsource giving a shit. make things, break things, make it right, say sorry, say thank you, enjoy the process, be tenacious, have fun, and stay focused.

Read Entire Article