Why Biotree needed Crossdeck Trust — and how we stopped the SEO spam farms
Public, indexed link-in-bio pages are a magnet for spam farms and bot signups. The attack Biotree faced, why the obvious defences backfire, and the signup firewall that stopped it without punishing real users.
Summary
- A link-in-bio product is a public, indexed page per user — which makes it catnip for SEO spam farms: bots mass-create profiles stuffed with backlinks and scams to game search, or to distribute malware.
- The danger is not clutter. Enough spam pages on one domain and Google can penalise the whole domain, dragging every real user’s page down with it. That is existential, not annoying.
- The obvious fixes backfire. CAPTCHA walls tax humans and are solved at scale by the operations you are trying to stop; auto-banning anything suspicious over-blocks real people — and you cannot un-ban an account you deleted.
- Crossdeck Trust took a different line: score everything, auto-block nothing. It surfaces a signal; the owner’s rules block on facts at the write layer; a block refuses or signs out and never deletes; and a human triages the ambiguous middle.
Why are link-in-bio sites targeted by spam?
Every link-in-bio account is a small public web page, and Google indexes it. That is the entire value for a real creator — and the entire attraction for an abuser. If you can programmatically create thousands of pages on a reputable domain and pack them with links, you have built yourself a free backlink farm on someone else’s SEO reputation. Others do worse: phishing, malware redirects, scam funnels, all wearing the domain’s credibility as a disguise.
Biotree hit exactly this. Automated signups arrived in volume, each spinning up a profile whose only purpose was to plant links or scams. Individually, each fake account is trivial. In aggregate, they are a reputation attack on the whole platform.
The real stakes: your domain’s reputation, not your signup count
Here is the part that makes this urgent rather than annoying. Search engines judge a domain, not just a page. Let a domain fill with spam profiles and you do not merely host junk — you teach Google that the domain is junk. The penalty then lands on everyone, including the legitimate creators who did nothing wrong. Their pages rank worse because they share an address with a spam farm.
So for a link-in-bio product, stopping abusive signups is not a trust-and-safety chore bolted on the side. It is protecting the core asset: the domain reputation that makes a real user’s page worth having in the first place.
Why the obvious defences backfire
The two reflexes both fail, in opposite directions.
- Wall everyone with CAPTCHA. You tax every real signup with friction, hurting the conversion you actually want — and modern spam operations solve CAPTCHAs at scale anyway. You have punished humans and inconvenienced nobody who matters.
- Auto-ban anything suspicious. Now a machine is the judge, and it is wrong a meaningful fraction of the time. Every false positive is a real creator turned away at the door — and if your ban deleted their account, there is nothing to restore when you realise the mistake.
You cannot make a binary machine the judge of who is a person. So we did not.
What is a signup firewall?
A signup firewall scores every new signup on risk signals, but blocks only on explicit owner rules grounded in facts — enforced at the write layer, where the attacker actually acts — and a block refuses or signs the account out rather than deleting anything. That sentence is the whole design, and each clause is load-bearing:
- Score everything, auto-block nothing. Crossdeck Trust produces a signal on every signup. That signal surfaces risk; it does not pass sentence. The machine is a witness, not a judge.
- Block on facts and owner rules, not on a vibe. Biotree’s own rules decide what gets refused, based on facts rather than a fuzzy score. The owner sets policy; Trust supplies the evidence.
- Enforce at the write layer. Bots do not admire your interface — they write. So the gate lives on the write path, server-side, fail-closed. Guarding the button an attacker never clicks is theatre; guarding the write they must make is defence.
- A block refuses or signs out. It never deletes. A rule will occasionally catch a real person. If block meant delete, that mistake would be permanent. Refusing is fully recoverable — the honest human gets back in; the bot simply does not get through.
- A human triages the middle. Ambiguous cases land in a review lane where a person makes the call. Marking someone safe dismisses the alert; it never quietly loosens the gate for everyone else.
Bank-grade, and boring on purpose
One more deliberate choice: Trust uses named, explainable methods — a scorecard, champion-versus-challenger evaluation — not an inscrutable black box. That is not a limitation; it is the point. When you flag or refuse a signup you should be able to say why, in terms a human can audit and a court could accept.
A security layer you cannot explain is one you cannot trust, and trust is in the name. No cleverness for its own sake; just methods that hold up when someone asks how they work.
What it did for Biotree
The spam farms met a wall that real creators never felt. Abusive signups were refused at the write layer before a spam page could exist, so the profiles were never created, never indexed, and never had a chance to erode the domain. Legitimate signups passed straight through — no CAPTCHA tax, no false-positive bans.
And because Biotree ran this in a genuinely hostile, real-world environment, it did something no test suite could: it hardened Crossdeck Trust under live fire. That is the dogfood dividend. Every Crossdeck customer now inherits a fraud firewall that was not proven in a demo — it was proven by spammers trying, and failing, to farm Biotree.
What we learned
- Public, indexed, user-generated pages are a spam-farm target by construction. If you build one, assume the farms are coming, and defend the domain from day one.
- Let the machine be the witness, not the judge. Score to surface risk; leave the verdict to explicit, fact-based rules and, in the grey zone, to a human.
- Enforce where the attacker acts. Bots write, so gate the write — server-side, fail-closed — not the interface they skip.
- Refuse, do not delete. Design every block to be recoverable, because you will occasionally catch someone real.
- Explainability is part of trust. If you cannot say why you blocked someone, you do not have a trust layer. You have a liability.
Running a product with public, indexed user pages?
Trust scores, surfaces and refuses without punishing real users.
Questions people ask
- Why do spammers target link-in-bio and profile sites?
- Because each account is a public page on a reputable, indexed domain. Bots mass-create profiles to farm backlinks, boost SEO, or host scams and malware, borrowing the platform’s domain reputation as cover. The volume, not any single account, is the attack.
- How do you stop bot signups without putting CAPTCHA everywhere?
- Score every signup on risk signals server-side and block only on explicit, fact-based rules at the write layer, rather than taxing every human with a challenge. CAPTCHA punishes real users and is routinely solved by spam operations at scale; a scored, rules-based firewall stops bots where they act — creating accounts — while letting legitimate signups through untouched.
- Should you automatically ban suspicious signups?
- No. A machine judging who is a person is wrong often enough that automatic bans turn real users away, and if the ban deletes the account the mistake is unrecoverable. Use the score to surface risk, block only on clear facts and owner rules, and make every block a refusal or sign-out you can reverse.
- What does “enforce at the write layer” mean?
- It means the security check lives on the server path that actually creates or changes data — the path a bot must use — rather than in the user interface a bot ignores. Attackers write records; guarding the write, fail-closed, stops them, while guarding only the interface stops nobody who matters.
- Does blocking a signup delete the user’s data?
- No. A block refuses the action or signs the account out; it never deletes. That keeps every enforcement decision recoverable, so an honest person caught by a rule can get back in without having lost anything.
The rule
Score everything. Auto-block nothing. Refuse, never delete.
Read next
Why we built Crossdeck — and why every product we build helps test it
Every product is a test environment for the one beneath it
The Firebase bill that taught us to see
The email address you’re keying on is not the person
We got our connector rejected. It was the best product spec we received all year.
The black box blinks: seeing App Review happen in your own data