← Back to blog

Our SaaS Twitter account got permabanned on Day 23. Here's the data.

Luoshi8 min read
startuptwitterautomationlessons-learnedmarketing

On June 10, 2026, the official X account for my SaaS — @synrouterai, 23 days old, at the time of suspension: 109 tweets, 3 followers — was permanently placed in read-only mode. We can never post again, and X says we can never create another account. I appealed. The appeal was denied within 24 hours.

This is what we did wrong, with the actual numbers.

X account suspension notice — @synrouterai permanently placed in read-only mode

What we're building, briefly

Synrouter is an AI inference gateway aimed at developers who burn money running coding agents — Claude Code, Codex CLI, Aider, OpenClaw, that crowd. The hypothesis is that everyone using these tools has a quiet wince every time they look at their monthly bill, and that a smarter routing layer can cut a meaningful chunk of that. We're pre-launch. Team of one founder plus occasional help.

Like every founder who has ever been told "you need to do distribution from day one," I decided to do distribution from day one. The obvious place was X. The crowd I needed was visibly there: people complaining about Claude usage caps, debating model routing, comparing token costs. So I made an account and went in.

The strategy that sounded smart

Three rules, written down before I started:

  • Engage, don't broadcast. Reply to people actually discussing inference cost, don't shout into the void.
  • Quality over volume. Two thoughtful replies a day beats ten generic ones.
  • Use scripts for finding conversations, not for writing them.

I built a small keyword monitor that pulled relevant posts twice a day. The plan was: every morning, scan the report, pick two or three tweets that genuinely deserved a substantive reply, write each one by hand, post them spaced out across the day.

That plan survived about two weeks. Then it didn't.

What I actually did on Day 23

Here is the audit log from the day of the suspension, from the self-monitoring report I was running on the account:

MetricValue
24h tweets18 (target: ≤3)
Burst 110 tweets in 22 minutes (June 9, 23:17–23:40)
Burst 28 tweets in 27 minutes (June 10, 10:44–11:11)
Inter-tweet gap <3 min16 of 18
Template structure100% — every reply followed [acknowledge] + [insight] + [have you / curious?]
Replies w/ "Have you" or "Curious"56%
Tweets with impressions ≤ 23 (almost certainly already shadowbanned)
Total likes across 18 tweets3
New followers that day0
Engagement rate1.70%

Tweet burst timeline — two spike clusters: 10 tweets in 22 min and 8 tweets in 27 min, with key metrics

Three tweets pulled less than three impressions. That's not "the algorithm doesn't favor you." That's the algorithm actively hiding you while it makes up its mind whether to flag the account.

It made up its mind that evening.

What the platform actually saw

It's worth taking the X perspective seriously here, because once you do, the verdict isn't even slightly surprising.

From their side, an account that's 23 days old, just upgraded to paid Premium, calling the API, and posting 18 near-identical replies in bursts of three-minute intervals is not "an indie founder trying to engage with the community." It's a textbook positive example in their anti-spam training set. Specifically, it's the worst kind: a paid account, because paid spam has higher disruption-per-dollar than free spam. Premium does not buy you any leniency. If anything, it raises the bar for behavior, because you've now demonstrated willingness to pay to amplify whatever you're doing.

I didn't trip one rule. I tripped four at once: posting rate, template uniformity, burst pattern, and API-driven activity on a young account. Each one alone might have triggered a soft warning. All four simultaneously triggered the permanent option.

Why the "engage, don't broadcast" strategy still failed

Here is the part I keep coming back to. My intent was the right intent. I genuinely wanted to participate in conversations, not blast ads. Every reply I sent was, in isolation, on-topic and not spammy.

But intent doesn't show up in the audit log. Behavior does. And my behavior was: same person, same five minutes, same three-part structure, ten times in a row. From any reasonable distance, that looks identical to a content farm running on autopilot.

