SKILL DETAIL
affiliate-fraud-detection
mbfinotti/partnerships-skills/affiliate-fraud-detection
Build the detection rule set an affiliate program manager uses to flag fraudulent affiliate activity, plus the investigation and escalation path behind it - cookie stuffing, fake lead and form-fill fraud, self-referral rings, traffic-quality baselines, commission holds and clawbacks, and separating real fraud from legitimate low-incrementality coupon or cashback partners. Covers B2B SaaS lead-gen and B2C ecommerce programs. Use whenever the user mentions affiliate fraud, suspicious affiliate traffic, invalid clicks or leads, bot traffic, or an affiliate whose numbers look too good, even if they never say fraud. Do NOT use for consumer refer-a-friend gaming - use mbfinotti/partnerships-skills@referral-abuse-guardrails instead.
Installation
npx skills add https://github.com/mbfinotti/partnerships-skills --skill affiliate-fraud-detection
스킬 파일
SKILL.md
최근 동기화 · 2026. 10. 23.
evals/evals.json›
{
"skill_name": "affiliate-fraud-detection",
"evals": [
{
"id": 1,
"prompt": "I run the affiliate program at Vellum & Thread, a DTC homeware brand. 340 affiliates, about $58K/month in commissions, last-click, 30-day cookie, and we approve and pay out 14 days after the order lands. I just read that 17% of affiliate traffic is fake and that it costs the industry $3.4B a year, which honestly terrified me. Our payout run is Thursday. What detection rules should we be running?",
"expected_output": "A response that fixes the money mechanics before writing rules: extend the validation/hold window toward 30-90 days, flag the missing clawback/chargeback-reserve clauses as a quarter-long contract track, reject the quoted vendor loss statistic, and only then sketch a provenance-tagged rule set defaulting to Hold & Investigate.",
"files": [],
"expectations": [
"Identifies the 14-day payout timing as the primary problem and recommends extending the commission validation/hold window to the 30-90 day range before any detection rule is written",
"States that the hold/validation window is a higher-leverage control than the detection rule set itself",
"Cites the finding that delaying affiliate payments by two to four months could eliminate more than 70% of fraud without decreasing profit, attributed to Edelman (Edelman & Brandi, Journal of Marketing Research, 2015)",
"Rejects the '17% of affiliate traffic is fake / $3.4B' figure as single-vendor marketing with circular citation and refuses to use it as a baseline or planning assumption",
"Notes that a 14-day window is far shorter than the 120-day standard Visa/Mastercard chargeback filing limit",
"Recommends clawback authority, negative-balance carry-forward, and a chargeback reserve as the only controls that recover commission already paid out",
"Flags that the contract work takes roughly a quarter (legal drafting plus partner re-assent) and cannot land before Thursday, while the hold window is a one-hour, reversible platform setting that can",
"Says thresholds must be derived from at least 90 days of Vellum & Thread's own per-affiliate data rather than adopted from a published number",
"Tags every numeric threshold it proposes with its provenance: vendor or agency rule of thumb, academic result, or derived from the program's own data",
"Assigns new rules to a Hold & Investigate band by default rather than to immediate suspension",
"Explains that throttling new commissions to zero pending review preserves evidence that an immediate ban destroys",
"Names, for each rule, the legitimate behavior that could trip it and the check that separates it from fraud",
"Does not present any vendor heuristic as an industry constant"
]
},
{
"id": 2,
"prompt": "Kestrel Outdoors here. Our browser-extension partner SaveSnap now wins last click on 38% of our checkouts and converts at roughly 6x the program average, but they barely send us any upstream traffic at all. My CFO looked at the report and wants them terminated for fraud and the last 90 days of commission clawed back. How do I build that case?",
"expected_output": "A refusal to treat last-click share and conversion rate as fraud evidence, a staged incrementality test starting with a practical pause, the contested evidence presented both ways, a repricing rather than enforcement path, and a separate list of what technical evidence would actually support enforcement.",
"files": [],
"expectations": [
"Refuses to treat a high last-click share or an above-average conversion rate as evidence of fraud on its own",
"States that low incrementality is a repricing problem, never a fraud or enforcement problem",
"Recommends running an incrementality test before any repricing or termination decision",
"Names the practical pause test (pause commissions for that partner type in one market for 4-6 weeks) as the first test to run, on value-per-effort grounds",
"Ranks the incrementality methods explicitly and places the user-level holdout last on efficiency despite it giving the cleanest causal read",
"States that attribution proxies are correlational and must never justify repricing a partner on their own",
"Presents the evidence as genuinely contested in both directions: the agency framework claim that last-click overstates affiliate contribution by 30 to 40%, and the comScore/Google finding that 94% of transactions driven by coupon-affiliate paid-search ads were incremental",
"Gives the test-outcome rule: no revenue movement when paused means reprice to a lower tier and keep the partner; revenue dropping means the partner is incremental, so leave the rate alone and recalibrate the rule that flagged them",
"Lists the evidence that would actually support enforcement: stand-down violations, attribution flipping seconds before purchase, referrer obfuscation, cookie-drop reproduction, or shared device/IP across accounts",
"Checks whether the program terms actually permit this checkout-moment behavior before alleging any violation",
"Warns that clawing back an already-paid commission without contractual clawback authority is itself a breach",
"Routes the repricing decision to commission-structure work rather than handling it as enforcement",
"Keeps any partner-facing communication neutral and avoids the word 'fraud' with the partner"
]
},
{
"id": 3,
"prompt": "SignalCrate is a B2B SaaS. We pay $150 per qualified lead to 44 partners on a CPL program, server-side postbacks, 90-day hold on commissions. Two partners we onboarded in June are sending great volume, but sales says roughly half of those leads never answer the phone. Give me the detection rules.",
"expected_output": "A B2B lead-gen rule set anchored on downstream outcome rates and form/velocity signals, with baselines derived from the program's own data, a manual-review recommendation at this roster size, legal gating on any cross-account identity rule, and explicit rejection of B2C click-timing rules.",
"files": [],
"expectations": [
"Builds the rule set around downstream outcome rates (lead-to-qualified, lead-to-demo-show, closed-won) rather than click-timing or session-duration signals",
"States explicitly that B2C click-timing rules applied to a B2B lead-gen program produce false positives",
"Explains that B2B lead-gen fraud surfaces weeks later in downstream rates, unlike B2C attribution theft which shows up in click-timing and chargeback signals within hours to days",
"Includes a form-fill speed rule (under roughly 3 seconds, no pointer movement, identical field-skip patterns) tagged as a vendor rule of thumb",
"Includes a conversion-velocity rule such as 3 or more leads in the same minute, or metronomic spacing around 30 seconds",
"Includes disposable-email and role-account domain share among the partner's leads as a signal",
"Includes duplicate contact data (same phone, email, address, or device fingerprint across supposedly unrelated leads or companies)",
"Names the legitimate trip risk for the velocity rule as a webinar or conference-scan batch upload, checked against the event calendar",
"Names autofill power users as the legitimate trip risk for the form-fill-speed rule and pairs it with a second signal before acting",
"Recommends manual review plus IP/email validation over automated per-event scoring at 44 partners, and names roughly 50 affiliates or $50K/month commission spend as the point where that order flips",
"Derives the lead-to-qualified and lead-to-demo-show thresholds from SignalCrate's own 90-day per-partner baseline rather than quoting a published rate",
"Places any duplicate-contact-data or device-fingerprint rule behind a legal review gate that names the lawful basis, the retention period, and who can access the matched records",
"Notes that AI-generated synthetic traffic erodes behavioral heuristics, so server-side postbacks and downstream outcomes should carry more weight than session behavior"
]
},
{
"id": 4,
"prompt": "One of our affiliates at Brightline Pet just lit up every alarm we have: chargebacks hit 7% on his orders last month. I've already emailed him telling him we caught him committing affiliate fraud, and I'm deleting his account this afternoon. We're on one of the big networks and they have a compliance team, so they'll pick it up from here, right? Anything else I should be doing?",
"expected_output": "A correction of the instant-deletion and partner-facing wording, an evidence-first sequence with a dossier, the full tier-3 enforcement ladder in order, an accurate read of what the network will and will not do, and an appeal window with independent sign-off.",
"files": [],
"expectations": [
"Warns that deleting the account destroys the evidence a network report or legal escalation would need",
"States that evidence must be collected before the affiliate is contacted",
"Corrects the outbound message: never use the word 'fraud' with the flagged partner, and keep external wording neutral and factual, such as commissions under review pending a routine quality check with a date for the next update",
"States the network will not police the program, because networks earn a share of commission volume and their compliance is reactive, acting only on evidence-backed complaints",
"Notes networks run cross-client blacklists rather than per-brand surveillance, so nothing happens unprompted",
"Requires an investigation dossier and lists its fields, including affiliate and platform ID, rules triggered with timestamps, baseline versus observed values, evidence artifacts, financial exposure, declared traffic source versus observed referrers, prior warnings, recommended action with reviewer name, and appeal status with deadline",
"Runs the tier-3 enforcement ladder in order: suspend, reverse or void violation-period commissions, claw back paid amounts, terminate, network report, then legal referral",
"Places a 7% chargeback rate above the starting threshold of 3% in a rolling 30 days and assigns Suspend & Escalate",
"Tags the 3% chargeback threshold as a vendor rule of thumb rather than an industry constant",
"Requires the case to be reviewed or signed off by someone other than the analyst who detected it",
"Opens a published appeal window of roughly 14 days with evidence submitted in writing before termination is final",
"Flags that stolen-card chargebacks can land 60 to 180 days after the sale, so the hold window alone never recovers commission already paid",
"Warns that an unfounded fraud allegation carries its own liability and that suspension can breach the published program terms"
]
},
{
"id": 5,
"prompt": "I'm the only person on the partner side at Ferra Analytics. We have 14 affiliates and roughly $9K a month in commissions. Our tracking is homegrown and there is genuinely no way to add a validation delay: commissions approve the instant an order lands. I have maybe two hours a week for this. Build me something that catches bad partners.",
"expected_output": "A re-ranked plan that deletes the hold-window rung outright, makes clawback clauses mandatory, drops statistical outlier math at this roster size, collapses the 24-48h review into a monthly batch, and keeps only near-zero-effort controls.",
"files": [],
"expectations": [
"Deletes the hold/validation window rung from the deliverable rather than parking it as a future step, and says explicitly that the platform rules it out",
"States the remaining control order becomes rule set, then new/high-risk partner terms, then the clawback clause set",
"States that clawback authority, negative-balance carry-forward, and a chargeback reserve stop being optional once the hold window is unavailable",
"Skips 2-standard-deviation outlier math and per-event scoring at 14 partners, calling them false precision on a sample that small",
"Recommends inspecting the partner list by hand instead, and names roughly 20 partners as the point below which the statistical rungs are dropped",
"Collapses the 24-48 hour Hold & Investigate cross-functional review into Watch plus a single monthly batch review",
"Names the two-hours-per-week review ceiling as the reason for that collapse",
"Keeps list filtration (data-center ASN, declared bots, non-browser user agents) because it costs near-zero effort and requires no judgment call",
"Ranks the signal families by value per unit of effort and leads with list filtration, then downstream outcomes",
"Does not propose device fingerprinting or a purchased fraud-scoring tool as an early move",
"Recommends longer payout terms (net-60 or net-90) and stricter application filters for new and high-risk partners as the substitute available on this platform",
"Says which of the stated constraints moved which control in the ranking"
]
},
{
"id": 6,
"prompt": "We finished a first draft of our affiliate fraud rules at Northgate Supply and my VP asked what good looks like. I'd like to be able to tell her we catch 100% of fraud. Complication: we've never had a confirmed incident, so there's nothing historical to test against. How do I prove the rules work?",
"expected_output": "A rejection of the 100% target, the paired catch-rate and false-positive threshold with its calibration anchors, a backtest design, an honest handling of the missing incident history, and the KPI set reported in dollars.",
"files": [],
"expectations": [
"Refuses the 100% catch target and explains it guarantees over-blocking when no false-positive ceiling is set alongside it",
"States that detection rate and false-positive rate are only meaningful as a pair, never catch rate alone",
"Gives the pass pair: at least 80% of known incidents fire at Hold & Investigate or above, and at most 5% of sampled flags are false positives",
"Labels that pair as a calibration anchor rather than an industry constant",
"Cites Snyder & Kanich's two-feature timing classifier at roughly 2-second thresholds (Journal of Cybersecurity, 2016): 93.3% accuracy, 1.5% false positive, 5.2% false negative",
"Handles the absent incident history by saying so in the deliverable and scheduling the threshold as a first-quarterly-review gate on sampled flags, rather than inventing a backtest",
"Describes the backtest design as historical confirmed incidents plus a random sample of both flagged and unflagged partners reviewed manually",
"Lists the KPI set: flagged rate, confirmed-fraud rate, false-positive rate from sampled review, reversed-commission share, and recovered spend",
"Reports results to leadership in commission-loss dollars saved and recovered rather than in vague risk language",
"Says the false-positive rate must come from sampled manual review rather than from partner complaints alone",
"States that if both halves of the threshold cannot be met, the deliverable names the missing data or history instead of shipping an untested rule set",
"Triggers a program-level escalation (revisit hold windows, partner vetting, tooling) when confirmed-fraud rate or reversed-commission share climbs materially quarter over quarter",
"Recommends retiring rules that only ever produce false positives"
]
},
{
"id": 7,
"prompt": "We want to catch self-referral rings at Orla Cosmetics. My engineer says he can fingerprint devices, match billing addresses against click IPs, and cross-reference emails and phone numbers between affiliate accounts and customer accounts. He reckons he can have it live in three weeks. Should we green-light it?",
"expected_output": "A hold on the three-week plan: classify the signals as personal-data processing, state the three items counsel needs, correct the effort estimate to a quarter, re-order the build so list filtration and downstream outcomes come first, and name the condition that promotes identity signals anyway.",
"files": [],
"expectations": [
"Does not green-light shipping the cross-account identity rules in three weeks as scoped",
"Classifies device fingerprinting, cross-account email/phone/address matching, and click-IP-to-billing-address comparison as processing of personal data",
"Requires three things to be stated before the design goes to counsel: the lawful basis, the retention period, and who can see the matched records",
"States that fraud prevention is a commonly cited lawful basis but not an automatic one, and that 'we needed it to catch fraud' is not a basis at all",
"Cites the UK regulator's published position that deploying fingerprinting requires fair choices and possibly consent even outside advertising",
"Ranks cross-account identity last of the four signal families on value per unit of effort while noting it sits at the top on evidence value",
"Prices its effort at roughly a quarter covering lawful basis, retention design, access control, and counsel sign-off, contradicting the three-week estimate",
"Recommends building list filtration first and downstream outcomes second, before adding cross-account identity",
"Names the condition that promotes cross-account identity anyway: a case that has to survive network compliance or a wire-fraud referral, where a dossier without a shared-fingerprint or shared-payout finding rarely gets acted on",
"Notes that no volume of timing signal substitutes for a shared-identity finding in such a dossier",
"Names a legitimate trip risk for shared-identity rules, such as an agency submitting on behalf of several clients, or shared corporate networks and VPNs",
"States that a data-center or VPN flag on a single lead is weak while the same fingerprint recurring across many supposedly unrelated leads is strong"
]
},
{
"id": 8,
"prompt": "Sales at Harrow & Finch keep getting credited to one affiliate called DealBurrow, but nobody on our team has ever seen their site send us a single visitor. The commissions just appear on customers we're fairly sure found us organically through search. We track with a client-side pixel. Walk me through what to do.",
"expected_output": "A cookie-stuffing investigation: explain why the client-side pixel cannot settle it, list the tells, specify the reproduction and capture steps, check for typosquatted and intermediate domains, and set the band and legal footing without alleging a crime prematurely.",
"files": [],
"expectations": [
"States that a client-side pixel cannot distinguish a stuffed cookie from an organic one, and that server-side signal capture is required",
"Names the tell of commissions landing on customers with no meaningful referral touchpoint",
"Names the tell of near-zero time between the recorded click and the cookie being set",
"Specifies the cookie-drop reproduction test: clean browser, visit the suspect property, record whether an affiliate cookie is set without any click",
"Requires a timestamped redirect-chain capture along with the tracking URLs",
"Requires server-log review for hidden iframe loads and referrer patterns",
"Compares the traffic source DealBurrow declared at application against the referrers actually observed",
"Checks for typosquatted or misspelled lookalike brand domains and unknown intermediate domains in the redirect chain",
"Cites Chachra, Savage & Voelker (IMC 2015): 84% of stuffed cookies in their crawl arrived via typosquatted or intermediate domains and over 91% via redirects",
"Applies the under-2-second time-on-site-after-cookie-set threshold and tags it as an academic result rather than a vendor heuristic",
"Notes that cookie stuffing is prosecutable as US federal wire fraud and that the eBay cases are the only adjudicated dollar figures, including roughly $28M in commissions drawing five months of federal prison and a $25,000 fine, and a second defendant sentenced to fifteen months within about $5.2M paid",
"Warns against alleging a crime without both a clear contract violation and technical evidence, and says to enforce the contract instead",
"Assigns the case to Hold & Investigate with commissions throttled to zero and a dossier opened, rather than immediate suspension"
]
},
{
"id": 9,
"prompt": "Cadence Studio sells annual software subscriptions at $890 a year through about 120 affiliates. We just ate $18K of chargebacks in a single month, traced back to two affiliates whose 'customers' disputed in month 11 and month 14. We already run a 60-day commission hold. What do we change?",
"expected_output": "An explanation that no hold window reaches a month-14 dispute, the two chargeback filing clocks, promotion of the clawback clause set above every other control for this program, the three contractual pieces with the reserve sized, and the hold window pushed to the long end in parallel.",
"files": [],
"expectations": [
"States that a 60-day hold window cannot reach a dispute filed in month 11 or month 14, and that no realistic hold window can",
"Gives the standard Visa/Mastercard chargeback filing limit of 120 days from the transaction",
"Gives the services-not-received, delayed-delivery and not-as-described limit: 120 days from the expected delivery date, capped at 540 days from the transaction",
"Promotes the clawback clause set above every other control for this program and names the reason: subscription or delayed-delivery goods, plus a chargeback the program has already paid out on",
"Specifies all three contractual pieces: clawback authority, negative-balance carry-forward, and a chargeback reserve",
"Defines negative-balance carry-forward as deducting from future payouts until the balance is offset",
"Sizes the chargeback reserve at roughly 10-15% of commissions, released quarterly while the chargeback rate stays below threshold",
"States that clawing back a paid commission without those clauses is itself a breach",
"Prices the contract change at roughly a quarter including legal drafting and partner re-assent, and notes it is barely reversible once shipped",
"Moves the hold window to the long end of the 30-90 day range because this is a subscription and high-chargeback vertical",
"Identifies the pattern as stolen-card transaction fraud, whose tell is chargebacks landing 60 to 180 days later concentrated on one affiliate",
"Notes the hold window change is roughly an hour of reversible platform configuration, so it ships immediately while the contract work runs in parallel"
]
},
{
"id": 10,
"prompt": "Our rules at Peakline Gear flagged eleven partners last week and I'm ready to suspend all of them this morning. Six tripped the volume-anomaly rule during our Black Friday preview week. Three are new partners who beat the 2-SD conversion outlier rule inside their first ten days. The last two are our biggest partners; between them they drive 78% of program sales. Our detection vendor also tells us their behavioral model catches 99% of bot traffic, which is reassuring. Sign off?",
"expected_output": "A refusal to bulk-suspend, with each cohort separated: promo-window annotation, small-sample instability on new partners, the power law sent to audit not enforcement, the vendor efficacy claim treated as unverified, and the condition under which Suspend & Escalate should still be promoted.",
"files": [],
"expectations": [
"Refuses to sign off on suspending all eleven partners",
"Excludes the six Black Friday preview flags by annotating the campaign calendar into the anomaly rules rather than lowering the global threshold",
"States that coordinated legitimate spikes during launch or promo windows mechanically resemble bot bursts",
"States that 2-standard-deviation outlier math is unstable on the small samples new partners produce",
"Replaces the outlier rule for the three new partners with first-week watchpoints and longer payout terms such as net-60 or net-90",
"States that a handful of partners driving most sales is the normal affiliate power law, not a fraud signal",
"Sends the two concentrated partners to an audit and explicitly not to enforcement",
"Treats the vendor's 99% bot-detection claim as an unverified detection-efficacy claim rather than a specification to rely on",
"Notes that AI-generated synthetic traffic engineers realistic scroll depth, dwell time, and session lifecycle, defeating first-generation behavioral filters",
"Recommends weighting server-side signals and downstream outcomes such as revenue per visitor, lead quality, and retention, because synthetic traffic looks normal behaviorally while downstream outcomes stay at zero",
"Warns that over-blocking on untuned vendor thresholds churns real partners and drops program revenue",
"Names Suspend & Escalate as the band the efficiency ranking starves, and gives the conditions that promote it: confirmed-fraud rate or reversed-commission share climbing quarter over quarter, or a case that has to survive network compliance"
]
}
],
"trigger_queries": [
{ "query": "Build me a detection rule set for fraudulent affiliate activity", "should_trigger": true },
{ "query": "How do I catch cookie stuffing in our affiliate program?", "should_trigger": true },
{ "query": "one of our affiliates has numbers that look way too good and I don't trust them", "should_trigger": true },
{ "query": "our CPL partners are sending leads that never answer the phone", "should_trigger": true },
{ "query": "set up an investigation process before we pay the next affiliate commission cycle", "should_trigger": true },
{ "query": "affiliate fraud detection rules for a B2B SaaS lead gen program", "should_trigger": true },
{ "query": "I think a publisher is stuffing cookies onto our checkout traffic", "should_trigger": true },
{ "query": "how long should our commission hold window be so we stop paying out on bad orders", "should_trigger": true },
{ "query": "we took $12K of chargebacks that all trace back to one affiliate's sales", "should_trigger": true },
{ "query": "audit our affiliate traffic quality", "should_trigger": true },
{ "query": "what's the difference between a coupon partner poaching last click and actual fraud", "should_trigger": true },
{ "query": "someone is bidding on our brand terms and I'm fairly sure it's one of our own affiliates", "should_trigger": true },
{ "query": "the leads our partners send are all disposable email addresses", "should_trigger": true },
{ "query": "how do I flag self-referral in our partner program", "should_trigger": true },
{ "query": "how do I know if a partner is running a multi account ring", "should_trigger": true },
{ "query": "need a triage process for suspicious publisher activity on our network", "should_trigger": true },
{ "query": "what should be in the evidence file before we suspend an affiliate", "should_trigger": true },
{ "query": "should we terminate this partner or just hold their commissions", "should_trigger": true },
{ "query": "half our conversions come from one browser extension and I can't tell if it's theft", "should_trigger": true },
{ "query": "invalid traffic in our partner program", "should_trigger": true },
{ "query": "our partner sends thousands of clicks and almost zero sales, is that normal", "should_trigger": true },
{ "query": "write rules that separate bot traffic from real affiliate traffic", "should_trigger": true },
{ "query": "how do I escalate a bad affiliate to the network's compliance team", "should_trigger": true },
{ "query": "I want to claw back commissions we already paid to an affiliate", "should_trigger": true },
{ "query": "what thresholds should trigger a commission hold on a publisher", "should_trigger": true },
{ "query": "detect fake form fills from our lead partners", "should_trigger": true },
{ "query": "is a 14 day validation window long enough", "should_trigger": true },
{ "query": "our affiliate conversions all happen within two seconds of the click", "should_trigger": true },
{ "query": "how do we prove an affiliate is hijacking attribution at checkout", "should_trigger": true },
{ "query": "two partner accounts share the same payout destination, what now", "should_trigger": true },
{ "query": "my program manager wants to ban an affiliate today, is that a good idea", "should_trigger": true },
{ "query": "help me build traffic quality baselines per affiliate", "should_trigger": true },
{ "query": "a lot of our partner clicks come from data center IPs, should I block them", "should_trigger": true },
{ "query": "review this partner before we release their payout, their numbers are strange", "should_trigger": true },
{ "query": "when should I worry about a partner's lead to qualified rate being below everyone else's", "should_trigger": true },
{ "query": "I need a monitoring cadence for our publisher program", "should_trigger": true },
{ "query": "we've never had a confirmed incident, how do I know our rules actually work", "should_trigger": true },
{ "query": "how many false positives is acceptable when flagging partners", "should_trigger": true },
{ "query": "an affiliate is appealing our decision, what process should we run", "should_trigger": true },
{ "query": "build watchlist criteria for new affiliates in their first month", "should_trigger": true },
{ "query": "misspelled lookalike domains are redirecting people through our affiliate links", "should_trigger": true },
{ "query": "our biggest publisher's traffic looks synthetic to me", "should_trigger": true },
{ "query": "should we use device fingerprinting to catch affiliate abuse", "should_trigger": true },
{ "query": "which affiliate signals are worth instrumenting first", "should_trigger": true },
{ "query": "our network says they monitor for this, do I still need my own controls", "should_trigger": true },
{ "query": "what do I say to a partner whose commissions we're holding", "should_trigger": true },
{ "query": "two of our partners signed up the same week and convert almost identically", "should_trigger": true },
{ "query": "program payouts are up 40% and revenue is flat, something is off with our publishers", "should_trigger": true },
{ "query": "how do I spot incentivized traffic sent to an offer that doesn't allow it", "should_trigger": true },
{ "query": "I want a rule table with severity bands and a mandated action per rule", "should_trigger": true },
{ "query": "how do I stop paying commission on stolen card orders coming from a partner", "should_trigger": true },
{ "query": "commissions are firing for people who never visited our site from that partner", "should_trigger": true },
{ "query": "who should sign off on suspending a publisher account", "should_trigger": true },
{ "query": "quality control for a 300 affiliate ecommerce program", "should_trigger": true },
{ "query": "is it worth buying an automated scoring tool when we only have 30 partners", "should_trigger": true },
{ "query": "put together the KPIs my VP should see on program integrity", "should_trigger": true },
{ "query": "we approved an affiliate who sent nothing for two weeks then 60 conversions in one day", "should_trigger": true },
{ "query": "customers are creating fake accounts to farm our refer-a-friend rewards", "should_trigger": false },
{ "query": "set velocity limits and cooldowns on our refer-a-friend program", "should_trigger": false },
{ "query": "cap how many referral rewards a single customer can earn", "should_trigger": false },
{ "query": "what identity verification should gate our customer referral rewards", "should_trigger": false },
{ "query": "our give-$20-get-$20 program is being gamed by existing users", "should_trigger": false },
{ "query": "audit this month's affiliate payout run for rate errors before we send it", "should_trigger": false },
{ "query": "we double counted some conversions in the last commission run, help me reconcile", "should_trigger": false },
{ "query": "check our partner payouts for currency conversion and rounding mistakes", "should_trigger": false },
{ "query": "which affiliates are missing tax forms ahead of this payout", "should_trigger": false },
{ "query": "recompute the per-line commission tiers in our March payout file", "should_trigger": false },
{ "query": "draft the prohibited tactics clauses for our affiliate agreement", "should_trigger": false },
{ "query": "write our affiliate program terms and conditions", "should_trigger": false },
{ "query": "what clauses do we need for EU P2B compliance in our partner agreement", "should_trigger": false },
{ "query": "draft the termination mechanics into our affiliate contract", "should_trigger": false },
{ "query": "should we pay revenue share or a flat CPA to our affiliates", "should_trigger": false },
{ "query": "what commission rate can we afford given our unit economics", "should_trigger": false },
{ "query": "design a tiered payout ladder for our top affiliates", "should_trigger": false },
{ "query": "how long should our recurring commission run before it caps", "should_trigger": false },
{ "query": "reprice our coupon partners onto a lower commission tier", "should_trigger": false },
{ "query": "does this affiliate's Instagram caption meet FTC disclosure rules", "should_trigger": false },
{ "query": "review our creator's video script for #ad placement compliance", "should_trigger": false },
{ "query": "check whether this affiliate blog post discloses the relationship properly", "should_trigger": false },
{ "query": "define the metrics and layout for our affiliate performance dashboard", "should_trigger": false },
{ "query": "what should the affiliate program ROI view show our CFO", "should_trigger": false },
{ "query": "set alert thresholds on our top-affiliate dashboard", "should_trigger": false },
{ "query": "write the cold email we send to recruit new affiliates", "should_trigger": false },
{ "query": "how do we source and tier affiliate prospects", "should_trigger": false },
{ "query": "design the welcome sequence for newly approved affiliates", "should_trigger": false },
{ "query": "our approved affiliates never send a first conversion, build me a nudge plan", "should_trigger": false },
{ "query": "build a per-partner scorecard with weights and red-flag thresholds", "should_trigger": false },
{ "query": "structure our partner QBR agenda", "should_trigger": false },
{ "query": "what's the underperformance ladder for a channel partner missing targets", "should_trigger": false },
{ "query": "two partners are claiming the same deal, what are the rules of engagement", "should_trigger": false },
{ "query": "design our deal registration protection window", "should_trigger": false },
{ "query": "redesign our silver and gold partner tiers and the promotion rules", "should_trigger": false },
{ "query": "model the unit economics of this reseller relationship", "should_trigger": false },
{ "query": "is our partner CAC lower than our direct CAC", "should_trigger": false },
{ "query": "negotiate usage rights and exclusivity with a creator", "should_trigger": false },
{ "query": "write the campaign brief for an influencer we just signed", "should_trigger": false },
{ "query": "shortlist creators by engagement quality and brand safety", "should_trigger": false },
{ "query": "this influencer's engagement looks bought, should we still sign them", "should_trigger": false },
{ "query": "our Google Ads account is getting click fraud from a competitor", "should_trigger": false },
{ "query": "add negative keywords to stop irrelevant search traffic", "should_trigger": false },
{ "query": "our ad platform conversion tracking is double counting purchases", "should_trigger": false },
{ "query": "diagnose why our ad account's CPA jumped last month", "should_trigger": false },
{ "query": "our direct checkout is getting stolen card orders, what payment screening should we add", "should_trigger": false },
{ "query": "write a chargeback representment letter to our acquirer", "should_trigger": false },
{ "query": "build an account takeover detection model for our app logins", "should_trigger": false },
{ "query": "our SaaS free trial is being abused by repeat signups from the same people", "should_trigger": false },
{ "query": "what's our lawful basis for the marketing analytics cookies on our site", "should_trigger": false },
{ "query": "build the enablement and certification track for our new resellers", "should_trigger": false },
{ "query": "how do we detect bots scraping our pricing page", "should_trigger": false },
{ "query": "should our referral reward fire on signup or on first payment", "should_trigger": false },
{ "query": "set up rate limiting on our public API to stop abuse", "should_trigger": false },
{ "query": "what's a good chargeback rate for a DTC brand and how do we bring ours down", "should_trigger": false },
{ "query": "our marketplace sellers are posting fake reviews, how do we detect that", "should_trigger": false },
{ "query": "map our partner ecosystem and find the coverage gaps", "should_trigger": false }
]
}
references/detection-signals.md›
# Detection Signal Catalogue
Every number carries a provenance tag. Treat tagged values as starting points to tune against the program's own baseline - never as industry constants.
- **[VENDOR]** - vendor or agency rule of thumb, published without independent validation.
- **[ACADEMIC]** - peer-reviewed result.
- **[DERIVE]** - a threshold that only means anything against the program's own data; compute it there.
## Baseline derivation (do this before setting any threshold)
1. Pull at least 90 days of per-affiliate data: conversion rate, click-to-conversion time (CTIT), session duration, refund/chargeback rate; for B2B add lead-to-qualified and lead-to-demo-show rates.
2. Compute program-wide mean and standard deviation per metric; store per-affiliate values against them.
3. Watchlist affiliates beyond 2 standard deviations from program norms - a published agency workflow [VENDOR], not a standard, but a sane outlier definition to start from.
4. Re-derive quarterly; baselines drift as the partner mix changes.
## Which signal family to build first
The table below is a catalogue, not a build order. Four families compete for the same engineering and analyst hours:
- value (most first): `downstream outcomes > cross-account identity > timing > list filtration`
- effort (most first): `cross-account identity > timing > downstream outcomes > list filtration`
- compliance cost (most first): `cross-account identity > everything else`
- efficiency (best first): `list filtration > downstream outcomes > timing > cross-account identity`
- **List filtration** (data-center ASN, declared bots, non-browser UA). Near-zero effort, no judgment call, no personal data. Worth little on its own, but at that cost the ratio is unbeatable, and it clears the crude volume the other three would otherwise be tuned against.
- **Downstream outcomes** (lead-to-qualified, demo-show, chargeback rate, revenue per visitor). A week of CRM/ledger joins. The only family AI-generated synthetic traffic cannot fake, since it has to produce real customers to beat it.
- **Timing** (CTIT, time on site, form-fill speed). A week of instrumentation. Strongest published accuracy of any family, but only against B2C stuffing, and behavioral heuristics are the ones synthetic traffic erodes fastest.
- **Cross-account identity** (device fingerprints, duplicate contact data, shared IP or payout destination). A quarter: lawful basis, retention design, access control, counsel sign-off - see the `[LEGAL REVIEW]` gate below.
Build list filtration first, then downstream outcomes; skip nothing above them before adding anything below.
That order starves cross-account identity - top of the evidence value, bottom of the ratio. Promote it the moment a case has to survive network compliance or a wire-fraud referral: a dossier with no shared-fingerprint or shared-payout finding rarely gets acted on, and no volume of timing signal substitutes for it.
## Signal table
| Signal | Starting threshold | B2C / B2B | Provenance |
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | ------------ | ----------------------------------------------------- |
| Redirect to affiliate link faster than a human could read the page | under ~2 seconds | B2C | [ACADEMIC] Snyder & Kanich 2016 |
| Time on merchant site after cookie set | under ~2 seconds | B2C | [ACADEMIC] Snyder & Kanich 2016 |
| Session duration | under 5 seconds flags stuffing | Both | [VENDOR] |
| Click-to-conversion time | near-zero, or set per-offer floor/ceiling | Both | [VENDOR]; one platform flags under 30s or over 15min |
| Conversion-rate outlier | 2 SD above program CR → Watch | Both | [VENDOR] agency workflow |
| Conversion velocity | 3+ conversions in the same minute, repeatedly; evenly spaced ~30s intervals | B2B lead-gen | [VENDOR] |
| Form-fill speed | under 3 seconds, no mouse movement, identical field-skip patterns | B2B lead-gen | [VENDOR] |
| Chargeback rate | above 3% in rolling 30 days → suspend + net-60/90 terms | B2C | [VENDOR] |
| Clicks with near-zero conversions elsewhere | high volume, no sales - classic stuffing tell | B2C | [DERIVE] vs own click-to-sale norm |
| Lead-to-qualified rate | materially below program norm, sustained | B2B | [DERIVE] |
| Lead-to-demo-show rate | materially below program norm, sustained | B2B | [DERIVE] |
| Sales concentration | ~80%+ of program sales from a handful of affiliates → audit, not enforcement | Both | [VENDOR] practitioner flag - re-verify before quoting |
| New-affiliate application | free-email provider, generic phone, thin/no site → manual review or stricter terms | Both | [VENDOR] platform practice |
The two ~2-second timing features are the strongest single published result: a two-feature decision tree hit 93.3% accuracy, 1.5% false positive, 5.2% false negative against human labeling (Snyder & Kanich, _Journal of Cybersecurity_ 2016). They are the empirical basis for every "near-zero CTIT" vendor heuristic.
## Data-protection caveat on every cross-account identity signal - `[LEGAL REVIEW]`
Device fingerprinting, matching emails/phones/addresses across accounts, and comparing click IP to billing address are all processing of personal data, and several sit outside anything a cookie banner covers. The UK regulator's published position is that deploying fingerprinting requires fair choices and possibly consent even outside advertising.
Before shipping a rule built on these signals, state each of the following, then route the design to counsel:
- The lawful basis.
- The retention period.
- Who can see the matched records.
Fraud prevention is a commonly cited basis, not an automatic one, and "we needed it to catch fraud" is not a basis at all.
This applies to every signal below that identifies a person or a device across accounts, and to the cross-reference step in the investigation reference.
## Signals without defensible published numbers - all [DERIVE]
- Blank or suspicious HTTP referrer headers; declared traffic source vs observed referrers.
- Data-center ASN, VPN/proxy, TOR exit nodes (GIVT-class; list-filter these outright).
- Geo mismatch between click IP and billing address.
- Duplicate emails, phones, addresses, or device fingerprints across leads or accounts.
- Disposable-email and role-account domains on B2B leads.
- High traffic with low customer lifetime value; high lead volume with zero customers.
- New-affiliate first week: approved affiliates who never send traffic, then spike; apply stricter filters and longer payout terms (net-60/90) to new partners.
- Shared registration IP/billing between affiliate and customer accounts (self-referral).
## Structural cross-check principle
Never trust client-reported data standalone. Cross-check what a click claims about itself (declared UA, source, geo) against an independently observed layer: server-side postbacks vs client pixels, your CRM/order ledger vs the platform's reported conversions, edge-observed IP/ASN vs claimed location. A mismatch between the client's story and the network's story is itself a signal.
## Statistics to distrust
- "17% of affiliate traffic is fake / $3.4B lost": single anti-fraud vendor's marketing study, circularly cited across the industry. Never use as a baseline.
- "30% of losses tied to fraud", "8-15% of commissions lost", "IVT is ~40% of web traffic": all vendor estimates with commercial incentive.
- The only adjudicated dollar figures are the eBay wire-fraud court records; the strongest prevalence studies are a decade old and disagree by methodology.
## Manual review or automated scoring
- efficiency (best first): `manual review + IP/email validation > automated per-event scoring` - and the order flips above roughly 50 affiliates or $50K/month commission spend [VENDOR].
- effort (most first): `automated per-event scoring > manual review` - scoring costs a quarter to procure, integrate and tune before it flags anything; manual review costs analyst hours from day one and never stops.
Below the trigger, an analyst reading the partner list beats a scoring model that has too few events to calibrate against. Above it, the analyst hours grow with the roster while the model's do not, which is the whole reason the order flips. Behavioral heuristics (session duration, scroll depth) are being eroded by AI-generated synthetic traffic - anchor automation on server-side postbacks and downstream outcomes, and treat recent detection-efficacy claims as unverified.
references/false-positives-and-incrementality.md›
# False Positives and Incrementality
The most expensive detection failure is not missed fraud - it is terminating a legitimate partner. This file separates the two.
## Legitimate-but-often-non-incremental partner taxonomy
Coupon, cashback, loyalty, browser-extension, retargeting, and brand-search partners are legitimate businesses that sit near the checkout moment and win last-click credit. That looks like poaching in a last-click report, but is contractually permitted unless the terms say otherwise. Low incrementality is a repricing problem, not fraud - the fix is a lower commission tier, and repricing belongs to `mbfinotti/partnerships-skills@affiliate-commission-structure`.
Reserve fraud enforcement for cases with technical evidence:
- Cookie-drop reproduction.
- Referrer obfuscation.
- Stand-down violations.
- Shared device/IP across accounts.
- Stolen-card chargebacks.
## The evidence is genuinely contested - test, don't assume
- Against coupon partners: an agency framework holder states incrementality testing "consistently shows [last-click] overstates affiliate contribution by 30 to 40%" (agency claim, commercial incentive).
- For coupon partners: a comScore/Google study found 94% of transactions driven by coupon-affiliate paid-search ads were incremental - only 6% of purchasers were already on the retailer's site before clicking.
Both cannot be generalized; run the program's own test before repricing or restricting anyone.
## Incrementality test design
Four methods answer the same question. Listed in efficiency order, not rigor order:
- value (most first): `user-level holdout > geo test > practical pause > attribution proxies`
- effort (most first): `user-level holdout > geo test > practical pause > attribution proxies`
- compliance cost (most first): `practical pause > geo test > user-level holdout > attribution proxies`
- efficiency (best first): `practical pause > attribution proxies > geo test > user-level holdout`
- **Practical pause test**: pause commissions for one partner type in one market for 4-6 weeks; if overall conversion and revenue do not move, those partners were capturing demand, not creating it. An hour to switch off, then waiting. Most exposed of the four contractually: it visibly singles out a partner type, so check notice obligations in the terms before flipping anything.
- **Attribution proxies**: compare last-click vs multi-touch, test alternate attribution windows, separate new-customer share. An hour on data already collected, and cheap enough to run first - but correlational, so it only decides whether a real test is worth running. Never reprice a partner on a proxy alone.
- **Geo test**: suppress the partner type in matched regions for 4-6 weeks; validate in a pre-test period that treatment and control regions track within 3-5% before trusting the readout. A week to match regions and validate the pre-period. Same contractual act as the pause, drawn by geography instead of partner type.
- **User-level holdout**: withhold exposure from a random control group; compare conversion. Cleanest causal read, and randomization means no partner is visibly singled out. Costs a quarter: randomization in the tracking layer, engineering time, and enough scale to detect the effect.
Start with the pause test. Move up to a geo test when the market is too small or too seasonal for a single-market readout to separate the partner's effect from noise.
That order starves the user-level holdout - best evidence, worst ratio, beaten every round. Promote it when the repricing decision is large enough that the partner will contest it, or when the partner type is big enough that a pause readout's noise band swallows the effect being measured. If the terms forbid suppressing a partner without notice the program cannot give, delete the pause and geo rungs from the plan and say so rather than leaving them for later: run proxies and put the contract change on the roadmap.
| Test outcome | Action |
| ------------------------------- | -------------------------------------------------------------------------------------------------------- |
| No revenue movement when paused | Reprice to a lower tier, keep the partner - checkout-moment conversion assistance retains nuanced value. |
| Revenue drops | The partner is incremental: leave the rate alone and recalibrate whatever rule flagged them. |
## Structural false-positive environments
Some legitimate situations mechanically resemble fraud. Baseline against known-good behavior instead of lowering the global threshold:
- Launch or promo windows: coordinated legitimate spikes look like bot bursts - annotate campaign calendars into the anomaly rules.
- Concentration: a handful of partners driving most sales is the normal affiliate power law - audit it, never auto-enforce on it.
- Corporate networks and VPNs on B2B traffic: a data-center or VPN flag on one lead is weak; the same fingerprint across many "unrelated" leads is strong.
- New partners with thin history: 2-SD outlier math is unstable on small samples - hold them to first-week watchpoints and longer payout terms, not outlier rules.
- Bulk B2B referral events (webinars, conference scans): many leads, same timestamp window, same IP block - legitimately.
## Process controls that keep false positives cheap
Four controls, in efficiency order - build downward, and stop wherever the effort ceiling lands:
- value (most first): `appeals process > per-rule trip-risk naming > partner classification > false-positive KPI`
- effort (most first): `appeals process > false-positive KPI > partner classification > per-rule trip-risk naming`
- efficiency (best first): `per-rule trip-risk naming > partner classification > false-positive KPI > appeals process`
- **Per-rule trip-risk naming**: every rule row names the legitimate behavior that could trip it and the discriminating check. Near-zero - one more column in a table already being written - and it kills the most common false positive at design time, before anyone is flagged.
- **Partner classification**: segment by role (content, creator, review, coupon, cashback, loyalty, comparison, paid-media, B2B referral) and never measure or pay all roles identically. An hour, and every rule built afterwards inherits it; it only pays off through those rules, which is why it ranks below naming.
- **False-positive KPI**: track false-positive rate from sampled review as a first-class metric paired with catch rate - a rule set optimizing catch alone is incomplete by construction. A standing job of manual sampling each cycle, and it measures the problem rather than preventing it.
- **Appeals process**: a fixed window, reviewed by someone other than the analyst who raised the flag. A week to publish plus a standing job to staff, and it is the only control that recovers a false positive after enforcement has already landed.
That order starves appeals, which is the one control the wrongly-terminated partner actually needs. Promote it above everything else in a licensed or regulated vertical, where it is a supervisory expectation rather than a nicety, and in any program that has already terminated a partner it later had to readmit.
references/fraud-taxonomy.md›
# Affiliate Fraud Taxonomy
Patterns by funnel layer, each with the observable tell it leaves in program data. Defensive depth only: enough to recognize, never to reproduce. Vendor names appear only as sourced illustrations.
## Click layer (predominantly B2C ecommerce and mobile)
- **Cookie stuffing / forced clicks.** Tracking cookies dropped without a genuine click (hidden iframes, invisible pixels, redirects, injected scripts); the affiliate collects commission when the user later buys organically. Server-side signal capture is required: a client-side pixel cannot distinguish a stuffed cookie from an organic one.
- Tell: commissions on customers with no meaningful referral touchpoint.
- Tell: near-zero time between "click" and cookie set.
- Tell: reproduction test - clean browser, visit the suspect page, check whether an affiliate cookie appears without any click.
- **Click spam and click injection (mobile).** Spam floods low-quality clicks hoping to win last-click on organic installs; injection fires a click in the instant before an install completes. Tell: click-to-install time distribution - spam shows a long flat tail, injection an implausible near-zero cluster.
- **Typosquatting / URL hijacking.** Lookalike misspelled domains redirect through affiliate links. Tell: referrers from misspelled brand domains; redirect chains through unknown intermediate domains. Chachra, Savage & Voelker (IMC 2015) found 84% of stuffed cookies in their crawl arrived via typosquatted/intermediate domains and over 91% via redirects.
- **Brand bidding and direct linking.** Ads bought on the merchant's branded search terms (or misspellings), often direct-linking to the merchant, capturing traffic the merchant would have won anyway.
- Tell: branded-keyword CPC rising.
- Tell: affiliate "referrals" with branded-search characteristics and abnormally high conversion.
- Tell: screenshot sweeps of branded SERPs across geos.
## Attribution layer - where legitimate and fraudulent blur
- **Adware and browser-extension attribution hijacking.** An extension overwrites existing attribution at checkout instead of standing down when another affiliate is earlier in the clickstream. Tell: last-click flipping from a content partner to an extension seconds before purchase; extension partners' share of checkouts spiking without upstream traffic. Precedent: the PayPal Honey network removals for affiliate link hijacking and concealed stand-down violations; the parallel litigation shows courts have not settled whether last-click cookie replacement is unlawful.
- **Coupon and toolbar last-click poaching.** Sitting at the checkout moment to win last-click on demand other channels created. Legitimate for some partners, abusive for others - the central false-positive problem. A high last-click share is never itself evidence of fraud: it calls for an incrementality test and possibly a lower commission tier, not enforcement.
## Conversion and account layer
- **Fake leads / form-fill fraud** - the dominant B2B lead-gen pattern. Bots or click farms submit forms with invented, recycled, or stolen contact data on CPL/CPA programs.
- Tell: downstream collapse weeks later - lead-to-qualified and lead-to-demo-show rates far below program norm.
- Tell: disposable-email and role-account domains.
- Tell: duplicate emails/phones/addresses across leads.
- Tell: form fills under 3 seconds with no mouse movement and identical field-skip patterns.
- **Bot and data-center traffic.** GIVT under IAB/MRC: declared bots and spiders, data-center ASN resolution, non-browser user agents. Caught by routine list filtration; needs no judgment call.
- **Stolen-card transaction fraud.** The fraudster builds a legitimate-looking record, then buys through their own link with stolen cards; conversions look real and commissions fire before the cardholder disputes. Tell: chargebacks landing 60-180 days later, concentrated on one affiliate. This is why a validation window alone never covers it: only clawback, negative-balance carry-forward, and a chargeback reserve recover money already paid out.
- **Self-referral.** The affiliate converts through their own link. Tell: registration IP, device, or billing details shared between the affiliate account and the "customer".
- **Multi-account rings and collusion.** One operator running several accounts, or coordinated rings. Tell: shared device fingerprints, IPs, or payout destinations across supposedly unrelated accounts.
- **Incentivized or misrepresented traffic.** Traffic driven by incentives onto non-incentive offers, or a declared traffic source that disagrees with observed referrers. Tell: referrer audit vs the source declared at application.
- **AI-generated synthetic traffic** - the fastest-growing category. Synthetic sessions engineer realistic scroll depth, dwell time, and session lifecycle, defeating first-generation session-duration filters. Tell: behavioral metrics look normal while downstream outcomes (revenue per visitor, lead quality, retention) stay at zero. Weight server-side and downstream-outcome signals; treat recent vendor detection-efficacy claims as unverified.
## Legal footing, briefly
- Cookie stuffing is prosecutable as US federal wire fraud. The eBay cases are the only adjudicated dollar figures in the field:
- One affiliate took roughly $28M in commissions: five months federal prison, $25,000 fine.
- A second was sentenced to fifteen months over a scheme within ~$5.2M paid.
- Aggressive last-click attribution without a clear contract violation and technical evidence is not established fraud. Enforce the contract; do not allege crime.
- Prevalence numbers disagree by methodology: a publisher-side HTTP-log study found over a third of publishers attempted stuffing, while a user-side crawl found end users rarely encounter stuffed cookies. Both are right about different questions - distrust any single "affiliate fraud rate".
references/investigation-and-enforcement.md›
# Investigation and Enforcement
The operating procedure attached to every delivered rule set: cadence, evidence, escalation, money mechanics, due process.
## Monitoring cadence
- Daily: tracking health (pixel/postback fires, reconciliation jobs, alert backlog); new-affiliate application review.
- Weekly: anomaly triage against baselines; randomized spot-check of 10-15 affiliate campaigns; fraud summary to the affiliate team.
- Monthly/quarterly: performance audit, risk-profile refresh, denied-affiliate and reversed-commission report for finance.
## The audit loop
1. Baseline 90 days of per-affiliate conversion-rate, timing, and chargeback/refund data.
2. Watchlist outliers (2 SD from program norms - agency workflow, tune to taste).
3. Cross-reference watchlisted affiliates against IP, device-fingerprint, and geo checks - under a stated lawful basis and retention period, never ad hoc. These are personal-data processing operations, and fingerprinting in particular may require consent even outside advertising under the UK regulator's published position. Route the design to counsel before first use. `[LEGAL REVIEW]`
4. Decide the band per SKILL.md § Output Shape, which defaults to Hold & Investigate and states what moves a case up or down.
5. Feed confirmed cases back into the rules; retire rules that only ever produce false positives.
## Evidence collection
Every enforcement action stands on reproducible evidence, collected before the affiliate is contacted:
- Cookie-drop reproduction: clean browser, visit the suspect property, record whether an affiliate cookie is set without a click.
- Redirect-chain capture with timestamps; tracking URLs and ad copy.
- Timestamped screenshots of ads, landing pages, and branded SERPs (multiple geos for brand-bidding cases).
- Server-log review for hidden iframe loads and referrer patterns; signed (HMAC) postback records.
- Test purchases where warranted; CRM outcome export for B2B lead cases.
Maintain the audit trail from first flag - network compliance teams and courts act on evidence dossiers, not suspicions.
## Escalation ladder
Who owns each band and how fast they move. Rows run in the same efficiency order as SKILL.md's Output Shape, which carries the triggers, costs and default assignment; the tier number is the ladder position, not the priority.
| Band | Owner | Timeline |
| --------------------------- | -------------------------------------------------------------------- | --------------------------------------------------- |
| Hold & Investigate (tier 2) | Cross-functional review (affiliate manager + finance; legal on call) | Within 24-48h; commissions throttled to zero |
| Watch (tier 1) | Affiliate ops analyst | Weekly triage |
| Suspend & Escalate (tier 3) | Program owner + legal | Immediate suspension; dossier to network compliance |
Enforcement ladder within Tier 3, run in order:
1. Suspend.
2. Reverse/void violation-period commissions.
3. Clawback paid amounts.
4. Terminate.
5. Network report.
6. Legal: wire-fraud referral, FTC reportfraud.ftc.gov / FBI ic3.gov for significant cases.
Severity is proportionate: a missing disclosure is a warning; deliberate trademark hijacking or stuffing with technical evidence is Tier 3. In-house staff are empirically better at borderline judgment calls, outside specialists at clear violations (Edelman & Brandi, _JMR_ 2015) - keep judgment calls in-house even when tooling is outsourced.
## Money mechanics - the part that actually protects the program
Implementation detail for three of the four controls ranked in SKILL.md § Control Leverage; the rows below run in that same order.
- **Validation/hold window**: 30-90 days before a commission locks - subscription and high-chargeback verticals at the long end.
- **New/high-risk partners**: longer payout terms (net-60/net-90) and stricter application filters until a track record exists.
- **The chargeback trap**: two filing-limit clocks apply, and the second one outlasts any realistic hold window.
- Standard Visa/Mastercard filing limit: 120 days from the transaction.
- Services-not-received, delayed-delivery and not-as-described codes: 120 days from the expected delivery date, capped at 540 days from the transaction - an annual subscription disputed in month 14 is still in play.
Cover the gap contractually or accept the loss: clawback authority, negative-balance carry-forward (deduct from future payouts until offset), and a chargeback reserve (10-15% of commissions held, released quarterly while the chargeback rate stays below threshold). These clauses belong in the program terms - flag their absence before tuning any rule.
## Due process and communication
- Appeals: a published dispute path, roughly a 14-day window, evidence submitted in writing, reviewed by someone who is not the detecting analyst. Licensed verticals treat this as a regulator expectation; everywhere it doubles as a false-positive control.
- External communication stays neutral and factual - "your commissions are under review pending a routine quality check; expect an update by <date>". Never use the word "fraud" with the flagged partner. Internal documentation carries the real reasoning and the evidence.
- A useful behavioral tell during review: legitimate partners accept rejection reports and self-correct; fraudsters argue (vendor observation, not a rule - never enforce on it alone).
## Network and platform escalation
Networks earn a percentage of commission volume: their compliance teams are reactive, acting on evidence-backed complaints, and run cross-client blacklists rather than per-brand surveillance. Send the dossier (publisher ID, evidence artifacts, timestamps, financial exposure); request suspension and cross-program flagging. Expect nothing unprompted.
references/worked-examples.md›
# Worked Examples
Two full rule sets, one filled dossier, one negative example. Provenance tags: [ACADEMIC] peer-reviewed result, [VENDOR] vendor or agency rule of thumb, [DERIVE] compute from the program's own data. All [DERIVE] values below are illustrative - recompute from the program's own 90-day baseline.
## Rule set - B2C ecommerce (apparel store, 350 affiliates, ~$60K/month commissions, last-click, 30-day cookie, 60-day hold)
| # | Signal | Threshold | Band | Action | Legitimate trip risk |
| --- | ------------------------------------------------- | -------------------------------------------------------- | ------------------ | ------------------------------------------------ | -------------------------------------------------------- |
| C1 | Data-center ASN / declared bot / non-browser UA | Any (GIVT list filter) | - | Filter pre-commission, no case opened | None - list-based |
| C2 | Time on site after cookie set | < 2s [ACADEMIC] | Hold & Investigate | Throttle; run cookie-drop reproduction | Deep-linked flash-sale traffic - check landing page |
| C3 | Conversion rate | > 2 SD above program mean, 2 weeks running [VENDOR→tune] | Watch | Log; weekly triage | Genuinely great content partner - check traffic mix |
| C4 | Chargeback rate | > 3% rolling 30 days [VENDOR] | Suspend & Escalate | Suspend; reverse period; dossier to network | Product-quality issue - check other affiliates' rate |
| C5 | Clicks high, conversions near zero | > 5x program click-to-sale ratio [DERIVE] | Hold & Investigate | Throttle; referrer + redirect-chain audit | Top-of-funnel content partner - check engagement |
| C6 | Extension wins last-click seconds before checkout | Attribution flip < 60s pre-purchase, recurring [DERIVE] | Hold & Investigate | Stand-down audit; contract check | Permitted coupon extension - terms decide, not this rule |
| C7 | Branded-SERP ad traced to affiliate | Any, if terms ban brand bidding | Suspend & Escalate | Timestamped screenshots; warn once, then suspend | Whitelisted partner - check the whitelist first |
| C8 | New affiliate: no traffic 2 weeks, then spike | > 50 conversions in week 3 from cold start [DERIVE] | Watch | Manual review; keep net-90 terms | Seasonal creator launch - check content dates |
## Rule set - B2B SaaS lead-gen (CPL program, $120/qualified lead, 60 partners, server-side postback, 90-day hold)
| # | Signal | Threshold | Band | Action | Legitimate trip risk |
| --- | ------------------------------------- | ------------------------------------------------------ | ----------------------- | --------------------------------------- | -------------------------------------------------------------- |
| B1 | Form-fill time | < 3s, no pointer movement [VENDOR] | Hold & Investigate | Throttle; sample-call the leads | Autofill power users - pair with B2 before acting |
| B2 | Disposable/role-account email domains | > 10% of partner's leads [DERIVE] | Hold & Investigate | Throttle; validate remaining leads | Privacy-conscious ICP - check qualified rate |
| B3 | Lead-to-qualified rate | < half program norm over 30+ leads [DERIVE] | Hold & Investigate | Throttle; CRM outcome export to dossier | Untrained SDR routing - check other partners' rate same period |
| B4 | Lead-to-demo-show rate | Near zero over 20+ booked [DERIVE] | Suspend & Escalate | Suspend; reverse unlocked leads | Wrong-timezone booking flow - check booked times |
| B5 | Duplicate contact data across leads | Same phone/device fingerprint, 3+ "companies" [DERIVE] | Suspend & Escalate | Suspend; dossier; clawback | Agency submitting for clients - verify with the partner |
| B6 | Conversion velocity | 3+ leads/minute or metronomic ~30s spacing [VENDOR] | Hold & Investigate | Throttle; server-log review | Webinar/conference batch upload - check event calendar |
| B7 | Volume up, zero customers downstream | 90 days, 50+ leads, no closed-won [DERIVE] | Watch → Hold at quarter | Quarterly review; reprice-or-exit talk | Long sales cycle - match window to cycle length |
Do not swap these sets: B2C click-timing rules on B2B lead-gen produce false positives; B2B downstream rules alone on ecommerce miss attribution theft for months.
## Filled investigation dossier (B2B case)
```
DOSSIER 2026-031 - partner "LeadSpring Media" (platform ID P-4471)
Rules triggered : B2 (34% disposable domains, Hold), B3 (lead-to-qualified 4% vs norm 22%,
Hold), B5 (41 leads across 3 device fingerprints, Suspend - this is the
rule the recommendation rests on; B2 and B3 alone would mandate Hold),
2026-07-02→08-10. B5 legitimate-trip check run: partner is not an agency
submitting for clients, confirmed against the signed profile
Baseline vs seen : qualified 22%±6 → 4%; demo-show 61% → 0% (11 booked)
Evidence : CRM export (61 leads, outcomes); 9/10 sample calls dead numbers;
postback log - 41 leads from 3 device fingerprints; screenshots archived
Exposure : $7,320 held (61 × $120); $3,480 paid prior cycle; reserve covers $1,050
Declared vs seen : declared "newsletter + LinkedIn"; observed referrers 88% blank
Prior history : none; partner active 11 weeks
Recommendation : Suspend & Escalate - reverse held, claw back paid via negative balance.
Reviewer: program owner (not detecting analyst)
Appeal : notified 08-12, neutral wording; 14-day window open until 08-26
```
## Negative example - do not deliver this rule set
> "Flag any affiliate whose session durations average under 5 seconds (industry standard). Terminate immediately - fraud must be stopped fast. Our coupon extension partner converts 4x the program average, which proves poaching: terminate and claw back. Target: catch 100% of fraud. The network's compliance team monitors our program daily, so no separate investigation process is needed. Hold window stays at 14 days to keep affiliates happy."
Why every sentence fails:
- "Industry standard" is a vendor rule of thumb presented as a constant, untuned against any baseline - and session-duration heuristics are exactly what AI-generated synthetic traffic now defeats.
- Instant termination destroys the evidence a network report or legal escalation would need, and skips any appeal - the false positive is unrecoverable.
- High conversion from a coupon extension is a last-click artifact, not proof of anything: that partner needs an incrementality test and possibly a lower tier, not enforcement.
- A 100% catch target with no false-positive ceiling guarantees over-blocking; catch rate and false-positive rate are only meaningful as a pair.
- The network is structurally conflicted (paid on commission volume) and reactive; nobody is monitoring the program daily on the owner's behalf.
- A 14-day hold against 120-180-day chargeback windows means every stolen-card commission is paid and gone; no clawback, reserve, or negative-balance clause is even mentioned.
SKILL.md›
---
name: affiliate-fraud-detection
description: Build the detection rule set an affiliate program manager uses to flag fraudulent affiliate activity, plus the investigation and escalation path behind it - cookie stuffing, fake lead and form-fill fraud, self-referral rings, traffic-quality baselines, commission holds and clawbacks, and separating real fraud from legitimate low-incrementality coupon or cashback partners. Covers B2B SaaS lead-gen and B2C ecommerce programs. Use whenever the user mentions affiliate fraud, suspicious affiliate traffic, invalid clicks or leads, bot traffic, or an affiliate whose numbers look too good, even if they never say fraud. Do NOT use for consumer refer-a-friend gaming - use mbfinotti/partnerships-skills@referral-abuse-guardrails instead.
license: MIT
metadata:
author: Maya-Beth Finotti
version: "1.1.1"
---
# Affiliate Fraud Detection
Build the rule set a program owner uses to flag fraudulent affiliate activity, then investigate and escalate it. This is a defensive skill: it protects programs from being defrauded, and describes each fraud pattern only to the depth needed to recognize it.
No canonical affiliate-fraud detection framework exists. The only ratified standard is the IAB/MRC invalid-traffic split, an ad-measurement standard the affiliate industry borrows rather than one written for affiliate programs:
- **GIVT** - caught by routine list filtration: known bots, data-center IPs, non-browser user agents.
- **SIVT** - needs advanced analytics and corroboration: hijacked devices, adware, cookie stuffing.
The PMA's Toolbar and Software Industry Standard is a voluntary, non-binding proposal, not a ratified standard. Force-fit no other framework.
The single highest-leverage control is a commission hold/validation window of 30-90 days, not a detection algorithm. The strongest independent evidence agrees: Edelman's research (related to Edelman & Brandi, _JMR_ 2015) found delaying affiliate payments by two to four months could eliminate more than 70% of fraud without decreasing profit.
## Control Leverage
Four controls compete for the hours before the next payout cycle. Rank them before writing a single rule.
- value (most first): `hold window > clawback clause set > detection rule set > new-partner terms`
- effort (most first): `clawback clause set > detection rule set > new-partner terms == hold window`
- compliance cost (most first): `clawback clause set > hold window == new-partner terms > detection rule set`
- efficiency (best first): `hold window > detection rule set > new-partner terms > clawback clause set`
| Control | What it buys | What it costs |
| -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Hold/validation window, 30-90 days | Most fraudulent commissions never leave the account - the >70%-of-fraud result above, at no cost to profit | An hour: one platform setting, reversible the day it changes. Alters terms a partner already accepted, so it carries a notice obligation |
| Detection rule set (this skill's deliverable) | Names which partner to act on and produces evidence an enforcement action can stand on | A week to derive baselines and write rules, then a standing triage job. Near-zero compliance cost until a rule reads cross-account identity data, which inherits the `[LEGAL REVIEW]` gate |
| New/high-risk partner terms (net-60/90, stricter filters) | Narrows exposure to the cohort that produces most first-incident fraud | An hour, and tied with the hold window on both effort and exposure for a real reason: same settings page, same person, same reversibility, same notice obligation - only the edited field differs |
| Clawback + negative-balance carry-forward + chargeback reserve | The only control that recovers money already paid, and the sole cover for the 120-540 day chargeback tail no hold window reaches | A quarter: legal drafting and partner re-assent, barely reversible once shipped. Clawing back a paid commission without these clauses is itself a breach |
Set the hold window first, then build the rule set; a program missing both has no working control however good its detection gets.
The efficiency order starves the clawback clause set - top of the value axis, bottom of the ratio, so it loses every round. Promote it above everything else when the program sells subscriptions, high-ticket, or delayed-delivery goods, or has already paid out on a chargeback: there, the only control that touches money already gone is the one the ratio ranks last.
## Re-Rank Before Delivering
Every ordering in this skill is a default, not a law. It shifts with the program and with who executes it, so re-rank it against what the Interview told you:
- The platform cannot configure a hold window → delete that rung from the deliverable and say so. A ruled-out control parked at the bottom of a plan comes back as scope. What remains is `rule set > new-partner terms > clawback clause set`, and the clawback clauses stop being optional.
- Nobody has review hours → the 24-48h review under Hold & Investigate never happens. Route the rule set to Watch plus one monthly batch review, and let the hold window carry the program.
- The roster is small enough to read by hand, roughly under 20 partners → 2-SD outlier math and per-event scoring are false precision on that sample. Inspect the partner list and skip the statistical rungs.
- The user already owns something the order assumes away - server-side postbacks, a fraud analyst, a standing chargeback reserve - promote whatever that asset makes cheap.
## Ground Rules
- Recognize, never perpetrate: state the observable tell each pattern leaves in program data; write no evasion or how-to-build detail.
- Label every numeric threshold with its provenance: vendor/agency rule of thumb, academic result, or a baseline the user derives from their own data. Never present a vendor heuristic as an industry constant.
- Warn off headline loss statistics: the famous "17% of affiliate traffic is fake / $3.4B" figure is single-vendor marketing with circular citation.
- Treat low incrementality as a repricing problem, never as fraud. Coupon, cashback, loyalty, extension, retargeting, and brand-search partners are legitimate by default.
- Keep B2B and B2C signals separate. Say explicitly when a rule applies to both.
- B2C fraud: a stolen-attribution sale, visible in click-timing, cookie-drop, and chargeback signals within hours-to-days.
- B2B lead-gen fraud: a fake form-fill whose worthlessness surfaces weeks later in downstream rates.
- Never assume the network does the policing: networks earn a share of commission volume, so their compliance is reactive - it acts on evidence-backed complaints, not brand-specific surveillance.
- Expect AI-generated synthetic traffic to degrade behavioral heuristics (session duration, scroll depth); treat recent vendor detection-efficacy claims as unverified and weight server-side and downstream-outcome signals instead.
## Interview
Ask before building anything:
- One question per message.
- Multiple-choice where possible.
- Skip anything already answered.
Ask the first three questions below before any of the rest: the controls diverge by two orders of magnitude in time-to-effect and effort, and the answers decide the order everything downstream is delivered in.
- By when must this rule set be protecting money - the next payout cycle, or a quarter out? A cycle puts the whole load on the hold window and band assignment and rules the clawback clause set out of scope; a quarter puts contract changes back on the table.
- One-off cleanup of a partner you already suspect, or a standing control that compounds? One-off promotes the dossier and enforcement path and skips baseline derivation; standing promotes baselines, monitoring cadence, and the KPI loop.
- Effort ceiling: how many review hours per week, who can amend partner terms, and who signs off on suspending a partner? No review capacity collapses Hold & Investigate into Watch; no contract authority deletes the clawback rung outright.
- Program size: how many active affiliates, and roughly what monthly commission spend?
- B2B lead-gen, B2C ecommerce, or both?
- Which partner types and traffic sources are permitted: coupon, cashback, loyalty, browser extensions, paid search (brand bidding allowed?), email?
- Tracking and attribution: last-click? Cookie window length? Client-side pixel or server-side postback?
- Commission validation/hold window today, if any? Is clawback contractually authorized (negative-balance carry-forward, chargeback reserve)?
- Any historical fraud incidents? What happened, and was any commission recovered?
- Exactly which data can you query: click logs, conversion records, IP/device data, CRM lead outcomes, refund/chargeback records?
## Workflow
1. Run the Interview; collect every answer the rule set depends on.
2. Confirm the scope boundary: this rule set flags illegitimate activity. Payout math, contract clauses, and refer-a-friend gaming belong to sibling skills (see Reference).
3. Rank the four controls against those answers using Control Leverage above, then fix the money mechanics before writing a single rule. A rule set sitting on a 14-day hold window with no clawback authority flags fraud the program cannot act on.
4. Derive baselines from at least 90 days of the user's own per-affiliate data: conversion rate, click-to-conversion time, refund/chargeback rate, and for B2B the lead-to-qualified and lead-to-demo-show rates. Read [references/detection-signals.md](references/detection-signals.md) for the signal catalogue and starting thresholds.
5. Map the program's fraud surface from [references/fraud-taxonomy.md](references/fraud-taxonomy.md): which patterns the permitted partner types and tracking setup actually expose it to.
6. Draft the rule set in the Output Shape below: one row per rule, each carrying signal, threshold with provenance, severity band, and mandated action.
7. Add false-positive protections from [references/false-positives-and-incrementality.md](references/false-positives-and-incrementality.md): exclude legitimate checkout-moment partner behavior from fraud rules and route non-incrementality suspicions to holdout/geo testing instead.
8. Attach the operating procedure from [references/investigation-and-enforcement.md](references/investigation-and-enforcement.md): monitoring cadence, evidence collection, dossier, escalation ladder, appeals, and clawback mechanics.
9. Backtest against the Pass Threshold below; tune thresholds and iterate until both halves hold.
10. Present the rule set section by section for user validation; deliver the full artifact with dossier template and KPI plan. Ground it in a matching worked example from [references/worked-examples.md](references/worked-examples.md).
11. If your harness has persistent memory, memorize the derived baselines, decided thresholds, and permitted-partner decisions so a later run starts from them instead of re-deriving.
## Output Shape
Deliver a rule set where every rule reads: signal → threshold (with provenance tag) → severity band → mandated action. Three bands, listed below in efficiency order rather than severity order:
- value (most first): `Suspend & Escalate > Hold & Investigate > Watch`
- effort (most first): `Suspend & Escalate > Hold & Investigate > Watch`
- compliance cost (most first): `Suspend & Escalate > Hold & Investigate > Watch`
- efficiency (best first): `Hold & Investigate > Watch > Suspend & Escalate`
The first three axes agree, which is exactly why the fourth decides: severity buys more the further up the ladder the response climbs and costs more at the same rate, so the band that stops the money for hours of reversible work wins.
- **Hold & Investigate** (ladder tier 2) - auto-throttle new commissions to zero pending review, open a dossier, cross-functional review within 24-48 hours. Throttling preserves evidence an instant ban destroys. Costs hours per case: the throttle is one switch, the review is two people's attention for a day or two. Withholding a commission is a contractual act but a reversible one - pay it and the partner is whole. Highest ratio of the three, and the source of the evidence the band above needs.
- **Watch** (ladder tier 1) - log the flag, keep paying, review at the weekly triage. For soft anomalies and first offenses of minor rules. Near-zero cost: a log line and a slot in a meeting that already happens, nothing withheld, no relationship damage, nothing to appeal. Protects nothing on its own, and earns its place only by feeding Hold & Investigate.
- **Suspend & Escalate** (ladder tier 3) - suspend the account, reverse violation-period commissions, forward the dossier to network compliance and, where warranted, legal review. Costs a week per case plus the partner relationship outright: dossier completion, sign-off, network filing, appeal handling. Least reversible and most exposed of the three - suspension can breach published terms, and an unfounded fraud allegation is its own liability.
Assign a new rule to Hold & Investigate by default. Move it down to Watch when the signal alone has a plausible legitimate cause; move it up to Suspend & Escalate only on confirmed technical evidence, stolen-card chargebacks, or reoffense after a warning.
The efficiency order starves Suspend & Escalate: a program ranking by ratio alone throttles forever and terminates nobody, and a ring that learns the program never bans simply absorbs the throttles. Promote it whenever confirmed-fraud rate or reversed-commission share climbs quarter over quarter, and whenever a case has to survive network compliance, where a throttle carries no weight.
Every band assignment carries the false-positive caveat inline: name the legitimate behavior that could trip the rule and the check that separates it.
Each investigation opens a dossier with these fields: affiliate ID and network/platform ID; rule(s) triggered with timestamps; baseline vs observed values; evidence artifacts (cookie-drop reproduction steps, redirect-chain capture, timestamped screenshots, server-log excerpts); financial exposure (commissions held, paid, at risk); declared traffic source vs observed referrers; prior warnings and history; recommended action with reviewer name; appeal status and deadline.
## Pass Threshold
Judge the rule set on its detection rate and false-positive rate as a pair - every credible source tracks catch rate and false-positive rate together, never catch rate alone.
- Backtest against historical confirmed incidents and a random sample of flagged and unflagged partners reviewed manually.
- Pass when both hold: at least 80% of known incidents fire at Hold & Investigate or above, and at most 5% of sampled flags are false positives.
- Provenance of the pair: published fraud-ops checklists converge on a >80% catch target with a low-single-digit false-positive ceiling; the academic ceiling for a simple rule is Snyder & Kanich's two-feature timing classifier at ~2-second thresholds - 93.3% accuracy, 1.5% false positive, 5.2% false negative (_Journal of Cybersecurity_ 2016). These are calibration anchors, not industry constants.
- No incident history to backtest against? Say so in the deliverable and schedule the threshold as a first-quarterly-review gate on sampled flags.
- Iterate thresholds until both halves pass; if they cannot, the deliverable states which data or history is missing rather than shipping an untested rule set.
## Common Failure Modes
| Defect | Consequence | Fix |
| -------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| Fraud rules fire on legitimate coupon/cashback/loyalty last-click behavior | Terminates real partners; legal and relationship damage | Classify partner types; route incrementality doubts to holdout/geo tests, not enforcement |
| Over-blocking on untuned vendor thresholds | Real partners churn; program revenue drops | Derive own baselines from 90 days of data; vendor numbers are starting points only |
| Validation window shorter than chargeback window | Stolen-card commissions paid out are unrecoverable | Clawback + negative-balance carry-forward + chargeback reserve in the contract |
| B2C click-timing rules applied to B2B lead-gen (or vice versa) | False positives in B2B; missed fake form-fills; missed B2C attribution theft | Split the rule set by motion; B2B leans on downstream rates |
| Trusting the network to police the program | Fraud runs until an outsider complains | Own the monitoring; send evidence dossiers to the network, expect nothing unprompted |
| Treating a vendor benchmark as the program's baseline | Thresholds miscalibrated in both directions | Provenance-tag every number; replace with derived baselines |
| Instant ban on first flag | Evidence destroyed; no dossier survives for network/legal escalation | Auto-throttle to zero pending review; ban only after the dossier is complete |
## KPIs
- Track: flagged rate, confirmed-fraud rate, false-positive rate from sampled review, reversed-commission share, recovered spend.
- Report to leadership in commission-loss dollars saved and recovered - never vague risk language.
- Escalate the program itself when confirmed-fraud rate or reversed-commission share climbs materially quarter over quarter: revisit hold windows, partner vetting, and tooling.
## Invocation Examples
- "We run a B2B SaaS partner program paying $150 per qualified lead - sales says half the leads from two new affiliates never answer the phone. Build me detection rules."
- "Our ecommerce affiliate program just ate $12K in chargebacks traced to one affiliate's 'sales'. Set up a fraud rule set and an investigation process before we pay the next cycle."
- "Audit our affiliate traffic quality: 60% of commissions go to coupon extensions and I can't tell poaching from fraud."
## Reference
- `mbfinotti/partnerships-skills@affiliate-payout-audit` - accuracy of legitimate-activity payouts; this skill flags illegitimate activity upstream.
- `mbfinotti/partnerships-skills@affiliate-program-terms` - write prohibited-tactics clauses and enforcement ladder into the contract - this skill detects operational violations.
- `mbfinotti/partnerships-skills@affiliate-commission-structure` - reprice non-incremental partners; repricing is that skill's job, not enforcement's.
- `mbfinotti/partnerships-skills@referral-abuse-guardrails` - consumer refer-a-friend gaming - this skill covers professional-affiliate traffic and commission fraud.