AffRank V4: deciding what the product is not
AffRank started life as an AI-powered SEO platform. Version 4 cut it down to one job — inject affiliate links and prove which page, placement and offer made the money. Here's the pivot and the attribution engine behind it.
The earliest versions of AffRank.ai tried to do a lot: AI keyword analysis, metadata suggestions, page scans, link injection, rankings. Every one of those features was defensible on its own. Together they made a product that was hard to explain and expensive to run.
The V4 plan opens with a list I wish I'd written on day one.
What AffRank is — and is not
AffRank is:
- An auto affiliate-link injector: paste one script, and links appear across your site.
- A link placement tracker: know which positions on a page actually get clicked.
- A revenue attribution tool: see real money per page, per placement, per link.
- Simple domain and script management.
AffRank is not: an AI SEO tool, a rank tracker, a backlink analyzer, a schema builder or a paid-traffic tracker.
That second list did more for the product than any feature on the first. It hid the AI page-scan and crawl systems from customers, kept them as internal tools, and gave the product a one-sentence pitch: stop guessing which affiliate links work.
The attribution model: page → placement → offer
Every click answers three questions:
Level 1 PAGE /best-affiliate-tools
Level 2 PLACEMENT comparison_table, intro_cta, sidebar_1
Level 3 OFFER tool_a, hosting_provider_b
The click flow is deliberately boring:
- A visitor reads a page where AffRank's script has injected affiliate links.
- They click one. The link points to
/go/{slug}?src={page}&placement={placement}. - AffRank logs the page, placement, offer, time and referrer, generates a unique click ID, and redirects to the affiliate destination.
- If the affiliate network supports postbacks, it reports the conversion back with that click ID.
There are two modes. Click-only works the moment the script is installed — clicks by page, placement and offer, no setup. Revenue mode turns on when a network sends postbacks, adding conversions, revenue and earnings per click. The product is useful on day one and more useful once the money data arrives.
Placements detected from the page itself
Asking users to tag every link with its position would never happen. So the script reads it from the page structure:
function detectPlacement(el) {
if (el.closest('table, .comparison, .pricing')) return 'comparison_table';
if (el.closest('aside, .sidebar, .widget')) return 'sidebar';
if (el.closest('header, .hero, .intro')) return 'intro_cta';
if (el.closest('footer, .footer')) return 'footer_cta';
if (el.tagName === 'BUTTON' || el.classList.contains('btn')) return 'button_cta';
return 'inline_link';
}
Deterministic labels matter more than clever ones. "comparison_table outperforms sidebar by 3×" is only meaningful if the same element gets the same label every time.
Recommendations without AI
This is the part people find surprising: V4's recommendations use no AI at all. They're plain rules over SQL aggregates, run as a background job at most once a day:
- A page with 30+ clicks and no conversions → "strong interest, weak offer or placement."
- One placement getting more than twice the clicks of another → "use this layout more."
- A page earning real revenue → "keep it, make more like it."
They're cheap, fast, explainable and wrong in predictable ways — which is exactly what you want from advice about money. An AI recommendation that's right 90% of the time and unexplainable the other 10% is a support ticket generator.
Pricing that matches the pitch
The tiers keep the same rule: every subscriber gets every feature. Plans differ only in how many domains and links per domain you can run. It's easy to enforce — two checks, one when a link is created and one when a domain is added — and easy to explain on a pricing page.
The lesson
Cutting scope felt like going backwards. It wasn't. The AI and crawl work didn't disappear; it became internal tooling instead of a promise to customers. What's left is a product with one job, a pitch that fits in a sentence, and numbers a customer can check against their own affiliate dashboard.
If you're building a SaaS, write the "is not" list early. It's the cheapest product decision you'll ever make.
Some links in these notes are affiliate links. If you buy through one, I may earn a commission at no extra cost to you. I only link to tools I use or would recommend.