On the real estate side of what I do — MidCoast Holdings, the small investment company I run with my business partner Josh — a big chunk of our deal flow arrives the same ugly way: a wholesaler blasts out an email to a list of buyers. A few phone photos, a bold asking price, some breathless claims ("ARV $250k!! won't last!!"), and, almost always, no address. They leave it out on purpose — the address is the one piece of information that lets you go around them.

The catch is that these deals are first-come, first-served. The first buyer who can credibly say "yes, I'll take it" wins. So there's real pressure to evaluate fast. And evaluating one properly — figure out the address, pull comparable sales, estimate the rehab, run the numbers — used to take me the better part of an hour per lead. Multiply that by a dozen emails a week, most of which are junk, and you've got a part-time job in triage alone.

So I did what I keep doing lately: I handed the boring, repetitive front half of the job to an agent and kept the judgment for myself. Here's how one of those emails now turns itself into a buy-or-pass decision, and the chain of tools that makes it happen.

Triage is the bottleneck, not the deal

The thing to understand about wholesale leads is that most of them are bad. The asking price is too high, the "ARV" is optimistic, the rehab is worse than the photos suggest. My job on any given email isn't really to find a great deal — it's to spend as little time as possible confirming that this one isn't, so I can move on. A fast, confident "pass" is worth almost as much as a "yes," because it buys back my afternoon.

That's a perfect shape for automation. The steps are the same every time, they're tedious, and they mostly involve looking things up and doing arithmetic — right up until the end, where a human should still make the call. So I automated everything up to the call.

A fast, confident "pass" is worth almost as much as a "yes." It buys back my afternoon.

One email in, one decision out

The whole thing is five stages. An email lands, and each stage hands off to the next without me touching it. By the time it reaches me, it's not an email anymore — it's a recommendation with the math attached.

1 Email in (AgentMail) 2 Find address (photo GPS) 3 Pull comps (RentCast) 4 Underwrite (our formula) 5 Decide, notify & log
Five stages, fully hands-off until the decision reaches me. Let's walk each one.

Getting the emails into one place

The first job is just plumbing: get every wholesaler email into a single inbox an agent can watch. I use a service called AgentMail, which gives an AI agent its own real email address — one built to be read and acted on by software, not a person. Wholesaler blasts forward into it automatically. From the agent's side, a new deal is simply a new message sitting in a mailbox it already has the keys to.

That inbox lives behind my always-on server — the repurposed laptop I wrote about in the last post. This is a big part of what that machine actually does all day: it sits there watching this inbox so that a deal that arrives at 2 p.m. while I'm on a call gets worked immediately, not whenever I next check my email.

Finding a house that was never named

