TEASEDocs
ProductsClubHow-to

Run a DM-history scan to attribute organic fans

Fire a one-click, ban-safe sweep that reads fans' DM histories and infers their source, country, and a sales portrait — without re-clicking.

Who this is for: workspace owners enriching fans who carried no click or link signal — the ones the source leaderboard would otherwise show as organic.

The scan lives on the All Fans screen (/fans). It is genuinely fire-once: pick a target on the slider and press Start scan, and the server keeps a background sweep going — you never re-click, and cards fill in live as conversations land.

Start the scan

The ? button next to the two scan buttons holds the explanation and a how many to analyze slider (default: a sensible slice of your total candidates, up to whatever you drag it to). Press Start scan once — the engine then reads spenders' chats one by one, top-spenders first, at its own human pace.

Watch it work

A progress bar and an honest phase line track real state, not invented theatre:

PhaseWhat's actually happening
The engine is reading chatsA live capture wave is running right now (a real signal, not a guess).
Waiting for the engine's next passA batch is queued; nothing is being read yet.
Paused — account protectionThe engine's own ban-safety pause; collection resumes on its own.
Scan complete / Scan stoppedDone, or you pressed Stop.

Cards pop in and pin green at the top for a few seconds as each fan is portraited, then settle into their normal sorted position. A coverage strip above the grid shows the honest current ceiling: source found for about 65% of scanned fans, country for about 78% — with the reason why (an organic fan only names their platform about 1 in 10 times; too-short chats leave no country marker) one hover away.

Stop, or let it finish

Stop halts further harvesting; any batch already in flight finishes on its own. A separate Rescan all button re-runs the improved attribution prompt over already-scanned fans — zero new OnlyFans calls, since it only re-reads what's already captured.

What the scan is allowed to change

The scan always writes the fan's inferred source/country/tags as a discovery record — that part happens regardless of confidence. It only overwrites the fan's canonical source when the result is confident (≥ 0.6) and the fan has no hard signal yet. A fan who already has a cid or a mapped link is never touched — a real click always outranks a chat guess. The full mechanics of this precedence are in Fan profile & signals.

Ban-safe by construction

The harvest is the engine's own passive, serial, human-paced capture — one thread at a time, self-halting on any throttle. The scan tab only queues the next batch; it never drives OnlyFans directly, and the portrait step is one local LLM turn over text already captured. Every read is scoped to your own creator page.

When it doesn't start

curl -X POST "https://app.tease.link/api/admin/fans/harvest/start" \
  -H "Authorization: Bearer $TEASE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "target": 100 }'

A start request needs a live engine session for that owner (a connected gateway provider). Without one, the job is created but flips straight to an error status rather than sitting stuck. Starting a new scan while another is already running for the same owner doesn't queue behind it either — it supersedes the in-flight one, stopping it and starting fresh, rather than stacking a second run behind the first.

What this scan is not

This page covers discovering a source for an organic fan by reading their chat. Two related, but different, tasks live elsewhere:

  • Binding a scanned OF campaign link to one of your registered sources is a separate, owner-confirmed step — see the source-layout onboarding flow in Source attribution.
  • Manually correcting a fan whose source landed wrong, or reviewing an ambiguous LLM guess, is its own review queue, not this sweep.

What's next

On this page