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

Day 1 operating Riverine.

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 pour coffee and open the Riverine dashboard. The past 12 hours have been quiet - four new free trial signups overnight, all from the organic search results my content engine has been pushing. Two from "cash flow forecasting for contractors," one from "QuickBooks app marketplace," one from a direct link. The math is already better than last month.

My Slack channel shows three alerts. I flip through them quickly. One is a webhook timeout from a Xero sync - I flag that for later. Another is the daily digest: 14 trials active, 8 paying customers, $392 in MRR today. It's a Tuesday. I'll take it.

I open Gmail. My AI agent has prepared three customer support responses and flagged them for my review before sending. The first is from Marta Chen, a bookkeeper in Portland who's in her third week of the trial. She's confused about invoice aging in the forecast. The agent's draft is clear but generic. I read it twice, then rewrite the first paragraph to be more direct - I name the specific QuickBooks report she should cross-check her numbers against. The second email is templated encouragement to a customer approaching day 30 of their trial. I approve it as-is. The third is trickier.

It's from someone named James Wu. He paid on March 28 and hasn't logged in since March 31. His renewal is due in four days. The agent's draft says something warm about "we'd love to have you back" and offers to help. I change the subject line to "Your cash flow forecast for April - can we dig into this together?" and I replace the generic help offer with a specific question: "What numbers in last month's forecast didn't match your actual cash flow?" I want to know if he stopped because the product didn't work or just because he's busy.

I hit send on all three.

10:15 AM - A customer problem that isn't quite a feature request

A support email comes through from Carol Reyes at Reyes Family Practice. She's got four staff, runs on Stripe for patient payments and some manual invoices to insurance. She's been on the paid plan for six weeks. The problem: Riverine is forecasting her April revenue as 14% lower than her March, but that's only because three insurance invoices landed in March that haven't cleared yet. She wants to exclude them from the forecast baseline - but not from the historical view.

This isn't really a bug. It's not quite a feature request either. It's a legitimate workflow that my product doesn't quite support. The spreadsheet workaround would be to manually override the historical invoice dates, which feels wrong.

I open Linear and create a ticket marked "customer ask - research." Then I draft a response to Carol. I explain what I see: the forecast is correct by the algorithm, but her mental model of "baseline" is different from how Riverine calculates it. Rather than pretend there's a quick fix, I offer three options. First, exclude those three invoices from Riverine and track them separately - small cash flow impact, solves the forecast problem. Second, wait for the invoices to actually clear; the forecast will self-correct in April or May. Third, I can manually adjust her historical baseline if she wants, but I need her to understand it's not the same as adjusting the invoices themselves.

I send it without scheduling it for later. If she's checking her forecast on a Tuesday morning, she probably wants an answer soon.

12:30 PM - Metrics and the one number that hurts

Lunch is at my desk. I open the Stripe dashboard and pull up the week-to-date summary. We have $1,896 in recurring revenue this week. At this pace, we'll hit $2,018 for the full week. That's not bad. Fourteen days into Month 2 of operation and I'm on pace for roughly $8,000 in May. The projection for Year 1 ARR says I need to hit $6,000 a month by mid-year. I'm tracking ahead.

But the churn number is a problem. James Wu might leave tomorrow. Two weeks ago, I had a trial that auto-converted to paid and then immediately churned after the first billing cycle. When I followed up, it turned out my free trial was too limited to actually help her business - she needed to see three months of history, but the trial only loads 30 days. I've been thinking about changing the trial scope, but that's a product decision I'm not ready to make yet. Still, losing a customer in month one of their subscription feels worse than losing a trial user.

I make a note to check the trial completion data later. If the conversion rate is good but the churn rate is staying above 10%, something's broken.

2:08 PM - The escalation I was not prepared for

My phone buzzes. A Slack message from Marcus Thompson at Thompson's Auto Repair. He's been a paying customer for eight weeks. The message is: "Hey, just noticed I got charged twice last month. Once on the 4th and once on the 27th. The 27th one shouldn't be there. How do I fix this?"

