Wishdeal Factory · Storefront
A typical day · Owner-operator's seat
← Back to ContractorAI

Day 1 operating ContractorAI.

First-person, second-month operator. What you'd actually be doing on a Tuesday. Real customers, real numbers, real friction. Synthesized from the agent spec and the GTM model.

8:42 AM - Inbox triage

I open the dashboard at 8:42 AM with my first coffee. The habit now is to check overnight metrics before I touch anything else. Seven new signups came through since I logged off yesterday at 5:45. That puts the month at 31 conversions so far, tracking toward $3,100 in new MRR if they all stick. Stripe says I'm at $14,800 revenue for May, which means I'm on pace. I see two of the seven came through the San Diego Contractor Association newsletter sponsorship. That channel is earning its cost.

I have 23 unread emails. I open Gmail and scan the list. Most are notifications from the product itself - a few trial users hitting rate limits on their first estimates, one bounced notification email that the system flagged automatically. But I see three customer messages that need a real answer. One is from Marcus Chen, a foundation contractor in Orange County. He's on day 13 of his trial and his email says "Quick question about markup handling when I have variable labor costs. How do you handle this?" Another is a support request from Jennifer Ortiz asking if ContractorAI integrates with QuickBooks. The third is a churn notification from Tom Bradford at Bradford Excavation - subject line reads "Thinking about canceling."

I make a note in my head. Tom is going to be my 4 PM problem. Marcus I want to close before lunch. Jennifer gets a quick response - I've answered this 40 times in six weeks and I know it's on our roadmap but not live yet.

9:15 AM - AI review and approval

I open the agent dashboard. The system has prepared three customer outreach emails - these are personalized follow-ups to trial users who logged in yesterday but haven't run an estimate yet. The AI writes these based on their signup details and activity, and I review them before they go out. The first is good. It addresses a roofing contractor by name and references his trade specifically. Second one is generic - I delete it and make a note that the logic for identifying trade type isn't pulling from the right data field. That's a bug I'll flag later. The third is solid.

I approve two of three and hit send. The system will show me open rates tomorrow.

Then I open Slack. I've got it configured to ping me on three things: new signup alerts, system errors, and anything flagged as a potential churn indicator. I see one alert from 6 AM this morning: a customer named Carol Reyes at Reyes Family Practice - wait, that's wrong. She signed up as a general contractor, not medical. I check the record. She's a GC doing residential renovation. The alert tagged her as churn risk because her account showed "no action since day 2." I pull up her trial timeline. She signed up on May 1, logged in on May 3, never came back. That's a real churn candidate. I send her a direct message - something shorter and more personal than a template email. "Hey Carol, noticed you logged in briefly and then dropped off. Anything confusing about the first few minutes? Happy to walk through it with a quick call." This is the work that doesn't scale, but it matters.

10:30 AM - A flagged conflict

I'm back in the product admin dashboard looking at Marcus's account when the system flags something: one of the AI-generated estimates for a trial user appears to have a pricing conflict. The contractor input variable labor rates for a framing job, and the estimate algorithm applied our default markup without accounting for the fact that labor rate ranges were unresolved. The estimate is wrong by about $4,200. The customer hasn't seen it yet - it's in draft status. This is exactly the kind of edge case the system will encounter with a thousand different trades and cost structures.

I dig into the flagged estimate. The contractor (David Reeves, doing mixed commercial work) has supply costs locked in, but his labor is "20 to 28 per hour depending on crew size." The AI interpreted this as a single data point and applied a margin. I manually edit the estimate to request clarification from David before the system auto-sends it. Then I file a bug in Linear: "Estimate engine doesn't handle labor rate ranges properly - needs conflict resolution step before draft finalization." I tag it as Medium priority and assign it to myself for Thursday. This is the kind of thing that kills a SaaS if you let it slide.

12:30 PM - Metrics and Marcus

