Most qualification prompts are the RevOps checklist written out in prose. They read well and route badly, because nobody ever tested the checklist against the leads your SDRs actually accepted.
| Pitfall | What it looks like | How to check, before spending anything |
|---|---|---|
| Leakage | One column predicts the label far better than anything else | Was it written before the decision? If not, drop it. |
| Live re-fetch | The prompt scores better on refreshed enrichment than on the snapshot | Score both versions of the same rows. The gap is how much the refresh knows about the outcome. |
| Selection bias | Labelled rows skew toward demo requests and senior titles | Keep a small random slice of unrouted leads labelled, and weight rows by how likely they were to be labelled. |
| Redundant columns | Company and email domain always agree | Check whether one column determines another. Keep one. |
| The wrong metric | Accuracy rises while recall of real buyers falls | Put balanced accuracy or a cost-weighted score in the objective, and read the per-class table. |
Tools that run this loop: DSPy and its GEPA optimizer, bpto (ours, open source), and Impromptune, the studio built on it.