We built Pick an Agency to index marketing agencies and let them claim their own profiles for free. The claim flow seemed simple: the owner gets a link, verifies they really run the agency, done.
What we didn't anticipate was the friction at scale.
As volume grew, claims started backing up. Some agencies claimed the same profile more than once. Others never got their verification email. Our support channel filled with "I claimed my profile days ago, where is it?"
The problem was that it was manual. Every claim went into a queue and a small team reviewed each one by hand: checking the domain, cross-referencing reviews, flagging duplicates. It was slow, it didn't scale, and anyone in the queue waited days. For a free product with no SLA, that kind of wait quietly kills activation.
So we rebuilt it with conditional automation.
Now when an agency submits a claim, we verify ownership one of two automatic ways: a magic link sent to a work email on the agency's own domain, or a small snippet they place on their website (which doubles as a link back to their profile). We pair that with a check against existing verified profiles to catch duplicates. If ownership checks out and nothing looks like a duplicate, the profile approves itself in seconds.
If something is off, a mismatched email, a domain that doesn't line up, or a likely duplicate, it routes to a human. But now the human only sees the flagged edge cases, not the routine ones.
The result: turnaround dropped from days to seconds for legitimate agencies, and the queue stopped growing faster than we could clear it.
What surprised me: we initially hesitated to automate because we worried about bad actors gaming the system. But bad actors were a tiny fraction of claims. The real cost wasn't fraud prevention, it was friction for the overwhelming majority of honest agencies.
The lesson I keep coming back to: "free and manual" feels trustworthy until it doesn't. Speed and automation can build more trust than gatekeeping, as long as your automated rules are tight and your exception handling is real.
The trade-off we made: we approve clean claims in seconds, but we're more aggressive about flagging and reviewing anything that looks off. That second human layer is where the rare bad claim gets caught.
What's your experience with automation in user flows? When has removing friction actually reduced bad behavior instead of increasing it?
The biggest takeaway for me was realizing the bottleneck wasn't verification—it was making legitimate users wait because of edge cases. Designing for the 99% and routing only the suspicious 1% to humans feels like a much more scalable trust model.