I take a break and pull up the Stripe dashboard. I'm looking at MRR churn. Two customers have cancelled in the last 30 days - a $99 subscription from a trial that didn't convert, and a $199 subscription from a customer who went dark after six weeks. That's a churn rate of 0.08. I can live with that for now. The $14,800 number is real. I'm pulling about $475 a day in new and existing subscriptions combined. It's not enough to hire anyone yet, but it's enough that this doesn't feel like a side project anymore.

I respond to Marcus. His question about variable labor costs deserves a real answer, not a canned response. I write: "Marcus, this is something we see a lot with foundation work where labor costs swing based on crew composition. Right now, the system lets you set a range, and you'd need to pick the best estimate for your actual scenario. We're building a conflict resolution step for next month that flags these and lets you input them properly. For now, I'd recommend using your average expected labor cost and noting any variance in the line item description. Want a 20-minute call Friday morning?" He's likely to convert. This is the kind of customer investment that feels worth it.

2:08 PM - Tom Bradford and a hard conversation

Tom Bradford's email from this morning sits in my drafts. I've been thinking about it since I saw it. He's been on a $199 plan for four months. He's a real customer, not a trial, and he churred. I read his message again: "Software isn't moving fast enough for my workflow. I'm trying something else."

I could send an automated churn flow, offer a discount, make it frictionless for him to leave. Instead, I call him. This is dumb for efficiency, but I need to understand why. We talk for seven minutes. Turns out he was trying to coordinate a subcontractor directly through ContractorAI and expected it to sync with text messages. It doesn't. He had to go back and forth between the app and his phone. He said, "I get that you're building something here, but I need the thing that exists now, not the thing you're working on." I understand. I offer to refund his last two months (he's been unhappy, I should have caught it). He says no, but he'll come back in three months and check the subcontractor feature. I mark his account as "paused - will re-engage Q3" and send him a note saying I'll reach out in July.

This is not the narrative they sell you about automation. This is the reality: sometimes you need to pick up the phone and admit you're not there yet.

4:30 PM - Pipeline and small wins

I pull the weekly pipeline view in the admin UI. Four trial users are now on day 7, the critical point where the system sends them a "let's talk" message with a demo option. Three of those four have opened the email. Two have converted in the last seven days, and they're now past the trial window and paying customers. One of the two is Sarah Walsh at Walsh Construction - she's a $99/month customer. She sent a note this morning saying "Setup was actually pretty smooth. My estimating time went down significantly." I read that message three times. That one customer email, that one small thing she said, that makes the day work.

5:45 PM - Closing the loop

I wrap up the things that need wrapping. I mark the bug as filed. I pull the daily numbers one more time: 7 signups today, 2 conversions, 0 cancellations. The week is at 36 signups, 11 paid conversions. That's a 30% conversion rate which is higher than usual, probably a seasonal spike in contractor hiring in May. I send myself a note to investigate which traffic source is driving the better converts - if it's the regional sponsorships, I should double down.

I look at the closed laptop at 6:15 and think about the day. I spent about four hours on actual work: email, reviews, that call with Tom, the bug filing, the estimate conflict. I spent about two hours on metrics and planning. The rest was thinking, waiting, staring at dashboards, hoping the momentum continues. The AI is doing a lot of the heavy lifting - the outreach, the personalization, the flagging of problems. But it's not doing the thinking. It's not having the conversation with Tom, or the call with Marcus, or catching the edge case in the estimate algorithm. I'm the operator. The AI is the amplifier.

Tomorrow is Wednesday. I'll probably need to fix that labor range bug. I have two demo calls scheduled, both with trial users on day 5. If I close both, that's $198 in new MRR. The sponsorship invoice for next month is due to come in, and I need to decide if I'm renewing all three regional newsletters or just the two that are converting best. There's always something. It's real work. It's good work. But it's not passive, and it's not magic.

I close the laptop.

This could be your Tuesday.

ContractorAI is available to own for $200 flat. Or pay $75/hr for a Roll Digital chief operator to build it for you, AI-amplified.

See pricing →