Two of the most cringe-inducing things an outreach tool can do: message someone who works at a direct competitor, or pitch the wrong product angle to the right person. We hit both. Here's how we shut them down.
Failure mode 1: messaging the competition
Generic prospecting will happily surface someone whose company is a direct competitor of yours. Now you're cold-pitching your product to someone who sells the rival product for a living. At best it's a waste; at worst it tips your hand.
We added a competitor guard with two halves. First, a one-time purge: any prospect in the review queue whose employer matches your competitor list gets suppressed and their open drafts rejected, in one guarded sweep. Second, a gate on everything new: enrichment now checks employer against your competitor list at ingestion time, so these never reach the queue in the first place. You define who your competitors are; we make sure you never accidentally market to them.
Failure mode 2: leaking the wrong angle
The subtler one. Our messaging adapts its angle to the prospect, but a hardcoded example phrase ("MDR") was leaking into messages for people the MDR angle didn't apply to. The model was being primed with the wrong framing and quietly carrying it into the output.
An angle that's right for one prospect is wrong, sometimes embarrassingly wrong, for the next one. Angles have to be data, not constants.
We pulled the angle out of the prompt's few-shot examples and the voice strings, and made it configurable per competitor category: the category and the messaging angle are both editable, per-competitor, in the admin UI. Now the angle that reaches a draft is the one you chose for that situation, not a leftover example baked into a prompt months ago.
The throughline
Both fixes share a shape: move the judgement out of the code and into configuration you control. Who's a competitor, what angle fits which category: those are decisions about your market, and they belong to you, editable, not frozen in a prompt we wrote. The pipeline stays deterministic; the inputs stay yours.