10:45 a.m.

I wake up—I think I must have missed my alarm, or snoozed it too many times. I grab my phone to check the time. It’s late. I snap out of bed in a rush and curse myself for sleeping in.

I usually work as a freelance software engineer. Today, I’m a bike messenger. Thanks to a surprise layoff, I have to scramble to pay my rent and bills next month. For the last four days, I’ve worked 12 hours a day on my bike to hit an average of 18 deliveries a day. If I can do 20 more before midnight, I’ll earn a total of $1,100—just enough to tread water until my next gig pays out.

Get TalkPoverty In Your Inbox Thanks for Signing Up!

I still check my email compulsively to keep up with messages from the new client I just started working for. I can’t send them an invoice until the end of the month, and I won’t get the money until two weeks later. I need money now so I can afford to work, so I bike.

I had fantasies this week of getting up early, getting in a few hours of programming, working the rush hours for bike deliveries, and programming more in the lull between lunch and dinner. My body didn’t cooperate—it takes the entire day to do the number of deliveries I need, and it turns out I need recovery time after 12 hours of cycling up hills and in rush-hour traffic.

There’s part of me that knows this is a stupid situation. Everyone knows you should have three months of savings before you start freelancing, you should never depend on just one client, you should never treat a contracting gig like a full-time job no matter how much your client might want you to, and so on. But sometimes you make sacrifices. Sometimes you don’t want to just follow the money—you want to work on something you actually feel good about. You want fulfillment, and to feel like you’re making a real impact instead of just lining someone else’s pockets.

That’s why I went into debt to keep working on a project I really believed in, for a client who had trouble paying their bills on time, and who insisted that I treat the work as if it were my full-time job—even though the position didn’t come with benefits, legal protections, or even my usual rate for freelance work.

Sometimes it feels like it’s my fault for sticking around; like it’s my fault for expecting something as luxurious as “fulfillment” from my work. For people like me, first-generation college graduates without intergenerational wealth to insulate them from risk-taking, asking for “fulfillment” is being greedy.

I think about what it would take for me to become OK with giving up my dreams, and if that might make me happier.

11:12 a.m.

The rush hour alarm goes off. No time for contemplation now. Regardless of how I got into this, the only thing that matters now is paying the rent. Planning the next step can come later.

I get dressed in the same wool jersey and leggings I’ve been wearing for four days. I haven’t managed to do my laundry, either.

11:25 a.m.

I’m brushing my teeth when my first delivery notification goes off. I accept it without looking. I don’t know how the dispatch algorithm assigns work, and I worry that being too picky about which orders I take will reduce the total number I get. I can’t afford to be picky—20 deliveries is a lot, even on a good day. I rush out of my house and take off down the road.

I didn’t have time to stretch. All the muscles in my legs scream at me up that first hill. There’s nothing to do but keep pushing.

12:05 p.m.

I have time after the first delivery to grab a cup of coffee and a muffin for breakfast. I’m scrolling through Twitter on my phone—the big news today is at the Google I/O developer conference, where Google is announcing some fresh dystopian horror: a new tool that enables busy professionals to use robots with convincing human voices to take on the drudgery of interacting with service industry employees.

The job I’m doing right now isn’t all that different. I’m a buffer between the different castes in our economy: My deliveries bring people restaurant-quality food in their homes, without having to ever interact with an actual restaurant worker. This is supposed to be “innovation.” This is supposed to make people’s lives easier.

I think about inventions that are legitimately making my life easier today. This cafe has little plastic splash guards, so that when I inevitably have to take this coffee on the road with me, it won’t get all over my clothes. This is innovation.

I’ve just barely taken the first sip of my coffee when another delivery notification comes up. Thank God for splash guards.

12:34 p.m.

2/20 finished, now waiting for a restaurant to finish preparing my third of the day.

I examine the new EBT card in my wallet. I got up early yesterday morning before starting deliveries to go to the San Francisco Human Services Agency to sign up for MediCal (California’s version of Medicaid), and, while I was at it, CalFresh (California’s SNAP, or food stamps).

I haven’t seen a doctor in over two years. When I started freelancing full time in 2017, I was told that since I didn’t have any income yet, I qualified for Medicaid. By the time I tried to use my benefits, I was working part-time and earned too much to qualify. Because I had never actually “activated” my Medicaid benefits, losing Medicaid eligibility was not a “qualifying life event” enabling me to sign up for individual insurance. Or so I was told over the phone. I haven’t read the law.

So I waited. By the time open enrollment rolled around in 2017, I was working for a new client 40 hours a week, who assured me they would start regularly paying my invoices in full by mid-December. I signed up for health insurance, but mid-December came and went, my bills came due, and my invoices still weren’t paid. My client advanced me enough money to pay off the debt I’d incurred by working for them without pay, but not enough to pay my new insurance bill. My health insurance was withdrawn. I was told over the phone, basically, “better luck next year.”

My rent in San Francisco is $1,400 a month. The MediCal eligibility cutoff is $1,366 a month.



