8:42 AM - Inbox triage
I open Lockstep's admin dashboard while my coffee cools on the desk. Tuesday morning light is flat through the office window. Two weeks of running this thing and I still get that quick hit of adrenaline when I see the notification badge.
Slack is pinged with three alerts from overnight. One's marked high priority: "Payment failed for McAlister Logistics, retry scheduled 9am." I make a note. The other two are routine - new trial signups, which is fine, but I'm not counting on those yet. The free trial converts about one in seven, and even then, half of those cancel by week three. This is a business that moves slowly.
I pull up Gmail. Thirty-seven new emails since yesterday evening. Most are support tickets that the AI agent drafted responses for, sitting in a folder waiting for my review. The agent has gotten better at this - when I started, it was generating emails that sounded like a manual for microwave ovens. Now they're actually close to how I'd write them. But I still can't just batch-approve them. I have to read each one.
The first is from David Chen at Midwest Haulers. His fleet's dispatch schedule is failing to sync with the maintenance alerts on two of his trucks. The agent wrote:
"Hi David, thanks for reaching out. This is typically a cache issue. Try clearing your browser history and refreshing the dashboard. If that doesn't work, send me your fleet ID and I'll pull the logs."
I know what the real problem is. David's trucks are on a legacy telematics system that Lockstep hadn't officially tested with until last month. The cache thing might work, but I'm going to offer him a quick call instead. I rewrite it:
"Hi David, I want to get you running cleanly. The sync issue with legacy telematics sometimes needs a config tweak on our end. Let me schedule 15 minutes this afternoon and we can knock it out together. I'll text you a calendar link. Thanks for being patient."
I send it. That's the real work right there. Not the software. Me, actually giving a shit.
10:20 AM - Flagged conflict
I'm three emails in when my phone buzzes. Another Slack alert, this one from the scheduling engine. "Route conflict detected: Carol Reyes assigned same driver to maintenance window and client call. Manual review required."
Carol Reyes at Reyes Family Practice - no wait, that's wrong. Reyes Fleet Services, two trucks, based out of Denver. She's been on the platform for six weeks now. She signed up after her truck broke down and she lost a $3,200 contract because she didn't have a driver available. She's been using Lockstep consistently since.
I open her account and see the conflict. Driver James is scheduled for a 10:30 AM preventive maintenance on Truck 2 - an oil change and filter replacement that should take 45 minutes - but the system also has him flagged as the driver for a 10:45 AM pickup run. That's impossible.
The issue is that Carol submitted the maintenance appointment manually before the route came through the dispatch board. The system's supposed to flag this, and it did, but the flag went to me because Carol's account doesn't have enough historical data for the AI to resolve it on its own.
I shoot Carol a text. "Carol, quick question. The oil change on Truck 2 is scheduled for 10:30. I'm seeing a route conflict at 10:45. Can you let me know if the maintenance is firm or if the pickup window is flexible?"
She responds in two minutes. "Pickup is flexible. Can move that to 12:30."
I go back into Lockstep and update the route. The system accepts it, reschedules the driver alert, and sends Carol a push notification confirming the change. I make a note in her account: "Carol is responsive and detail-oriented. Good retention signal."
This is the core thing. The AI can't know that a customer values reliability over convenience. But I can.
12:33 PM - Lunch and the metrics check
I open my Stripe dashboard while eating a sandwich. Week-to-date revenue is $1,847. That's four active paid accounts at $129 a month, which means I'm tracking for about $2,000 this week. At the monthly rate, that's roughly $8,000. I need to hit $165k in ARR by year-end to be on pace, which means I need to be running about 140 paying customers by December. I'm at seven.
I also have thirteen active trial accounts. Historical conversion is about 14 percent, so that's roughly two of these converting to paid in the next two weeks. If I can keep adding ten to fifteen trials a week through the Facebook ads, I'm on a reasonable trajectory.
But the burn is real. I'm spending about $800 a week on ads right now. The cost per trial is about fifty bucks, which is fine. The real question is whether I can hold the churn rate low enough. Last month, three of my early customers canceled. That's already 40 percent monthly churn, which is unsustainable.
I pull up the churn list. One was a single-truck owner who said it was "outside his budget." That's normal. The second was a fleet that tried integrating with QuickBooks and gave up when the sync took too much manual configuration on their end. That's a product problem I need to fix. The third was Marcus Williams at Williams Transport. He said the scheduling UI was confusing.
I send Marcus an email: "Marcus, I know the UI was giving you trouble. I've rebuilt that section based on feedback from other operators. Would you be open to a free month to take another look?" Sometimes that works. Sometimes it doesn't.
I eat the rest of my sandwich and close the laptop for ten minutes.
2:04 PM - Customer escalation
I'm back in the office when my phone rings. It's Carol Reyes again.
"Hey, I'm looking at my next maintenance cycle for Truck 1," she says, "and the system is telling me the next oil change is due in 1,800 miles. That doesn't match my manual log. I've got 3,200 miles since the last one. Am I reading this wrong?"
I pull up her truck's history. The issue is visible immediately. When she uploaded her historical maintenance records from before she switched to Lockstep, she uploaded a PDF. The AI agent extracted the data, but the extraction got the last oil-change date wrong by about a month. So the system's counting from the wrong baseline.
"Carol, I see the issue. It's on our end. When we pulled your old records, we mis-dated one entry. Let me fix that right now."
I go into her truck profile and manually correct the last-service date. The system recalculates. Now it shows 1,200 miles until the next service, which aligns with what she has in her log.
"Okay, one second," she says, and I can hear her checking something. "Yeah, that's right now. Thanks."
"I'm going to note this in our system. If you upload records in the future, I'll do a quick sanity check to make sure the dates line up. You shouldn't have to."
After we hang up, I add a task to my internal tracking: "Improve data import validation for maintenance history uploads. Flag suspicious date gaps."
This is the thing. The software is supposed to automate this work, but it doesn't. Not yet. What it does is make me faster at catching and fixing the problems that matter to customers.
4:45 PM - Quiet wins
I'm reviewing another batch of support emails when I see one that makes me stop.
From Sarah Chen at Progressive Logistics: "I've been using Lockstep for three weeks now. I just realized I didn't lose a single job last week due to vehicle downtime. That hasn't happened in two years. Not sure if that's luck, but my crew feels more organized. Thanks for building this."
I don't have a template response for this. I write back: "Sarah, this is exactly why I built this. Thank you for taking the time to say it. Seriously."
I do a quick search in Slack to see if this metric is trending anywhere. It's not. I make a mental note to ask the next handful of churned customers if availability had improved before they left.
6:15 PM - Wrap
I close the laptop at 6:18 PM. The office is mostly empty now. I think through the day:
The good: Carol's quick resolution, Sarah's note, the McAlister payment finally went through. Four of the seven support emails I reviewed didn't need any rewrites. The system is learning.
The hard: Marcus still hasn't responded to my email, which probably means he's not coming back. The data import problem is going to happen again if I don't fix it. And I just realized I spent ninety minutes today on work that should have been automated, but isn't.
The honest thing is this: The software is doing maybe 40 percent of the job right now. The rest is me. Catching the edge cases. Calling customers back. Fixing the data imports. Rewriting the emails that sound like they came from a robot.
But here's what matters. Last month, I was doing 100 percent of this work alone, working until 9 PM most nights, and I was dropping balls left and right. Now I'm working until 6:18 PM and I'm not dropping anything. That's the real business. That's the system working.
Tuesday closes out at $47 in gross revenue for the day. On pace for the week. Not great. Not bad. Real.