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

Day 1 operating Frontage.

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 crack open the laptop with coffee still steaming beside the keyboard. The Slack alerts from overnight are already stacked in my sidebar. I open the admin dashboard first, checking what came through while I slept. Fourteen new trial signups. Week-to-date signups are sitting at eighty-three. That's up from sixty-two last Tuesday. The marketing Facebook group I seeded Reels into two weeks ago is finally moving the needle.

Stripe dashboard is open in the next tab. Revenue yesterday: $287. That doesn't feel remarkable until I add it to the running total. Week to date is sitting at $1,680. Month to date is $4,124. At this velocity, I'm tracking for around $4,600 next month. The math still catches me sometimes. A year of this is real money.

The email inbox has the usual overnight spray. Three trial notification emails, which I skim. Two from the marketing funnel asking how it works. One from someone who says they're not sure if it's for them. I flag that one for a manual response later. Then there's the message I actually needed to see.

Jennifer Watkins wrote at 11:47 PM last night: "I've been testing Frontage since Tuesday and I just closed a listing using the description you wrote. Seriously, I sent your copy almost verbatim to my broker and she approved it in five minutes instead of the usual back-and-forth hell. I'm in. Charge my card."

I save the message to a file I keep on my desktop called Wins. There are forty-three messages in there now. I read one every time I'm considering whether the work is real or if I'm just pushing data around.

10:03 AM - Approving outputs

The meat of the work happens in the content review queue. I built a simple approval interface into the admin UI because I learned the hard way that you can't trust the AI to ship directly to customers. Three days ago, the system generated a description that called a historic Victorian home "aged and tired." The agent caught it before sending. I didn't. Now every output over a certain confidence threshold needs my eyeballs before it goes live.

Seven items in the queue this morning. Most are solid. A listing summary for a condo in Denver that Marcus Chen wrote the property details for. The AI took his "2 bed, 1.5 bath, updated kitchen, deck views of the mountains" and turned it into: "Unobstructed mountain vistas frame this renovated Denver condo, where updated finishes meet move-in readiness. Your morning coffee on the private deck. Two bedrooms, one-and-a-half baths."

I approve that one. Two clicks and it's live in his drafts.

The next one is harder. Sara Mitchell in Austin submitted specs for a townhouse that she described as "tight for space but great bones in a walkable neighborhood." The system's first pass was too aggressive on the walkability angle. "Urban living at its finest" when really the neighborhood is about a ten-minute walk to shops. I edit it down to what's true: "Established neighborhood, close to daily conveniences. Good bones in a walkable location." I don't change her truth. I just sharpen it. She gets a notification that her description is ready, and I send her a note saying I tightened up the walkability language and she might want to review.

One item is actually a failure that needs escalation. Tom Brennan uploaded a property listing but accidentally submitted the wrong photos to the AI - pictures of what looks like a warehouse, totally mismatched to the description he wrote. The system generated marketing copy for a "bright and airy residential space" next to images of a corrugated metal building. I flag this one for Tom directly. He'll need to fix the photos and resubmit. This is the unsexy part. The AI is only as good as the data going in.

12:30 PM - The metrics check

I close the approval queue and pull up the comprehensive dashboard. I've built this in Airtable because Stripe and my app don't talk to each other automatically yet. That's on the roadmap. For now, I update it by hand most mornings.

Current active trials: forty-one. That number matters. If I can convert even half of those to paid, I'm looking at another $1,400 a month in recurring revenue. The email drip is set up in Mailchimp. I'm seeding it with three touches over seven days. Day one is "here's how to use this," day three is "here's what agents are doing with it," day five is an offer: first month is $25 instead of $35 if they commit to three months.

Conversion rate from trial to paid right now is sitting at thirty-two percent. That's higher than I'd expect. Most months I see closer to twenty-five. I'm wondering if the referral credit program is starting to work. When Sara Mitchell or Jennifer Watkins mention Frontage to other agents, those signups convert faster. They come in pre-sold. I need to lean into that.

