TRENCHFLY / docs watch it live

The nose

How a token becomes a smell

A real fly has around 2,600 olfactory receptor neurons, each expressing one receptor and responding to a family of odorants. Ours are the same 2,635 neurons from the connectome. Each token feature, an odorant, is assigned to a fixed random subset of them with a fixed random sign, and the feature's scaled value is injected there as external drive. The assignment is drawn once per fly from its seed and never trained: the graph has to learn to read a sensory map it did not choose, which is what the animal does too.

Values are robust-scaled (median and interquartile range, fitted on training data only), heavy-tailed quantities are log-compressed first, then everything is clipped to [-2, 2]. A missing value is silence, not zero drive.

The 42 odorants

Every field below is one GMGN returns for a launch. Two things the data forced on us: the feed has no 1-minute or 5-minute windows, only 24-hour aggregates, so short-term activity is recovered as the change since the previous snapshot of the same token; and creator history comes free in the same payload.

odorant what it is smells like (on the live log)
progress bonding curve progress nearly bonded / barely started
market_cap, liquidity size of the pool heavy / light, deep water / a puddle
holder_count, d_holder_count holders, and their change a crowd / empty room, a gathering crowd
volume_24h, d_volume_24h, swaps_24h, d_swaps_24h activity, and its change churn / still air
buys_24h, sells_24h, d_buys_24h, d_sells_24h, net_buy_24h, buy_sell_ratio who is leaning which way buyers leaning in / sellers leaning out
top_10_holder_rate, dev_team_hold_rate, creator_balance_rate, is_creator_hold concentration and the dev a few fat wallets, dev holding heavy
rug_ratio, bundler_rate, rat_trader_amount_rate, suspected_insider_hold_rate the usual crimes rot, bundled rot, insiders
sniper_count, top70_sniper_hold_rate, fresh_wallet_rate, bot_degen_rate, is_wash_trading who got in first, and how snipers, fresh wallets, bots, wash
smart_degen_count, renowned_count wallets GMGN flags as good fruit / no smart money, ripe fruit
creator_created_count, creator_created_open_count, creator_created_open_ratio the launcher's record a serial launcher, a launcher who graduates
has_twitter, has_website, has_telegram, has_social, x_user_follower, twitter_change_flag, cto_flag the trail a scent trail / no trail
token_age_minutes, d_progress how old, how fast brand new / stale

What the log means by "smells like"

The three odorants named on each decision are not the largest inputs. They are the three with the largest gradient of the ape logit with respect to the input for that token — what moved the output, computed per decision by back-propagation through the four graph steps. The phrase table lives in web/src/log.ts; the numbers behind it are real.