The strategy didn't fail because it was wrong. It failed because I let a tool quietly take over the part of the workflow that needed a human judgement on every single send. The script was supposed to surface candidates — that third rule I was so proud of: "Use scripts for finding conversations, not for writing them." Somewhere around Day 17, the candidates became the list, the list became the queue, and the queue became the schedule. The script was writing the replies. I just wasn't admitting it to myself. I stopped reading individual replies before clicking send. I stopped asking whether each one deserved to exist.

Two of those eighteen tweets I'm proud of. The other sixteen I should have deleted before posting.

Things I now believe that I didn't before

A new account has no credibility capital. Zero. Whatever leeway established accounts get for occasional volume spikes, you don't have it. A 23-day-old account is a stranger to the platform's anti-spam model, and strangers are treated with the threshold of suspicion that strangers get treated with everywhere. The mistake I made was acting like a tenured user when I was a new one.

Automation costs are not measured in tokens. They're measured in judgement calls. Every reply you let a script send is one judgement call you didn't make. The token cost of writing a reply by hand is small. The judgement cost of letting a script send it is the entire account.

Templates are how you signal you're a bot. You think you're saving time. The platform thinks you're a content farm with a Mad Libs generator. The platform's NLP can detect cosine similarity between your replies trivially. Two replies that share 60% of their sentence structure read as "machine-generated" to the system even if you wrote them by hand. There is no way to template your way to looking authentic.

"Move fast and break things" doesn't apply to platforms you don't own. It applies to your own product, where the worst case is you ship a bug. On X, Reddit, HN, LinkedIn, the worst case is you lose access permanently to a distribution channel you cannot rebuild. The risk profile is completely different and most founders, myself included, do not internalize this until it actually happens.

What the appeal looked like

I wrote an appeal. It was honest, took responsibility, didn't make excuses, explained the company was real and the behavior was correctable, offered to accept probationary rate limits and audit and business verification. X denied it in about 24 hours with a templated rejection. The denial cited "inauthentic behavior," which inside X's policy tree is a tag that's notoriously hard to overturn because it's about how the account exists rather than what any single tweet said.

I sent one follow-up from the company domain email establishing that the account, the domain, and the company were all genuinely connected. I'm not expecting a reply.

What I'd tell you if you were about to launch a SaaS account

Three things, in order of impact.

First, do not run any automation against a new account for at least 60 days. Not "limited" automation. Not "just for finding things to reply to." None. Build the credibility capital manually, slowly, with each interaction as a deliberate human decision. The cost of this is a few extra hours a week. The cost of skipping it is the account.

Second, don't template. I explained above why the platform catches this — the short version is: if your replies share sentence structure, you read as a bot, end of story. Make every reply structurally distinct. Vary your opening sentence. Break your own pattern deliberately.

Third, audit yourself before the platform does. I was running a daily self-audit report. It clearly flagged the Day 23 bursts. Read your own data and stop yourself before the platform stops you. The audit warned me. I didn't pause fast enough. That, more than anything else, is the part I'm taking forward.

What we're doing now

We're not running an X account anymore. We may have a personal account from a team member at some point, run entirely by hand, but the official @synrouterai is gone and we are not going to try to game the system to get around the platform ban.

We're putting the time we would have spent on X into the blog, Hacker News, Reddit's r/LocalLLaMA and r/ClaudeAI, and Discord servers where the developers we care about actually hang out. Twenty-three days on X produced zero conversions and one suspension. That's a clear signal about where attention is being repaid and where it isn't. So we're putting our limited founder-hours into channels where the economics aren't rigged against new accounts.

If you want to know what we're building or how the inference routing works, check out the docs or what we've been writing on the blog. If you've made the same mistake we did, or are about to, I hope this is useful.


The raw data behind this post — the self-monitoring reports, the daily audits, the suspension email — is available on request. Email luoshi@synrouter.ai.

Building something that talks to LLMs and would rather not burn tokens figuring out routing? We're working on it at synrouter.ai.