8:42 AM - Inbox triage
I open my laptop at the standing desk in the back office. Coffee's already gone cold on the filing cabinet beside me - I poured it at 8:15 and got stuck on the Slack channel with one of our customer success people asking about a billing question. The admin dashboard loads, the custom Retool interface we built after the first month because the default analytics felt too slow. Today's metrics appear in the top corner: 3 new signups overnight, $847 in new ARR from conversion upgrades, 14 customers still burning through their trial period.
Three new signups. That number still hits different.
I pull up Gmail. The agent created six discharge summary email drafts overnight - customers who submitted digital intake forms and had appointments yesterday. I read through the first one carefully. Carol Reyes at Reyes Family Practice had an appointment with a golden retriever with an ear infection. Dr. Mendez's notes: inflammation, prescribed antibiotics, follow up in two weeks. The AI watched this go in and drafted a patient summary Carol can send to the owner. The formatting is clean. The language is warm but not cute. Not "your doggy will feel better soon" but "based on Dr. Mendez's findings, Biscuit should show improvement within 48 hours of starting the medication." I approve it. The system queues it for Carol to review one more time before it leaves, so there's still a human checkpoint.
The next three are solid. The fourth one is wrong. The agent drafted a discharge summary for a cat dental cleaning and somehow included pain medication recommendations that weren't in the appointment notes. I flag it immediately in Slack's #escalations channel. Our part-time vet tech will catch it, but it bothers me that the model hallucinated. I make a ticket in Linear: "AI discharge summaries sometimes invent meds when clinical notes are sparse." Mark it for our Wednesday debrief.
This is what I actually do. I don't generate the summaries. I catch the ones that are broken.
10:15 AM - A flagged conflict
Red flag emoji in Slack. Billing mismatch detected.
I click through to the Stripe dashboard still open from yesterday. Marcus Webb signed up 30 days ago with a $99 trial. The trial ends today. The system was supposed to send him a reminder email yesterday and update his status so he could choose: convert to paid at $200 a month, cancel, or extend.
The email never sent.
I dig into the logs. His appointment reminders went through fine yesterday - he got those. But the trial-ending email is stuck. I trace it. He has his clinic email registered to his manager's account, not his own. The system was looking at the wrong customer profile for billing status.
Trial expires in hours. No auto-conversion set up. I write him a direct email. Not a template. I tell him the system glitched, I noticed it, and I want to make sure he knows he has options. I ask if he'd have time for a quick call this week to talk through what he's seen so far. Then I Slack Maya, our implementation person, to flag that split billing needs to be handled better in onboarding.
It's not elegant. But it's the work.
12:30 PM - Lunch and the metrics check
I eat a sandwich at my desk. This is my pattern now. I'm too close to the numbers to really step away. I pull up the dashboard analytics view again.
Week-to-date: 16 new signups. $3,200 in new ARR generated this week. Churn last week: one customer - Sarah Chen at Chen Urban Animal Hospital, a one-vet practice who decided the automation wasn't necessary at her scale. MRR as of today is sitting at $11,400. That's rent. That's payroll. That's real.
Appointment reminder hit rate: 97.8%. Discharge summary generation: 94%, the hallucination issues are dragging it down. Follow-up email open rates: 38%, higher than I expected.
I spend 20 minutes on pipeline. Eight active conversations at different stages. Three demo calls booked this week. One is a practice in Portland with 12 vets. If they convert, that's $2,400 a month in new ARR. If.
2:08 PM - Customer escalation
Jennifer Torres calls from Riverside Emergency Clinic. She's been on the paid plan six weeks. Her appointment reminder system sent a duplicate reminder yesterday. The patient owner got it twice, three hours apart. She's not angry. She's confused.
I pull up her account and integration settings. She uses both Google Calendar and a third-party practice management system. They don't play nice with our API. For one appointment, the system saw it in both places and sent two reminders. It was supposed to deduplicate. It didn't.
I tell her what happened. I don't hide behind a chatbot. I give her three options: pause reminders until we fix the dedup logic, manually exclude one calendar source, or refund yesterday's charges. She chooses to exclude the source and keep running.
I add the bug to Linear. I also add a task to build a UI that shows customers which calendar sources are active so they can dedup manually if they need to. Then I send her a follow-up email walking through the steps and promising I'll personally check in by end of week.
This is the conversation that matters. She trusts me because I earned it by showing up.
4:30 PM - Pipeline work and a win
I spend the next two hours doing what only I can do. I review the notes from this morning's Zoom demo with a Minneapolis practice. Their manager, David, loved the discharge summary speed but was skeptical about appointment reminders. His existing system already handles that and he doesn't want workflow disruption. I draft a response email that doesn't push reminders at him, walks him through how other practices in his area are saving 90 minutes a week on clerical work, and offers a 60-day trial instead of 30.
These emails take 15 minutes each. That's 15 minutes not building product. I think that's the job right now.
Around 4:45, Marcus Webb replies to my morning email. He wants to convert to paid. He wants to add follow-up email automation too, which moves him from $200 to $299 a month. I confirm the upgrade in Stripe, send him a video walkthrough of the follow-up feature, and calendar a 15-minute call for tomorrow to make sure he knows how to customize the templates.
That's the win. Almost-churn becomes $1,200 in new ARR over a year.
6:15 PM - Wrap
I close the laptop. The office is quiet. The filing cabinet still has that cold coffee.
This job is not what I imagined software would be. I don't write code. I mostly read dashboards, approve AI-generated work, catch edge cases, send emails that matter, and make small decisions that compound.
The AI handles volume. I handle trust.
The earlier version of VetAI promised "fully automated" everything. That was overselling. The real product is appointment reminders and discharge summaries that usually work but need human eyes before customer-facing mail goes out. That's honest. That's what scales.
I'm tired. I also think we might actually pull this off.