This is the clever part, and the reason the whole thing works. Wholesalers leave the address out to protect the deal. But they include photos — and photos taken on a phone almost always carry location metadata. When your phone takes a picture, it quietly records the GPS coordinates in the image file (this is called EXIF data; it's the same thing that lets your photos app group pictures by place). It's not a trick or a hack — it's a standard field that most cameras write by default.

So the agent opens the attached photos, reads the latitude and longitude out of the file, and then does a reverse geocode — turning raw coordinates back into a street address. It checks a couple of the photos to make sure they agree, and sanity-checks the result against anything the email did reveal, like a city or a zip. Two minutes of work that would've taken me twenty, and the deal now has the one fact it was missing.

Phone photo EXIF GPS 43.04, −87.91 Hidden in the file GEOCODE A real address verified across photos Now we can comp it
The photos give away what the email withheld — using nothing more exotic than the location tag your own phone writes every day.

What is this house actually worth?

With an address in hand, the agent pulls comparable sales — recently sold homes nearby that resemble this one. It uses RentCast, a property-data service, and filters the comps the way I would by hand: close by, sold recently, and similar in bedrooms, bathrooms, and square footage. From those it estimates the home's likely after-repair value — what it'd sell for fixed up — along with a rent estimate for the deals we'd hold instead of flip.

The important discipline here: the wholesaler's numbers never get trusted. Their "ARV $250k!!" is treated as a claim to check, not a fact to use. The comps are the source of truth. If the real comparable sales say $215k, then the deal is worth $215k regardless of what the email shouted — and half the time, that gap alone is the whole story.

Running our actual buying math

Now it does the arithmetic I used to do on a notepad. The shape of it is simple, and it's the same math every serious buyer uses: start from that comp-based value, subtract a realistic renovation budget, subtract holding and transaction costs, and apply the margin we need for the risk. What comes out the other end is the most we could pay for the house and still hit our return — our maximum offer.

The specific dials in that formula — the exact margins, our rehab assumptions, how we structure the money — are the part I'll keep in-house; they're the actual edge. But the principle isn't a secret: a disciplined buy number, computed the same way every time, with no emotion and no wishful thinking. That consistency is most of the value. The agent never talks itself into a deal because the photos were pretty.

An illustrative example

Made-up numbers, to show the shape — not a real deal, and not our real formula. Say a wholesaler asks $180k and claims a $250k value. The agent's comps put the realistic after-repair value closer to $240k. After a realistic rehab budget, holding costs, and our margin, the most we could pay and still hit our return comes out around $155k. Asking price is $180k. That's above our number, so the verdict is pass — unless it can be negotiated down about $25k. A clean, unemotional "no," in seconds.

Putting the answer in front of a human

Finally, the agent turns all of that into a one-page verdict and delivers it. It emails a clean summary — the decision, the key numbers, the comps it used, and the risks it flagged — to both me and Josh, so we're always looking at the same page. The same verdict pings my Telegram, because the ones worth acting on are usually time-sensitive and I'm not always at my desk. And it logs the whole thing to our deal pipeline in Notion, which the agent writes to directly, so every lead we've ever seen — bought, passed, or watched — is on record and searchable.

The output isn't "here's some data." It's a recommendation: walk this one, watch it if the price drops, or pass — with the reasoning attached so I can overrule it in ten seconds if I disagree.

THE VERDICT buy · watch · pass Email to me & Josh — full write-up Telegram ping — the time-sensitive nudge Notion log — every lead, on the record
One decision, three destinations: a full write-up to read, a nudge I can't miss, and a permanent record.

The agent triages. I still buy.

I want to be precise about what this does and doesn't do, because it's the part that matters most. This pipeline does not buy houses. It doesn't send offers, wire money, or talk to wholesalers. It does the research and produces a recommendation — and then it stops and hands the decision to a person.

That line is deliberate. The whole point is to spend my human attention only on the deals that have already cleared a numbers-based bar. When the agent says "walk this one," I still go look at the property, I still validate the rehab in person, and I still make the final call with real money on the line. What I've automated is the hour of lookup-and-arithmetic that used to happen before I could even decide whether a lead was worth that attention.

And that walkthrough has its own tool — another one I built with AI. It's a tablet app called the Field Estimator: my partner walks a property room by room and captures the rehab in detail — scope, notes, sketches — right there on an iPad, and it works offline, because empty houses rarely have signal. Then its summary feeds straight back into the same underwriting math. So the two halves fit together: the pipeline decides which houses are worth walking, and the Field Estimator makes the walk itself fast and precise. The tooling follows the judgment right into the field.

The lesson

The best place to point an agent isn't the decision — it's everything that has to happen before the decision. Automate the lookup, the fetching, the math, the formatting. Keep the judgment. You end up making the same calls you always did, just without the hour of grunt work in front of each one.

There's one more principle baked in that I care about: the agent never invents a number. Every figure in the verdict traces back to a real comparable sale or a real cost assumption. If RentCast can't find enough comps, it says so and flags the deal as "needs data" rather than guessing. An underwriting tool that hallucinates a value is worse than no tool at all — so this one is built to say "I don't know" out loud.

What actually changed

Before, a wholesaler email was a small tax on my week — a decision I had to earn with an hour of tedium, usually to conclude "nope." Now it's a notification on my phone with the answer already worked out and the reasoning attached. The junk gets filtered without my attention; the real ones reach me fast enough to act. Same judgment, same standards — just none of the grind that used to sit in front of them.

And it's a good illustration of the thing I keep coming back to: the leverage usually isn't in some clever model doing something magical. It's in wiring together a handful of ordinary tools — an inbox, a photo's metadata, a data API, a formula, a chat app, a database — so that the boring middle of a job runs itself, and you're left holding only the part that actually needs you.