612 addresses, three mail touches, zero contracts. The list was the problem.
Four months, and I'm writing this down while the receipts are still in front of me.
Drove 612 addresses into the app between October and February. 380 came back with a mailing address I was willing to use. Three touches to those 380 over about ten weeks. Printing and postage through the app ran roughly $700. Skip trace and list cleanup another $190. Gas $260, and I put 46 hours of drive time in a spreadsheet because I wanted to know.
Result: 14 calls, 3 appointments where I actually stood in a kitchen, 0 contracts. Two of the three wanted retail and one had already listed with an agent the week before my second letter.
Where it went wrong: the logging step, not the mail. I drove the neighborhoods I like. Two of them are the zips everybody is renovating, and the "distress" I was logging was cosmetic. Peeling paint on a house whose owner has been there 14 years and has enormous equity is not a motivated seller, it's somebody who hasn't painted. When I went back through my photos afterward, 71 of the 612 had anything I'd now call structural or vacancy signal. I mailed the other 541 the same letter.
Second problem, smaller but expensive: 84 of the 380 came back undeliverable across the three touches. 22 percent. I paid for three touches on a chunk of addresses that were never going to arrive anywhere.
What I'd do differently: define the log criteria before the car moves and refuse to log anything that doesn't hit at least one of them. Tarp, boarded opening, roofline sag, mail piled on the porch, notice taped to the door. Dead grass on its own doesn't earn a stamp. And run the mailing addresses through a cleanup pass before touch one instead of finding out at touch three.