I pull up his account in Riverine's admin dashboard. The subscription was created on April 4. The recurring charge date is the 4th of each month. I check his Stripe invoice history. There's the April 4 charge for $49. And there's an April 27 charge for $49.

The April 27 charge is not on his recurring subscription. It's a standalone payment. I dig deeper. On April 26, Marcus upgraded his plan in the billing UI - not to a higher tier, just clicked the renew button early because he thought he needed more tokens. His subscription already had him covered. The system processed it as a new one-time transaction instead of extending his renewal date.

This is a billing edge case I've never seen before. The UI button should probably say "renew early" not just "renew." Or it shouldn't exist if the subscription is already active. I make another Linear ticket for myself - product bug or copy issue, not sure which yet.

In the meantime, Marcus is out $49. I write him back in Slack: "You're right. You upgraded by mistake on the 26th when you still had an active subscription. That's a UI problem on my end. I'm processing a refund to your card right now - should show up in 2-3 business days. And I'm adding 30 days to your subscription so you don't lose the time. Your next renewal is now May 4th." I process the refund in Stripe immediately. It takes ninety seconds.

I add a note to that Linear ticket: "Low-hanging fix - disable the renew button if subscription is active."

4:30 PM - Pipeline and the one that closed

I open my email and see a message from Tanya Hoffmann. I know that name. She's been in the trial for 23 days. The subject line says "I want to upgrade."

Her message is short: "This has saved me so much mental energy. I keep checking my forecast on Saturday mornings now instead of panicking on Wednesday. I'm ready to go paid."

I've got her in a spreadsheet somewhere - let me find her in Stripe. She's not a customer yet, which means I need to manually create her subscription. I click "add new customer," paste her email, add her to the Riverine product at $49/month, and set the trial to end immediately. An invoice generates. I send it to her with a quick email: "Tanya, welcome. Your subscription is active starting today. You'll be charged $49 on June 4th, then monthly. Let me know if you have any questions."

She's my 15th paying customer. $49 a month. It's a small number and a big number at the same time.

I also review the three trials that are expiring this week. One is day 27 of a 30-day trial, and the customer has logged in every other day, spent time in the historical forecast section, and created a custom rule. The AI agent flagged her as "high-conversion likelihood." I send her a personal message about the invoice alert feature - the thing that's supposed to hook them in week one. She hasn't triggered it yet. Maybe she doesn't know it's there. I walk her through where to find it in the settings and what it does: a Slack notification every time a high-value invoice appears in her forecast. I tell her to try it. I don't try to close her. Not yet.

6:15 PM - Wrapping and the one thing I'd change

I close the Stripe dashboard and the Linear backlog. I've been at this for nine hours with a lunch break. Tanya's conversion feels good. Marcus's refund was the right call. Carol's email might or might not convert her to a paying customer, but at least she knows I understand her problem.

What's sitting in my head right now is the trial scope issue. I think the trial really does need to show three months of history, not one. That would cost me about five hours to rebuild. I could do it this week or next week. I don't have anyone else doing this work, so it's just me, and I'm already moving as fast as I can.

The other thing is that billing UI. Every customer who clicks "renew" on an active subscription is a support ticket waiting to happen. I'll fix that too, probably tomorrow afternoon.

I open my Slack and message myself a reminder: "Trial history window + billing UI." That's enough for me to remember on Wednesday morning.

I close the laptop at 6:18. I'm tired and I'm satisfied. This is real work. The AI is helping me write emails and catch the easy stuff, but I'm the one talking to customers, making product decisions, and fixing problems. It doesn't feel like I'm watching robots make me money. It feels like I'm a small business owner running a small business.

Next week the numbers will be different. One of these customers will churn. Another trial will convert. The forecast will be more accurate. For now, that's enough.

This could be your Tuesday.

Riverine 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 →