My invoices weren’t paid in full until April of this year. When I demanded a new contract with penalties for late payment of my invoices, I was told my services were no longer required.

It was bad news, but it gave me an opening—if I could claim zero income and get on MediCal, I might have a chance to get on Covered California (California’s health insurance exchange) before the end of the year. But it wouldn’t be easy. My rent in San Francisco is $1,400 a month. The MediCal eligibility cutoff is $1,366 a month. I asked my caseworker whether that meant I would make myself ineligible by earning enough to pay my rent, and she said, exasperated, “yes.”

That leaves me with a very short window of time to qualify for Medicaid, report myself for disqualification (or be accused of fraud), then take evidence of my disqualification to Covered California, which is, of course, managed by a separate agency.

The fact that I have to do any of this just to obtain the privilege of paying for health insurance is madness. A program like Medicare for All, without all the means-testing busywork, would smooth this out and make life many times easier for all the people stuck waiting in line at the county benefits office.

While I’m musing about this, I realize my order’s been up on the counter for a few minutes. I glare at the guy at the counter and he sheepishly brings it over to me. “How long has this been done?” I snap at him. “I’m working here.” I exit the restaurant, fuming, and take off down the road.

1:41 p.m.

Finished delivery 4/20. Grateful the customer ordered a drink in a bottle instead of from the fountain. People love having fountain drinks in flimsy plastic cups delivered by bicycle, but nobody thinks about how it’s done.

1:50 p.m.

I get in an argument with the manager of a restaurant that won’t accept orders from my delivery company.

“It’s not our problem,” the manager says. “We told them to take us off their website but they haven’t done it yet.”

I’m pissed. This restaurant was way out of my way in a less busy part of town.

“You know I don’t get paid for my time when you don’t take my orders, right?” I say, raising my voice. “You know that people like me are the ones you’re hurting, right?”

“I’m sorry sir, take it up with—”

“Look at me,” I say, getting a little out of hand. “I’m the one you’re screwing here, not the delivery company. Think about who gets hurt when you do this shit.” I slam the door behind me and hate-bike away, back up the hill I just came from.

2:15 p.m.

As I’m riding to my next delivery I realize that if I finish 20 today, I’m already going to be cutting it close on my Medicaid eligibility. I’m going to have to get into the technical weeds on how to make the transition to individual insurance if I want coverage this year.

Delivery 5/20 is ready, and now instead of thinking about how to pull off the sleight-of-hand I need to go to the doctor, I’m thinking about how to transport this expensive, delicately plated avocado toast, through potholes and up and down 45-degree inclines to its destination at … an art school.

I am literally living one of those grouchy articles about #millennials. It doesn’t matter. I need the money. I pad my delivery bag carefully and take off.

3:00 p.m.

It’s a beautiful day out and my face hurts from scowling so much. I’m mad at everyone, my legs hurt, I’ve been sweating all day, and the orders won’t stop coming. I was hoping to take a break around now but I know I can’t afford it—I’m currently at 7/20. I can’t stop thinking about my bad interactions with restaurant workers today. I feel like I made a huge mistake.

4:05 p.m.

9/20 now. It’s been unusually busy. The wind has been at my back all day. So why am I so pissed off? I decide to turn off the delivery app and take my first real break since breakfast.

I read somewhere that drinking beer doesn’t really give you the kinds of carbs that you need for a long bike ride, but I’ve decided whoever wrote that is a liar. I order a beer and try to collect my thoughts.

One of the reasons doing this work is so jarring is because, when I was working in Startupland as an engineer, I was the one being served. Everything in this city was arranged for my comfort and convenience.

Now that I’m the one doing the serving, everything is different. Managers want me to stand in a different part of the restaurant. The doorman is suspicious of me by default. Everyone can afford to make me wait. I am part of the invisible support network, increasingly orchestrated by unaccountable algorithms.

This support network, this comfort machinery, is noisy, messy, ugly and dangerous. Everyone is hustling for every single dollar. You can measure your payout by the sweat on your back.

This is what startup founders like to make believe their lives are like. They’re not.

In Startupland, almost everyone is white and aged 21 to 45. The hours are long, but the pay is good and basic needs aren’t a concern. In service industry land, everyone speaks with a different accent, almost nobody is white and ages range from 16 to 70-something. Retirement isn’t an option, and making rent isn’t a given.

I know I’m just a tourist in service industry land. The last time I worked full-time in a restaurant was before college, and I don’t plan on going back. I’m never going to be as hard as the lifetime bicycle couriers, like all the cool kids that hang out at that one statue plaza along Market Street. The least I can do is remember that we have more in common with each other than any of us do with the people we’re serving, and act accordingly.

I am part of the invisible support network, increasingly orchestrated by unaccountable algorithms.



I finish my beer and go back online. My first order comes up almost immediately. I take a deep breath—I’m probably not getting another break until I finish for the night.

5:02 p.m.

