How the FOMO score works

fomint reads X and Telegram for the last 60 minutes and gives every token two numbers: Heat, which is how loud the chatter is, and Organic %, which is how much of it comes from accounts that look real. Both come from a published formula, and the same inputs always give the same score.

The two numbersFormula 1.0
Heat
0.35 V +0.25 B +0.20 E +0.20 C
Organic %
100 × (sum of author weights ÷ number of authors)

V is velocity, B breadth, E engagement and C cross-platform. Each part is scored from 0 to 100.

Heat

Heat adds up four parts, each scored from 0 to 100 and weighted as shown below. Velocity is how much louder the last hour is than usual, breadth is how many different people are talking, engagement is how much attention their posts get, and cross-platform is whether the talk shows up on both X and Telegram.

The four parts of HeatWeights add up to 100%
PartWeightInputSub-score, 0 to 100
V Velocity35%v = weighted mentions in the window ÷ the larger of the hourly baseline and 3100 × min(1, log2(1 + v) ÷ log2(21))A 20× spike scores 100. Normal volume (1×) scores 23.
B Breadth25%a = unique authors across the X sample and the Telegram posts in the window, capped at 50100 × min(1, log10(1 + a) ÷ log10(51))50 authors score 100. 10 authors score 61.
E Engagement20%r = median engagement per mention in the window ÷ the larger of the baseline median and 1. Engagement is likes + 2 × reposts + 2 × replies on X, and reactions + replies on Telegram. The baseline is this token’s own history, or the median across all tracked tokens when it has none.100 × min(1, log2(1 + r) ÷ log2(11))A 10× lift scores 100.
C Cross-platform20%aX and aT = unique authors in the window on X (in the 50-post sample) and on Telegram100 × min(1, min(aX, aT) ÷ 10)Ten authors on each platform score 100.

Every part is rounded to a whole number before it is weighted, so the four numbers on a result reproduce its Heat by hand. Heat is then rounded to a whole number too.

Two things are fixed before anything is scored. The window is the last 60 minutes: a post counts if it was made after 60 minutes ago and no later than now. The baseline is the token’s average mentions per hour over the previous 24 hours, with the window left out.

What counts as a mention
A post thatWeightWhere
contains the exact contract address1.0X and Telegram
contains a DexScreener, Birdeye or pump.fun link to the token1.0X and Telegram
uses only the $TICKER, with no address0.3X only, labelled ambiguous

Each author counts at most 3 mentions in the window toward velocity, so one account cannot move the score alone.

A post that only uses the $TICKER, with no contract address, could be about any token with that ticker. It counts at 0.3 of a mention and is labelled ambiguous. Cashtags are counted on X only, so a $TICKER on Telegram is not a mention.

On X, the Counts endpoint returns totals without authors. To keep the three-per-author limit meaningful, fomint scales each Counts total by the ratio of capped to raw mentions in the 50-post sample. If 6 of the 50 sampled posts come from authors who had already used up their three, the sample counts as 44 of 50 and the totals are multiplied by 0.88.

How each part scalesScore, 0 to 100
V Velocity35% of Heat
0501000510152025v: volume as a multiple of the usual hour1× = 2312× = 8420× = 100
B Breadth25% of Heat
0501000102030405060a: unique authors, X sample and Telegram10 = 6150 = 100
E Engagement20% of Heat
050100024681012r: engagement as a multiple of the usual3× = 5810× = 100
C Cross-platform20% of Heat
05010002468101214authors on the smaller of the two platforms5 = 5010 = 100

Every part flattens out on purpose. The first few authors and the first doubling of volume move the score most, and nothing past the cap adds more.

Worked exampleHeat 86

A token trading at 12 times its usual hourly volume, with 53 different authors (22 on X and 31 on Telegram), whose posts draw 3 times the usual engagement.

PartScore × weightPointsOn the scale
Velocity84 × 0.3529.4
Breadth100 × 0.2525.0
Engagement58 × 0.2011.6
Cross-platform100 × 0.2020.0
HeatSum of the four86.0Peak FOMO

The total is rounded to a whole number. 86 sits in Peak FOMO, which runs from 76 to 100.

Bands

The Heat number maps to one of four bands. The cut-offs are fixed, so a band means the same thing for every token and does not move with the market.

Color is never the only signal: every band also has a name and an icon. The imp on the gauge changes with the band too, asleep when it is cold and fired up at the peak.

The four bands of Heat
  • Ice Cold0 to 20
  • Warming Up21 to 50
  • Building Momentum51 to 75
  • Peak FOMO76 to 100

Organic %

Organic % shows how much of the chatter comes from accounts that look like established, independent people. It reads account age, followers, profile details and posting patterns, so it describes account quality, not anyone’s intentions. It never names an account, and it says nothing about what anyone meant by posting.

Every unique author in the window gets a weight from 0.05 to 1.0. Organic % is 100 × (the sum of the weights ÷ the number of authors), rounded to a whole number. With no authors there is nothing to average, so it reads “no mentions”, never 0%.

A weight starts at 1.0. Each signal that applies to an author multiplies it, and the result never goes below 0.05.

Seven signalsFloor 0.05
SignalMultiplier
X account younger than 30 days× 0.2
X account with fewer than 50 followers× 0.4
X account with a default avatar× 0.5
Telegram sender with no username and no profile photo× 0.4
In a duplicate-text cluster: 3 or more posts in the window with the same normalized text, or 85% or more similar× 0.25
In a burst: more than 40% of all mentions in the window land inside one 60-second span, and the author posted in it× 0.5
Serial poster: 8 or more different token addresses tracked by fomint in the last hour× 0.3