The other number I'm tracking is churn. I had four people cancel last week. That hurt. I read the cancellation surveys immediately. Two people said they didn't have time to generate enough listings to make it worthwhile. One said she went with a different tool because it integrates with her MLS software directly. I can't fix that this month. One person just said "not a good fit" and didn't elaborate. That one sits with me. I'll try to email her next week. Sometimes people churn because they're overwhelmed, not because the product is bad.

2:08 PM - Customer escalation

The Slack alert comes through around 1:45 PM. Someone named Carol Reyes from a brokerage in Austin hit a bug. She can't download her description as a PDF. That's a feature we ship. The error message says it's a permissions issue on the backend.

I check the Linear board. This isn't something I've seen before. I log into the app with her email address and try to reproduce it. It works fine on my account. I try with a test user account. Also works. I check the database logs. Carol's account is fine too. Something weird in the flow.

Then I see it. Carol's on a trial account, not a paid account. The PDF export is hidden in the UI for trials - I'm trying to prevent people from grabbing PDFs and then canceling. But the button is still somehow clickable if you know the API endpoint. Someone found it. Carol found it.

I write her back immediately. "Hey Carol, I found the issue. Trial accounts have the PDF feature locked, but there's a UI bug that let you click it anyway. I'm fixing that today. In the meantime, I'm going to manually export your descriptions and email them to you. Can you send me the URLs of the ones you need?"

She responds within ten minutes. Five listings. I export them all, throw them in a Google Drive folder, and send her the link with a note that her account is flagged for the fix once we push it.

Then I open my code editor and fix the bug. It's a five-minute change. I pull the export button from the trial UI entirely instead of just disabling it. I test it locally. I push the change. Carol gets a Slack notification that it's deployed.

4:30 PM - An awkward conversation

Email from a customer I signed up three weeks ago. Someone named David Hart. He says he's been charged twice and wants to cancel. I check Stripe.

One charge on April 28. One charge on May 5. That shouldn't have happened. I look at his account. He signed up on trial, converted to paid on April 27. The system billed him immediately for the first month. Then something in the billing cycle logic billed him again on May 5. It's my fault. The interval calculations are off. Another thing on the roadmap that I didn't get to.

I call David. I actually call him instead of emailing. He's irritated but not hostile. I refund the duplicate charge right there from Stripe, walk him through it so he sees it go through, and ask him to give Frontage another week before deciding to cancel. I don't promise anything. I just say the charge was a genuine mistake and I fixed it.

He says okay. He's not happy, but he's not gone either.

I add a note to Linear to fix the billing interval logic before we raise prices or add more features. You can't grow if your payment system is broken. This is the kind of thing that kills startups quietly.

5:45 PM - Wrapping

I close out the day the way I started it. Check the numbers one more time. Stripe shows $342 in revenue today. That puts us at $2,022 for the week. Month to date is now $4,466.

I have sixteen trial accounts still active at end of business. Two more people hit trial-to-paid conversion while I was working. That's automatic now. The system works.

I send a personal email to Carol Reyes thanking her for catching the bug and asking if she's ready to move from trial to paid. I send Jennifer Watkins a short message saying her win is going in my file. Both are simple, two-sentence emails. But they're real.

I close the Slack. Turn off the notifications. It's 6:12 PM.

The thing that surprised me in month two is that this doesn't feel like building a product anymore. It feels like running a business. I'm not thinking about features I wish existed. I'm thinking about whether the billing system works and whether agents feel heard when something breaks. I'm checking revenue daily. I'm watching churn like a hawk. I'm reading cancellation surveys like scripture.

The work is real work. The AI is doing maybe sixty percent of what agents need. I'm doing the other forty - fixing edge cases, handling the human stuff, making sure what ships is actually good. But that ratio is why someone is willing to pay thirty-five dollars a month. They're not paying for a robot. They're paying for me to be standing there, making sure it doesn't embarrass them.

Same time tomorrow.

This could be your Tuesday.

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