A huge percentage of this job is delivering fast food hamburgers to the top floors of luxury apartment towers that are located within walking distance from world-class dining.

5:30 p.m.

I got another break, but now I’m getting nervous. It’s been an unusually long lull.

6:00 p.m.

Still nothing. This is supposed to be rush hour.

6:20 p.m.

Got another delivery, but I had to order from the restaurant and they’re taking their time. I try to remember that they’re doing their best. I go outside and look at the map on my app. It’s flooded with orders everywhere, but it’s slow for me. I worry that I’ve somehow angered The Algorithm. Maybe I jostled the garnish on the avocado toast too hard earlier and got a bad rating. I hope not. The next two hours are going to make or break my night.

6:24 p.m.

My order is finished, and as I’m riding away the little chime in my headphones lets me know my next delivery is already scheduled. Deliverance! The Algorithm smiles on me.

6:48 p.m.

13/20. There’s nothing worse than looking at your destination and seeing words like “Alta” or “Terrace” or “Heights.” Every time I deliver to the top of a hill, the customer always lives at the top floor of an old walkup and wants their food delivered to their door.

7:07 p.m.

The Algorithm stacked two massive orders on top of each other, so they both have to be carried in the same bag. “Doesn’t fit” isn’t a cancellation option, so I have to get creative with my delivery bag.

Thankfully, I’m in a part of town where everyone loves having food delivered to their houses from 4 blocks away. The decadence is irritating, but I can’t be mad about it right now.

7:49 p.m.

Another stacked delivery, another restaurant absolutely slammed with takeout orders they can’t get out fast enough. There’s a guy sitting behind me who’s picking up dinner for himself, puffing his chest up, getting ready to throw a fit about his order being late. I’m not happy either, but I’m keeping a lid on it. They get my order out first. I thank them and rush out the door.

8:06 p.m.

Two deliveries to damn near around the corner from the restaurant. God bless these people and their excess disposable income.

8:15 p.m.

Four deliveries right on top of each other, and now, nothing. The dinner rush is almost over. I need three more deliveries. I’m losing it. What have I done now to offend The Algorithm?

8:16 p.m.

18/20. Frozen yogurt delivery, straight up a hill. The fog rolled in an hour ago and it’s cold and drizzly, but sure, great time for frozen yogurt.

8:45 p.m.

19/20. Somebody ordered a single piece of garlic bread for $3.99 and paid me at least $5 to deliver it. Up six flights of stairs.

9:18 p.m.

20/20 COMPLETE! They were a model customer—met me outside the door of their luxury apartment tower instead of making me fight with the security guard, and offered me a cash tip.

Cash tips are strictly forbidden by lots of gig economy platforms, in part because keeping total control over the entire transaction makes it easier to discipline workers. If I depend on the app for my payout, I only serve one master, and if there’s a conflict between what the app wants and what the customer wants, the app wins.

Sometimes it doesn’t matter. I’ve paid cash for app-based rides before, and I tip in cash. But obviously I would never accept a cash tip in violation of the terms of service.

9:26 p.m.

I didn’t turn the app off quickly enough after I finished my last order, so I have one more to finish the night. It’s a single order of bubble tea from a brand new shop, on a gnarly stretch of 6th street just south of Market.

As I’m locking up my bike, somebody calls out to me: “Hey white boy, you all fucked up, right?” I look up and see an angry white guy, a little younger than me, aggressively walking toward me. “I said you’re all fucked up, right?”

I have no idea what he’s even asking me or what he wants. He gets six inches from my face. He’s glaring at me like he’s mad, or wants something from me. I can’t tell if this guy is high, or fucking with me, or what. I finish locking my bike and rush into the restaurant. I half expect him to run up behind me and attack me.

I’m a little shaken up. The bubble tea guy doesn’t say anything, but the guy who was yelling at me is still standing next to my bike. I’m trying to keep an eye on him.

My order comes up. I don’t see the guy out the door, but part of me assumes he’s around the corner. I step outside—he’s not there. I check my bike tires to see if he slashed them or something. They’re fine. I’m OK for now.

I strap my bag down and head south toward Mission Bay, the city’s fakest and least accessible neighborhood. All the buildings and roads are brand new—so new that Google Maps routes you to dead ends. I’ve been on this same road, an isolated stretch under several freeway overpasses, dozens of times this week. But this time, it’s unsettling. I’d never considered myself vulnerable on my bike until just now.

9:54 p.m.

I finish the delivery—naturally, on an upper floor of a luxury apartment building. I walk outside to my bike and lean against it. It’s a little early—I only had to work 10 hours today, better than the average of 12 hours it usually takes.

I get back on my bike and head toward my favorite dive bar. I get an hour or two to celebrate paying my rent. Tomorrow, I’m a software engineer again. I’m working with economists studying the behavior of consumers who are subject to major income shocks, and separately, working on open source software for Medicare and Medicaid provider screening. Fucking kismet.

I’m going to be busy trying to hit those deadlines. So busy I might even have to order delivery.