How I think about it
If I know what I’m looking for and how the output should look every time, that work doesn’t need me. I was spending a lot of my week doing repeatable tasks by hand, so I started handing them off.
I set up AI the same way I would train a new hire. I write down how the job is done, give it the inputs, check a sample of its work and then let it run on a schedule. When the work involves a customer or a candidate, AI can help with a draft, but I make the decisions and I send the message.
Building and coding
Claude Code and scripts for pulling and reshaping data. I’m not a developer. I describe the job, check the output, and fix what’s wrong.
- The CRM message pull. Export every conversation from GoHighLevel (about 35,000 messages across 7,000 contacts), classify each one as warm, cold, or don’t include, and produce a follow-up list. Full write-up: What 35,000 customer conversations showed me about where leads die.
- The permit pull. SQL against the public short-term-rental permit records to build the Airbnb host list that feeds our annual cold text campaign.
- Resume scoring. A small script that checks a tailored resume against a job posting for keyword coverage and for words that sound like a machine wrote them, before I ever look at it.
How I work with it:
- Write the spec first: what goes in, what comes out, what “correct” looks like. If I can’t write that down, I’m not ready to automate it.
- Start with a sample. I test on ten rows before running it on 35,000.
- Make it tell me what it did and why, so I can catch the step that’s wrong instead of a wrong answer at the end.
- Keep each piece small, with one pull, one classification and one output at a time. Mistakes are much easier to find in small steps.
The first version of anything I build with it is usually a little wrong in a way that looks right. So I check a sample every time, and when I find one error, I look for the same error in the rest of the output.
Automation: workflows that run without me
The things that run on a schedule or a trigger without me at MaidThis. Every one of them has a human checkpoint before anything reaches a customer or a candidate.
| Workflow | Trigger | What it does | What I still do |
|---|---|---|---|
| Hiring chatbot | New cleaner applicant | Schedules the interview, sends reminders, collects paperwork, moves them through the pipeline in GoHighLevel | The interview itself, the onboarding call, the decision |
| Cold text campaigns | I launch them | Two-text sequence to a list built from public permit records. Replies land in the CRM for a person. | Write the offer, approve the list, handle every reply |
| Weekly KPI engine (n8n) | One click before the Monday meeting | Pulls the week from bookings, calls and texts, the CRM, payments, email and recruiting into one sheet. A Looker Studio scorecard shows every number against its goal, and the Claude API reviews every new-lead sales call against our scripts and posts coaching to Slack. | Enter the two numbers with no clean source, run the meeting, coach from the review |
| Ops bot | Every 10 minutes, plus questions in Slack | Suggests the top three teams for each booking without one, posts tomorrow’s uncovered jobs at 4pm, and lists the day’s customer check-ins and the week’s at-risk customers | Assign the team, make the calls |
| Pay bot | Monday morning | Drafts each team’s weekly pay from our bookings, Operto emails and #accounting messages, and asks about anything unclear | Answer its questions, approve the pay, send the statements |
| Live sales coach | Every 5 minutes | Coaches the real sales call with each new lead in Slack and learns from my corrections | Correct it when it’s wrong, coach the rep |
| Thumbtack to CRM | Daily at 5:30pm | Adds new Thumbtack leads to GoHighLevel and matches each one to its phone number | Call the leads |
| Host sign-up alert | An Airbnb host signs the agreement form | Posts the details to Slack so the team can onboard them that day | The onboarding call |
| End-of-day lead text | 4:30 pm | Texts every lead we haven’t heard back from that day, before the office closes | Everything after they reply |
Hiring is the biggest job in this business and most of it is logistics: getting a candidate to show up to an interview, chasing paperwork, reminding them about the onboarding call. I moved all of that into GoHighLevel with an AI chatbot that handles scheduling, reminders, and documents. It saves the team about 10 hours a week and more applicants make it to the interview, because nobody falls through a gap waiting on a human to text them back.
What it does not do is interview anyone. Attitude and work ethic are what I’m hiring for, and I can’t read that from a form.
Rules I follow:
- A person reads anything before it reaches a customer or a candidate. The automation gets people to the conversation, and a person handles the conversation itself.
- Every automation logs what it did. If I can’t see what ran, I can’t trust it.
- If it fails twice, I rebuild it rather than patch it.
- I only automate a step after I’ve done it by hand enough times to know what good looks like.
Related projects: An ops bot that suggests the right team for every booking, A pay bot that drafts weekly team pay for me to approve, An AI sales coach that reviews our sales calls as they happen, Getting every Thumbtack lead into our CRM the same day and A weekly KPI engine: n8n, Looker Studio and AI sales-call review.
Working alongside it
The longer tasks I hand off and then review: quoting commercial jobs, analyzing a dataset, researching a company before I reach out, first drafts of SOPs and job posts.
- Commercial quotes. A business sends photos and fills out an intake form. AI turns that into a draft quote using our pricing rules and minimums. I check it and send it. We quote same day instead of scheduling a walkthrough, which matters when the first good quote usually wins.
- Big-dataset analysis. The 35,000-message CRM pull. The hiring funnel numbers from our sprint. Anything where the question is clear and the data is too big to read.
- Company research. Before I email someone at a startup, I want to know what they built, what they’ve written, and what they’re hiring for. That’s 20 minutes of reading per company I don’t have to do.
- First drafts. SOPs, job posts, client emails, the operating cadence doc. It gets the structure right, and then I fix the voice and the details.
I don’t live in Phoenix anymore, so I can’t walk a building before quoting it, and I don’t have someone there who can do it consistently. The old process was a walkthrough, a spreadsheet, and a quote a few days later. Now the lead fills out a short intake form with photos of each area and the schedule they want. AI drafts the quote against our hourly rates, visit minimum, and target margin, and flags anything in the photos that would change the labor estimate. I review it, adjust if something looks off, and send. The whole thing takes minutes. If the job is unusual, I still send a person.
How I review its work:
- Spot-check a sample against the source before trusting the whole output.
- Ask it to show its reasoning along with the answer. It’s easier to catch a wrong step than to work backward from a wrong total.
- Numbers get traced. If I can’t follow a figure back to where it came from, it doesn’t go in.
What it’s bad at:
- Knowing what it doesn’t know. It will fill a gap with something plausible unless I tell it to flag the gap.
- Reading a room. It can draft the email to an upset client, but it can’t tell me whether to send it or call.
- Sounding like me. Even after studying my writing, its first draft is usually too polished, so I rewrite parts of it in my own words.
Thinking and writing
Chat as a sparring partner and a tutor. Pressure-testing a decision, cutting a memo to one page, and learning a new field fast enough to be useful in it.
- Arguing the other side. Before I make a call (an offer for a campaign, a hire, a price change), I have it make the best case against me. It often finds a gap I missed.
- Editing down. A memo that’s two pages becomes one without losing the point. I write the first draft, and it tells me what’s padding.
- Learning on purpose. When I decided to move from running my own business into startup operations, I had it read about 50 current job posts and a stack of hiring guides and tell me where my gaps actually were, in order. That turned into a learning plan measured in finished work instead of hours: a book summary and quiz per book, a study guide with free resources first, and a project at the end of each step. Most of this portfolio is those projects.
I know my own numbers cold: budget vs actuals, a 13-week cash forecast, team pay as a percent of revenue. I didn’t know the startup words for them, or how a runway model, an investor update, and a board deck fit together. So I had it build a study guide: the free sources to read (a SaaS financial plan template, a metrics guide), summaries and quizzes for the books I’d finished, and a glossary in plain English. Then I put it to use by restating my own business in gross margin, CAC, payback and LTV, which is in the project list.
I make the recommendation, the judgment call and the final wording. AI can lay out the options and the risks of each, but I make the choice and I speak for myself.
My toolkit
| Tool | What I use it for | Since |
|---|---|---|
| Claude (chat, scheduled tasks, Claude Code) | Analysis, drafts, data pulls and scripts, study guides | 2024 |
| GoHighLevel automations | CRM, recruiting bot, cold text campaigns, lead follow-up sequences | Feb 2024 |
| Zapier | Connecting tools, like sending form sign-ups to Slack | Feb 2024 |
| Notion | Ops manual, SOPs and trackers | Feb 2024 |
| n8n | Self-hosted weekly KPI workflow that pulls bookings, calls, leads, payments and recruiting into one sheet, reviews sales calls with the Claude API and posts to Slack | Oct 2026 |
Where I draw the line
- Nothing goes to a customer or a candidate without me reading it first. AI drafts in my voice, but I edit it and I send it.
- I trace every number back to its source before it goes in a document.
- I don’t automate conversations. Interviews, upset clients and founders I want to work for hear from me directly.
- If the model gets something wrong once, I check the rest of its work for the same mistake.