Multipliers stack. An X account made 12 days ago with 31 followers gets 0.2 × 0.4 = 0.08. If it also posts copied text, 0.08 × 0.25 = 0.02, which is lifted to the floor of 0.05.

Where the rules leave room, these are the readings fomint uses:

  • Before posts are compared, the text is lowercased and its links, @mentions, emoji, punctuation and # marks are removed. The dollar sign stays, so $TICKER keeps its meaning.
  • A post with no words left after that never joins a duplicate cluster. That covers a bare link, a post of only emoji, and a label like “CA:” next to the token’s own address. Otherwise three people pasting the same address would look like one copied sentence.
  • Two posts belong together when their normalized text is identical or at least 85% similar, measured on overlapping three-word phrases. Clusters grow by single linkage: if post A matches B and B matches C, all three are one cluster, even if A and C are less alike. A cluster needs 3 or more posts, and each author in it takes the multiplier once.
  • The burst rule looks for any 60-second span that holds more than 40% of all the mentions in the window, counting the X Counts total plus Telegram. Every author who posted inside such a span takes the burst multiplier.

A low Organic % does not say anyone did something wrong. It says the accounts posting look new, small or repetitive, or posted in a tight burst.

Three levels
LevelOrganic %
Mostly real accounts70 to 100
Mixed40 to 69
Mostly low-quality accounts0 to 39
No authors in the windowno mentions

Verdict

The verdict is one plain sentence, chosen from this table using both numbers. It describes the accounts that are talking and never makes a claim about the project itself.

Verdict by Heat and Organic %
HeatOrganic %Verdict
51 to 10070 to 100Real momentum
51 to 10040 to 69Busy, mixed account quality
51 to 1000 to 39Loud, but mostly low-quality accounts
21 to 50AnySome chatter, with the Organic % beside it
0 to 20AnyAlmost nobody is talking about this

In the 21 to 50 row, the result always prints the Organic % beside the verdict.

Confidence

Confidence says how much evidence sits behind a score. It is based on weighted mentions in the window: each mention counts at its weight from the table above, and each author counts at most three times. It is not a probability that the score is right.

Confidence tagWeighted mentions in the window
Weighted mentionsTag
Under 10Thin data
10 to 49Medium
50 or moreHigh

Under 10, a result also says: “Fewer than 10 mentions in the last hour. Treat this score as a rough signal.” When X is unavailable, either because the daily spend cap was reached or because the X API failed, fomint scores from Telegram alone and grades confidence on the Telegram mentions. “Show the math” under each result lists the sources it read.

Edge cases

Four situations get special handling.

  • A token with less than 6 hours of tracked history has no baseline yet. Its velocity part is capped at 60, and the result shows “New token, limited baseline”.
  • With zero mentions, Heat is 0 and the band is Ice Cold. Organic % reads “no mentions”, not 0%.
  • A ticker is never scored. If several tokens share it, fomint lists them ranked by liquidity and you pick the address you mean.
  • Author weights are computed once per window and cached with the result, so the same lookup repeated inside the 10-minute cache time shows identical numbers.

Sources

fomint reads three outside sources and keeps no post text from any of them. Each post is turned into a fingerprint the moment it is read, the fingerprint is used to spot copied text, and the text is dropped.

X, through the official API

Volume comes from the Counts endpoint, which returns hourly post counts for a query without reading the posts. fomint makes two requests: one for the address-and-link query, and one for the cashtag query, which leaves out posts that already match the first so no post is counted twice.

Authors, engagement and account details come from a sample: the 50 most recent posts in the window, posted after 60 minutes ago and no later than now. If the window holds 50 posts or fewer, the sample is every post.

If X cannot be reached, or the daily spend cap has been reached, the result is built from Telegram alone.

Telegram, public groups only

fomint reads public groups through one dedicated account and measures them in full from its own database. It can only see groups on its monitored list, so every result shows how long that list is.

Telegram: 20 groups monitored

[owner to add how monitored Telegram groups are chosen: which groups qualify, how they are tagged by chain, and when one is removed]

If Telegram cannot be read, the result is built from the last stored data and marked stale.

DexScreener, with GeckoTerminal as a backup

DexScreener turns an address into a token: its chain, name, symbol, liquidity, pair age and official links, on Solana, Ethereum, Base and BNB Chain. If DexScreener is unavailable, fomint uses the public GeckoTerminal API instead.

Limits

A score reflects what fomint can see. This is what it cannot.

  • Private Telegram groups and channels, and any public group that is not on the monitored list.
  • Posts that were deleted before fomint read them.
  • Anywhere other than X and Telegram, such as Discord, Reddit, YouTube or Farcaster.
  • Posts outside the 60-minute window. A burst that ended an hour and a minute ago does not count.
  • Most of the posts on a busy token. On X, authors, engagement and account details come from the 50 most recent posts in the window, so breadth, cross-platform and Organic % describe that sample, and at most 50 X authors can be seen.
  • Price. fomint reports chatter only, and has no view on value or on what happens next.

Versioning

This page describes formula 1.0. When a rule, a weight or a threshold changes, the version number changes and the change is published on this page. Every result and share card shows the version it was computed with.

Under one version, the same inputs always give the same output. All times are UTC.

Version history
VersionStatusWhat changed
1.0CurrentFirst published formula.

Disclaimer

Social activity, not financial advice or a prediction.

fomint reports how much people are posting about a token and how real the accounts posting look. It does not report or predict price, and nothing on this site is a recommendation to buy, sell or hold anything. Scores come from public posts in a 60-minute window and can be wrong, so read the confidence tag and the limits above before relying on one. What fomint stores is on the Legal page.