Changelog
Every change since the first commit, dated the day it landed. Newest first. The rail is one tick per day: hover for the day, click to go there.
The graduated-coin screen's feed honours GMGN's rate-limit ban and says when it is dark, an analysis says who sold in the last 24 hours, the research board lines up, and the XPL piece reads on three paths
The screen's feed comes back after a ban, and says when it is dark
Graduated coins reach the bot from GMGN alone, and GMGN bans an address that calls it too often — every call during a ban extends it, and the bot made twenty or more a minute, so a ban never lifted: the screen saw no new coin for eleven hours on 29 September and again from 00:57 to 09:52 today, and read the silence as a quiet market because the error was thrown away. The bot now records the moment a ban lifts and makes no GMGN call before it, spaces its calls a quarter second apart so its own bursts stop earning bans, keeps every failure's reason, and writes “GMGN gave no rows” with that reason to its log while a feed is dark. No rule or threshold changed.
Who sold in the last 24 hours
A coin's analysis has a new panel under Exits and holders: the day's selling in one line with its verdict — short-term hands, or long-term holders leaving — then the sellers grouped by how long they had held the coin (under six hours to over a month) and by who they are (insiders and snipers, freshly funded wallets, large, mid and small wallets, and the sellers who were among the fifty largest holders before they sold), each with the dollars it sold, its share of the day, how many of it left entirely and how much of its selling was in profit against what those wallets paid. The day's totals stand in five figures, the share of the selling by holding time is one bar, short hands at the left, and the detail is two tables. It is read from the trades and wallets the analysis already holds, so it costs nothing; a coin analysed before today shows it the next time it is read.
The XPL piece reads on three paths
“Plasma One is growing, but it cannot absorb XPL’s unlocks” is shorter and clearer: every projection runs on three paths — growth holds, growth fades, no growth — instead of four with two names for pace; the thesis-checked table is gone and its two corrections live in the verdict; each section is one chart or table and a few paragraphs; and the twelve-month revenue, buyback and unlock figures sit in one table. Every figure was re-derived independently from the source data (293 checks; one rounding in the fine print, 13% to 14%, corrected).
Curated research draws fans
A curated piece can show a record and the paths ahead of it as one chart: the record draws itself to now in ink, then the paths fan out to the horizon in their colours with their end figures beside them and the spread between them tinted. The header says now and where each path ends; over the fan, the pointer names every path’s figure for the step in hand and lifts the path nearest it. The XPL piece uses two, for card spend and for locked supply. A column chart’s bars now fill most of their band, and a piece’s sources are a list of links — the name and its address, nothing else.
The shared analyses line up
A row with a Remove or Analyse button used to sit on a different grid from the rows without one, so the stage chips, the clocks, the FDVs and the grades stood at three different positions down the list. Every row now keeps the same columns. And the exact time under “analysed 12h ago” is no longer cut off by the row it hangs from.
The holder strength index reads as rows
Chain Analytics’ index no longer scrolls sideways: each coin is a row — the coin, its FDV with the holders read under it, the index bar with its change, and the four areas as labelled figures — which folds to two and three lines on a narrow window. The rank switch is gone; the list ranks by the index and the change sits beside every figure. The areas have the site’s own names, on the index and the setup grade alike: firm hands, fresh buying, footing and chatter.
The grade shows its figures, not their marks
On an analysis, the setup grade’s and the holder strength index’s parts used to carry a small grey mark beside every figure. The marks are gone — each is one hover away — and the bar under the grade draws its track the rest of the way to 100, so the room past a 74 reads as the rest of the whole. A first grade and a first index no longer say “first grade” and “first index” beside the figure: the change appears from the second analysis.
The first curated piece is public, and the graduated-coin screen starts learning the day-later value, in shadow
The first curated piece is public
“Plasma One is growing, but it cannot absorb XPL’s unlocks” is open to members under Research’s Curated Research: what the Plasma One card’s own dashboard shows about spend, cashback and lockers, what the token’s unlock schedule does from October, and how far the two are apart — with the owner’s figures checked and, where they were off, corrected on the page.
The screen's day-later model runs beside the rule
The graduated-coin screen now carries a second, learned judgement alongside the hand-written rule the owner approved: a model fitted every night on what each coin looked like when it was checked and how its pool was priced a day later, dead pools counted at the floor rather than dropped. It records its verdict on every check and can never pass more coins in a day than the rule does. Nothing it says reaches the feed: it stays a shadow until a forward test over label-complete days earns it a promotion, which is the owner's call and months away at realistic gains. The first fit ran on 8,650 checks.
A holder strength index ranks the analysed coins, every analysis says how long its holders have held, and the operator's own research has a part of its own
Research's four parts stay on one row
On a narrow window the switch between Coin Analysis, Chain Analytics, Social Analytics and Curated Research had folded into two rows of two. It is one row at every width now: pills at their natural width from 580px, as the header's own tabs are, and on a phone the four share the row under short names — Coins, Chains, Social, Curated.
The interest question goes once you have answered
On an analysis, “Want more setups like this one?” used to stay on the page after a press, lit with your answer. Now a press folds it away, and a reader who answered on an earlier visit never sees it again on that coin.
The header carries the coin as you read its page
On a coin's page and on an analysis, once the heading has scrolled under the header, the feed, statistics and research tabs give way to the coin itself: its picture and ticker, its site and X, and a copyable contract, shown as much of the address as the row has room for. The tabs slide up and out the way the page is going and the coin comes up in their place; scroll back and they return the same way. No figures, and nothing that acts on the call moves up there.
The screen reads pump.fun callouts again
Since the evening of 24 September every graduated-coin check had counted 0 pump.fun callouts: pump.fun had removed the endpoint the bot asked, and the bot took the error for an empty answer. The screen’s callout readings — how many callers, how many with substance, how many in the last two hours — feed its main rule, so it had been passing about a third fewer coins than the rule the owner approved. The bot now reads the same callouts from the coin’s holder positions, in the same shape as before; no rule or threshold changed.
The feed opens again for anyone with a muted call
Since this evening's “the feed remembers what it showed”, the feed threw before it drew for every member with a muted call and showed “We couldn’t load this page”; with nothing muted it was fine, which is why the checks passed. Fixed: the muted list is read after the clock it reads.
A tab left behind by a deploy reloads itself
Every deployment replaces the site's files, and a tab opened before it kept asking for the files it was built with: the next tab press that needed one it had not loaded got “We couldn’t load this page”. A load that fails that way now reloads the page once, which puts the tab on the new build; the panel shows only if the reload hits the same error. The error is also recorded, which it was not.
The feed has no pages
Previous, Next and “Page 1 of 60” are gone. The feed is one list: the next calls arrive before you reach them as you scroll, the pages you have climbed well back above fall away, and the calls in hand refresh with the feed as it changes. Leave for a coin or another tab and come back, and everything you had scrolled into is still there, the first calls first. At the end, one line says it is the end.
The feed remembers what it showed
Coming back to the feed used to rebuild it from the router's copy — up to five minutes old — then ask for the feed twice, re-read every card's live figure and forget the views it had answered. It now starts from the list it last drew, live figures included, confirms it with one conditional request, and keeps the views it answered; the memory is cleared when the signed-in user changes.
The market's figures are in the first paint
Every card on a fresh feed used to draw the bot's last observation — thirty of thirty older than five minutes — and redraw its FDV, its multiple and “since call” one round trip later once the browser had asked the market. The server now asks the market for the cold cards while it builds the page, waits a quarter second at most, and draws what it has; the browser's own re-read finds nothing cold. A later answer can never move a card's figure backward.
Less JavaScript on every page
One import chain — the review button's validator living beside a server-side hashing function — pulled a 124 KB (compressed) polyfill of Node's crypto into every page on the site; the validator now lives in a file with no Node imports. The error pages loaded the analytics library up front on every page too (76 KB); it loads when an error actually happens.
Research sends what it draws
The research page shipped the lab's whole bundle to the browser on every build and prefetch — 511 KB, of which the per-call closes and the feed model, 325 KB, no part of the page reads — and listed curated pieces with their full bodies. It now sends the five things its parts draw, lists a piece by its card alone, reads a piece once per request instead of twice, and no longer listens to the feed's change stream (it asked for its data 3.5 times a minute for one real change).
The live stream names the version it saw
A change event from the server now carries the mirror version behind it, so a feed already holding that version fetches nothing — the stream's own first event on opening, and every reconnect's, used to cost two fetches of a feed already on screen. The heartbeat is an event the browser can hear, and the fallback poll waits until the stream has been silent for 25 seconds and then backs off, instead of asking every two seconds.
One sign-in read when a page wakes up
The stocks side's navigation used to mount on every crypto page, subscribe to the sign-in and read the profile, and then draw nothing; it is gated off the crypto side now. And the sign-in state used to reach every listener twice on load, each answering with the same reads; the same session is delivered once.
A tab switch no longer throws the other tabs away
Research used to ask the server for its whole page again — after a coin was removed, after an analysis finished, and every time the tab was returned to after a minute — and in this Next that discards every other tab's prefetched copy and builds them all again, which is why the next tab press landed on a skeleton. It now asks for the board alone, per member. A refreshed analysis asks for its page once, when the new analysis is there, instead of every five seconds for two minutes. The tabs renew their prefetched copies before they go stale, and a coin page's “Back to the feed” steps back through the browser's history, which is instant.
Statistics count once, and a period press answers from memory
The statistics page counted the whole grading ledger from nothing on every build — a tab's background prefetch included — and each day of the chart rescanned every row. The counts are now kept per version of the ledger and reused within the minute, the days are bucketed in one pass (checked equal to the old count across every filter combination), and the page fetches the other three periods once it is idle, so pressing 7, 14, 30 days or all time answers at the press for a few minutes rather than after a round trip.
The feed, a coin's page and an analysis stop reading the grading ledger
Every one of those pages was built from the whole mirror — the calls and the 36,000-row grading ledger together, re-checked on every build after each feed upload, about every thirty seconds — although none of them shows a grading row. They now read the calls alone, find a coin by its key rather than a scan, and the ledger is checked once per version for the pages that do read it. The page also says a mirror has gone quiet as soon as it has, rather than only after the server restarts.
No stray line beside a chain's name
The short coloured dash before each chain in the call results table was a key to the chain's line in the chart under it; the chart already names its lines, so the dash is gone.
Coin pictures load straight from their hosts
A card's coin picture used to be asked of the site first, which answered with a redirect to the picture's host — a server call of half a second, two seconds for a coin the site had not seen, thirty times on one screen of the feed. The browser now asks the two picture hosts directly, and the first four cards' pictures are fetched first rather than as they scroll into view. The site's own lookup stays as the last resort for a coin neither host has.
The chain on the coin
A coin's picture carries its chain: a small disc at the bottom right with the network's mark, on every coin image from the call cards to the research board and the coin page. The “Solana” chip beside the ticker is gone — the picture says it — and where a line already names the chain in words, the little mark beside the words goes too. The chain only, never the launchpad.
The day-later model
The statistics page has a model learning which calls are worth more a day later — the close a day after the call against its entry, not whether it doubled in its first hours — from what each call looked like the minute it went out: the coin's age, size, liquidity, its moves and volumes over five minutes to a day, buys against sells, paid boosts, and who had been writing about it. It refits every two hours over every stamped call whose day is settled, and every figure it shows is walk-forward: each day scored by a model fitted on the days before it. Until 120 stamped calls are a day old it shows what it has to learn from; then how a hold on its bottom third would have done, with the first-day double rate beside it, because the replay found that is the cost (the calls it would hold back halved 72% of the time by the next day, and had doubled in their first hours more often). Nothing on the feed is held back by it.
A change to the site's notes no longer reloads it
An open tab reloads itself the next time it navigates after the site is redeployed — that is how it picks up the new version — and today the site was redeployed fifteen times, some for a change to its notes alone. A commit that touches only the notes, the audits or the schedules no longer builds or deploys, so an open tab is not reloaded for one.
Curated research draws charts
A curated piece can carry its own charts: lines or columns over time, several series in the lab's colours, a shaded field where the figures turn from record to projection, and levels drawn across (“30% of supply”). They read like every chart on the crypto side — a cursor, one card above the pointer with every figure, a tap to pin — with the key underneath.
The setup grade
A coin's analysis is graded 0 to 100 on everything it read, not on the bottoming test alone: risk (30% — liquidity, holders, age, the supply in flagged hands and the largest holders' hands, the bots' share, and how hot the crowd is), conviction (30% — the holder strength index's own area: how long the typical token has been held, who never sold, who left, what the largest holders did), timing (20% — the bottoming test's stage, the held tokens under water, the drawdown), demand (12%) and attention (8%). Under $25K of liquidity, 150 holders, or with flagged wallets, the largest holders or bots past their floors, a coin is “too risky” whatever the rest says. The grade opens the analysis page, sits on the shared analyses' rows where “N of 5 checks pass” was, and rides on the feed's setup cards; the weights were read off a replay of the lab's own record (docs/audits/setup-grade-2026-09-29). Coins analysed before today are graded the next time they are refreshed.
Curated Research, a part of research of its own
Research has a fourth part beside Social Analytics: the operator's own pieces, each with a title, a summary, the coins it covers — with their images — and its own figures, tables, bars and notes, published to every member on its own page under /crypto/research. Only the operator writes them, and not in a form: a piece is worked out with the operator in chat, its figures computed, then published from the command line. A piece can be kept as a draft or dated ahead, in which case it opens at its address before it is listed.
FOMO theses reach the bot again
FOMO's edge had been refusing every one of the bot's calls since the evening of 28 September — the thesis feeds answered “authorization: false” to a browser's name on a bot's connection, and the bot counted the refusals per coin without a word, so no FOMO thesis was judged, posted or listed for seventeen hours. The bot now calls FOMO under its own name, and any answer other than 200 is written to its log, once per ten minutes, so a silence like this one is named at once.
The Research editor is gone
The Crypto desk's Research section, which lasted an afternoon, is removed: curated pieces are published by scripts/crypto-research.ts, not typed into the admin.
FDV and its figure on one line
On the shared analyses and the holder strength index, a coin's FDV reads “FDV $22.29M” on one line. The caption under it that flipped from “at the analysis” to “now” as the market's reading arrived is gone; the figure simply updates, and when it was read is one hover away.
The holder strength index
Chain Analytics opens on a table of every analysed coin scored 0 to 100 on how firmly it is held: conviction (half the index — how long the typical token has been held, the share of the held supply that never sold any, the holders who left in three days, and whether the largest holders are buying or selling), demand, market health and attention. Each coin's bar shows what each area adds, with the change since the coin's previous analysis beside it; rank by the index, by conviction alone, or by the change to spot coins whose holders are getting firmer. The areas and their weights are keyed under the table. Coins analysed before today are scored the next time they are refreshed.
How long the holders have held
A coin's analysis has a Holding time section under Overhead supply: the coin's holder strength index with its four areas side by side and what fed each of them, the held supply laid out by how long it has been held (under an hour to over three months) with how long the typical token and the typical holder have been in, and the same clock for the fifty largest holders and each wallet group — how long they have held and how many never sold any. Point at any bar for the figures behind it.
An analysis you asked for reaches your account menu
When an analysis you asked for finishes, or the lab could not do it, your account menu says so with its red count — wherever you are on the crypto side, and the next time you visit — with the way into the analysis. One whose ending you already saw in the note at the top is not counted again.
Open the analysis opens it straight away
The note's Open the analysis could land on “page not found” for up to half a minute after it said the coin was analysed. An analysis now counts as done only once it is on the site, and a coin's page looks for it again before saying it is missing.
Refreshing an analysis tells you how it ended
Press Refresh the analysis and the capsule turns busy at once. When the new analysis is done it appears without a reload, and a note at the top says so. If the lab could not do it, the note says why and the last analysis stays on the page — a failed refresh used to reload the old analysis without a word. Opening an analysis that is being read, or that has been read again since, picks up the same wait.
The front page moves as you scroll
Most discussed fits a small phone
On a phone narrower than 400 points, research's Most discussed list ran a coin's chain into its author count (“BNB Chain” into “authors”); the two counts now sit on their own line under the coin's name.
One typeface on the crypto side
Figures, coin names, contract addresses and invite codes are set in Geist like every other word, where they used to be in its monospaced cut; columns of figures still line up. The chart reading card's figures now keep their spaces (“33 of 129”, not “33of129”), and the share image sets its return in Geist too.
One typeface on the front page
The front page's figures and the trade card on it are set in Geist like the rest of the page, not the monospaced cut.
Every crypto page loads as itself
While a crypto page loads — the feed, statistics, research, a coin's page, theses, a coin's analysis, settings, the changelog, privacy and terms — it shows its own layout under the header with its tab lit, every word drawn as a soft dash where it will land and every picture as a soft block, instead of the feed's old outline on every page and no header at all on a reload. Research opens on the part you last chose.
The waiting room and the account pages load as themselves
The waiting room showed the old front page's outline, with a phone, while it loaded; it now shows its own screen with its words as soft dashes, and so do settings, the changelog, privacy and terms on both sides, pricing and the app waitlist, and sign in, join and reset in the rare moment one is slow to arrive.
The admin loads as its dashboard
While the admin loads, it shows the dashboard's own layout — the heading, the desk and section switches, the search, the category pills and the account rows — as soft dashes, instead of the sign-in card.
A plainer pitch under the headline
The front page now says: “Thousands of people post their theses on FOMO and pump.fun every day. sniff reads them all, calls a token when enough people are talking, then prices the call on the spot and keeps score.”
The front page loads as itself
While the front page loads, it shows its own blue field under the grain, with the headline, the pitch and the two buttons drawn as soft dashes exactly where the words will land, instead of the old white layout with a phone.
The front page loads once on an iPhone
Safari wrote the call cards' dates differently from the server ("Sep 10, 2026 at 07:37 PM" against "Sep 10, 2026, 07:37 PM"), so on an iPhone the front page threw away what it had loaded and drew itself again. Dates are now written the same way everywhere, so the page loads once, and so does the crypto statistics page.
Nothing on the front page's floor overlaps
A call's card no longer covers another call: the biggest calls keep clear the space their card rises into, and on a phone every card rises into the open space under the buttons, with a thin stem down to its coin. On the wall, the names beside a call clear away before its multiple appears, so a multiple never runs into the name next to it.
The light runs back up the wall when you scroll up
Scroll back up once the floor has stood up and the band of light runs back up the wall with your scroll, turning the calls back into names as it passes, then the floor lies down. Stop scrolling and it stops; scroll down again and it reads down again.
The blue panels keep clean corners as they slide in
On an iPhone, the blue panels further down the front page showed grey speckled corners for a moment as they slid in. The grain now stays inside their rounded corners.
The floor of coins stands up as you scroll
Scroll down on the front page and the floor of coins sniff has called stands up into one wall of names in under a second. A band of light reads down it and the calls that ran light up with their multiples, then the rest of the page slides up over it like a sheet. Scroll back up and it lies down again at once. It plays on every phone, the small ones included.
The floor shows the score from the start
The calls that ran stand on the front page's floor from the first moment as white capsules with their multiples, ten on a wide screen and fewer on a phone. The light walks from one to the next and lifts each one's card. A capsule no longer vanishes when the light reaches it. The wall the floor stands up into now carries sixteen.
A finer grain and a smaller headline
The grain over the blue is sharper, one speck to a screen pixel, and the headline is a notch smaller so the floor and the calls rising from it have room. On a phone the two buttons share a row.
Headings say what a section is, research has a phone layout, and an analysis tells you when it is done
A new front door
The landing page opens on one field of sniff blue, the words in white and a print-like grain over the whole thing. Under the words is a floor made of the coins sniff has called, fading to the horizon: a light works across it the way a nose works a floor, and every few seconds it stops on a coin and the call rises off the floor as a card — the multiple since the call, when and where it was called, and who set it off. The pitch now leads with the crypto side: a thousand posts a night on FOMO and pump.fun, a call the moment enough real wallets are talking, priced on the spot and scored. The three crypto chapters come first, every chapter’s picture stands on the same blue, grained field, and the page’s motion is gentler: things settle in rather than bounce. Every chapter now carries a plain label — Calls from the chain, Every trader on the record, Every call, scored live — and a sentence or two, instead of a slogan and a paragraph.
The daily net flow chart is easier to read
On an analysis, the flow chart is now just the bars and the price line: the multiple that stood over every bar and the count of big sellers under it moved into the hover reading and the day table. Point at a day and the other days fade, and the reading leads with that day’s three figures — bought, sold in profit, sold at a loss — in the bars’ own colours.
A chart’s reading floats above your cursor and its figures roll
Hovering any chart — call quality by day, the flow, the test, the holding curve, the bars and ladders on an analysis — shows its reading in a small card just above the pointer, and the figures roll from one day’s values to the next as you move. The dashed cursor glides to the day instead of jumping, and the reading stays up while you move between bars, rungs or days; it closes only when you leave the chart.
Trade on FOMO and Trade on Axiom are back on the call card
The two trade buttons stand at the foot of every call card again, on the left, as they did before this morning. The Save and Rate rail beside them is now the size the old tools were — icons only, with the … opening Share and Mute.
The sort menu’s icons have colours
Latest activity, First called and Return since call each carry a colour of their own, as the signal filters do.
White text is a shade softer
Text on the dark theme is now rgb(242, 242, 242) across the site.
Removing a shared analysis takes effect at once
The count beside “Shared analyses” falls as you remove coins, and the list reads itself again from the lab after a removal, when an analysis you asked for finishes, and when you come back to the tab — a coin you removed no longer comes back on the next load, and the coin you analysed no longer needs a reload to appear. The site also reads the lab’s file by version now, so a stale copy from the cache can’t stand in for the latest.
Only verified members remove shared analyses
The Remove on a coin you asked for shows only for a verified member (one who can rate calls) or the operator, and the lab refuses anyone else. A coin the lab found on its own stays the operator’s to hide.
A coin not analysed yet says how many are talking about it
Under the figure on a coin the lab offers, “people wrote about it, 2 days” is now “talking about it”: the number of different people who posted about the coin in the last two days.
Every “?” explains its section in three short lines
Across research, statistics, the coin page and theses, each question mark now opens with what the section shows, then at most two lines on how to read it — about a third of the words they had, with jargon and method notes gone.
A call card’s buttons are one rail
Save and Rate sit in one capsule at the foot of every call card, and the … opens Share and Mute. The trade buttons and the FOMO and pump.fun links are off the feed card; the coin page keeps them.
Calls one to two days old are measured again
Since 25 Sep a call’s first-day result was saved only once the call was two days old, so the statistics chart dropped every call between one and two days old — 25 Sep had no point at all. A call is now measured as soon as its first day is over, the missed days were measured again, and a day the lab has not reached yet shows as still measuring instead of vanishing.
Every heading is a label, not a sentence
Across the crypto side the sentence headings and the small capitals above them are gone. Sections are named for what they hold — Your coins, Shared analyses, Call results by chain, Social activity, Bottoming test, Overhead supply, Daily net flow, Wallet groups — with a count or a date beside the name when it matters. The feed is headed Calls, the theses page Theses, statistics Bot performance.
Pressing Analyse opens a note at the top that follows the analysis
It says the analysis has started, turns while the lab works, and changes to done, with a button to open the analysis, when it lands (or says why the lab could not do it). It works the same on a phone, and a swipe or the × closes it.
The shared analyses have one order and no menu
The "What a rise meets" menu is gone. Coins that pass the bottoming test come first, then the newest analyses, and each row ends with how many of the test's five checks it passes.
Research on a phone
Each shared analysis is two lines — the coin and its FDV, then its stage, its checks and when it was analysed — instead of five, and Remove is a × at the end of the row. Chain Analytics no longer pushes the page wider than a phone.
The research menu's dot jumps between parts
Coin Analysis, Chain Analytics and Social Analytics are marked by a small blue dot that springs to the part you pick.
Names without the $, and figures in plain Geist on research
Coin names on the research page drop the cashtag. Names and figures there are set in Geist at a larger size with even digits, the setting of beui's tables, as a trial before the rest of the site.
The reading under each chart is its full size again
On a coin's analysis, the Good sign / Bad sign line under each heading had been drawn at the small capitals' size since yesterday; it is back to its readable 13px.
Research is shared: the lab suggests coins, members analyse them, and every chart says what it means
Rows in the shared analyses no longer run into each other
A row's clock is two short lines ("analysed 4h ago" over "found by the lab") in a column wide enough for them; it had run under the FDV. On a narrower screen the stage moves under the coin's name, the chain and launchpad wrap instead of being cut off, and on a phone the stage and clock get the row's full width.
The lab suggests coins instead of reading them on its own
The screen still looks for washed-out plays of size every four hours, but it no longer tears any of them down. What it finds sits at the foot of the shared analyses under "Not analysed yet", each coin with an Analyse button: press it and the lab analyses the coin for everyone, and it leaves the list. That was about three quarters of the lab's market calls.
An analysis is never updated on a clock any more
An analysis changes only when a member presses Refresh on it. The hourly re-reads of members' coins are gone; a coin stays in the shared analyses for three days after the last ask, then ages out.
Your coins, then the shared analyses, and the word is analyse
The research page's Coin Analysis part opens with the field ("Analyse", not "Read it") and your own coins under it, with no "yours" tag since they are all yours. The board is now the shared analyses: every coin any member analysed, for everyone, each row saying when and for how many members. The two readers' tables at the foot are gone.
Every chart on a coin's analysis says what it means
Under each section's heading there is now a chip — Good sign, Bad sign, Mixed or No reading, about a bottom forming — and one sentence that gives the figure and why it leans that way. The headings themselves are fixed sentences; the figures they used to carry moved into these readings.
The 50 largest holders, on both hands panels
A coin's analysis now reads the fifty wallets holding the most, whichever group they fall in, as one more row at the head of "Net buying, last three days" and "Share of traded supply held now": what they bought or sold over three days, and how much of the traded supply they hold. Older analyses gain the row when they are refreshed.
Back goes where you came from
The link at the top of a coin's analysis names the page that sent you there — research, the feed or statistics — and steps back through the browser's history, so research reopens on the part you were on. From a shared link it goes to research.
The refresh is a button you can find
On a coin's analysis the refresh is a labelled capsule in the site's blue beside the contract address, with the analysis's age next to it; while the lab works the capsule holds the two dots and says so.
The ? explanations are short
Every hint on a coin's analysis and on the research page is two or three short lines — what it shows, how to read it, what is left out — instead of one long paragraph.
Members enter the coins the lab reads, and the lab stops looking on its own
Reads are no longer rationed per member
The three-reads-a-day limit is gone: a verified member can ask for, and refresh, as many reads as they like. The lab keeps one fuse of 120 reads a day for the whole site.
A coin's read can be refreshed, and shows its social side
Under the coin's name a refresh button asks the lab for a fresh read of the coin (the page reloads itself when the read lands), beside how old the read is. A new Social analytics section shows what sniff said and when, whose post set the call off, and who is writing about the coin now: authors, posts and likes over the last two days, the last post, and the day's trading against the coin's value.
A coin's read carries its contract at the top
On a coin's read the contract address, and the link to the call when there is one, sit under the coin's name at the top of the page. The foot of the page — the venue buttons, the line about the read's source and its caveats — is gone.
The copy pill answers in blue
Copying a contract address now blurs the address out and "Copied" in, and the pill turns the site's blue for two seconds, instead of the green breath it took before.
The holding curve reaches two days, and holders against flippers is measured every two hours
The chains' holding curve now has a two-day point after one day, so a call's worth can be followed for 48 hours. Holders against flippers is measured every two hours rather than once a day; a token measured in the past week keeps its reading, so a run costs only the new tokens.
The lab looks for runners again, and any coin on the board can be removed
The washed-out screen is back on its four-hour beat after an afternoon off: the lab keeps looking for potential runners. Every board row now has a Remove: your own asks take the coin back, and the operator can set aside a coin the lab found, which hides it and stops the lab reading it.
The morning brief, with what ran inside it
The nightly brief is the morning brief: the bot's recap of the day with the last 24 hours' runners inside the same card, so at five in the morning one card says what happened. A read in progress shows two dots that meet and part.
A coin's read heads its test plainly
On a coin's read, the bottoming test's section is headed "The bottoming test", with how many of its five readings pass in the line above it, rather than "Five things have to be true".
Research is three parts, chosen at the side
The research page has a menu down the left (a switch across the top on a phone): Coin Analysis, with the field and the board; Chain Analytics; and Social Analytics. One part shows at a time, marked by a blue line that slides between the names; the page remembers the one you were on, and old links to a section still land on it. The nightly brief stands a little apart from the liked list above it.
Your own asks can be removed, and member coins are read again on their own
The line under the field now shows each coin's picture and chain, and your own asks carry a Remove button: the coin leaves the board within a minute unless another member asked for it too. A coin a member asked for is read again every hour for a day, then every four hours, for three days after the last ask, so its readings stay current; a coin nobody asked for is never re-read.
Enter a coin and the lab reads it
The research page now opens on a field: paste a contract address, or a link from GMGN, DexScreener, pump.fun or the chain's explorer, and the lab reads the coin the way it read every coin before — where the supply was bought, who is buying it off whom, whether the sellers are done — and puts it on the board with its full read one press away. A read takes a few minutes; the page shows what is being read and what is in line, and a read that finds a setup ready still reaches the feed. Every member has three reads a day and the lab forty; a coin read in the last four hours is answered from that read.
The lab no longer goes looking for coins on its own
Until today the lab screened the market every four hours and tore down ten coins a run that nobody had asked for, about three quarters of its market-data usage. That is off. The board is the coins members asked for, each row saying how many asked; the coins the lab found by itself say so until they age out after three days. The holding studies and the wire, which need no one to ask, sit under their own heading, Runs on its own.
The chains are one table on the research page
The three chain cards are one table: a chain per row and a figure per column, so each chain's figure sits under the same header and no label wraps beside a figure. Under "Calls that doubled": how many did, their median time to the top, and how many were above entry a day later after fees. Under "Every call, a day later": what $1 became and the share under half. Then holders per flipper with the coins it rests on. A chain with under 30 doubled calls shows its clock faint with the count instead of a dash, and a chain whose clock moved within the window says "moved". On a phone the table scrolls sideways with the chain held. The "Figures" fold under the holding curve is gone.
Research headings say what each section is for
The three section headings no longer quote a figure or a coin that changed with the window. They now read "How the bot's calls played out, chain by chain", "Every coin the lab has read, ranked on the reading you pick" and "What people liked, what ran, and what they wrote about"; the figures stay in the sections.
The bot's nightly lab stops changing the new-pair screen on its own
The chains say what their clock stands on, and count a held winner after fees
Each chain card now says how many doubled calls its clock was read from and over which window, and "above entry a day later" is counted after a 2% round trip rather than at the entry price. Robinhood Chain's card carries a dated line: its calls were measured under free gas, which ends 29 September; a "Since 30 Sep" window appears once twenty calls have been made after that. On the board, "new money" is now "new wallets' buying", with the caveat that fresh wallets are also how volume is manufactured, and the crowd's count says it runs low off Solana.
Research is one page: a board of coins on one reading, the chains, the wire
The Holding · Setups · Crowd selector is gone. Research now opens on the chains, the holding data in view — one card per chain led by the winners' clock, the holding curve and holders against flippers under it — then the board: every coin the lab has read, each row carrying one reading you pick from a capsule in the heading — what a rise meets (the share of held supply back to even by +50%), new money, larger hands, the crowd, or the bottoming test — with a chain filter beside it; a row opens the coin's read. The winners' clock reads when the calls that doubled reached their best close and how many were still above entry a day later, drawn only where the older and newer halves of the winners agree (today that is Solana). At the foot, the wire: what people liked on FOMO or pump.fun, the nightly brief, what ran, most discussed and the stories, under one window switch and folded to five each. Old links to a view still land on the right section.
Holders against flippers is measured every day, and both studies say when they last ran
The holders-against-flippers study on the research page had been measured once, on 20 September, and never again. It now runs once a day with the research lab. It and the holding-time chart, which is worked out every four hours, now end their headings with when they were last updated; point at it for the exact time. Its headline now compares only chains measured on ten coins or more: Base, on five, had read 1.85 holders per flipper one day and 0.57 four days later.
Published results count a 2x only when a one-minute close got there
The stats page now counts a published call as reaching 2x (or 3x) only when a one-minute close got there within a day of the call, measured from the price two minutes after it; before, a single wick in the grader's price bars was enough. The rates read lower and closer to what a member could have sold at: on the page's default 30-day view the published 2x rate reads 31.4% where it showed 37.9%, and over 7 days 28.4% where it showed about 36%; the typical call's best close within a day is 1.46x where the page showed a 1.51x median peak. Calls under a day old, and the few with no usable one-minute prices, are counted separately and kept out of the rates; the diagnostics and missed winners are labelled as the intraday high.
The research post reads like a trader talking
Every research call's three lines are now plain sentences: what the coin is about and why people care, the one real reason to hesitate, and "Trade idea:" with why. No ticker codes like MCDx, no @handles, no "its silence kills it" endings, and a paid DexScreener profile no longer counts as a catch. Tested on 24 past coins with blind judges: 6.7 out of 10 before, 8.0 after, just as accurate, with the same verdicts.
"Research by sniff.trade" shows the bot's research, never a trader's post
On older research calls whose Telegram post had gone, the research text fell back to the newest post on the coin, so 198 of 286 research cards showed a trader's words under "Research by sniff.trade". They now show the bot's own three lines from the write-up behind the post it actually sent (186 cards), or its verdict sentence where no write-up survives.
A research call shows the trader's post it followed
A call the bot researched after a watched trader posted said "The post itself was not retained" on 106 of 256 cards, HORSE among them. The post was never lost: the bot logs every post it reads, and its Telegram message quotes it. The card now reads the post from there, in full and dated by when the trader wrote it. 253 of the 256 cards show it; the other three are from 5 September, before the log began, and show no quote rather than that line.
The graduated-coin scanner stops screening wash-traded Meteora coins and dead Robinhood coins
A coin now has to show real trading fees on every chain where the data supports a floor: 0.1 SOL for Meteora coins, which were exempt, and 0.04 ETH on Robinhood, which had none. Almost every coin under those floors was a dead or wash-traded pool, and none was a coin the bot called. The scanner's screened and denied counts on the stats page fall by about two thirds; the calls and their results do not change.
A call the bot turns against now says Avoid or Watch, never "No Verdict"
When the bot re-checked a coin it had called and changed its mind, but the write-up left out its verdict heading, the thread showed "now No Verdict" with a white dot. It now takes the verdict from the first word of the write-up's call, Avoid or Watch; if that is not clear, it posts nothing and the call stands.
The new-pair screen's "denied" and "missed" counts drop 588 coins it never looked at
Since 22 September the bot holds back coins that have not graduated or paid enough fees, and never screens them, but each one was still recorded as "denied" every time it was checked again. Those 588 records are gone and no new ones are made, so the screen's denied and missed figures on the stats page count only coins it actually judged.
The screen lab stops hiding coins that spike and dump in their first minutes
The nightly lab used to drop any coin whose peak came in its first price bar, treating it as a data glitch. Most were real instant spikes that dumped. They now count like every other coin, so the lab's figures read a little lower and truer: on the latest week the screen's passes read 45% reaching 2x instead of 49%.
A call is graded only from prices after it, and is closed after three days
The grader could score a call from the price bar just before it, which produced negative times and a few false 2x marks; it now waits for a bar after the call. Calls older than three days are closed at their last grade instead of being nudged by later price refreshes, which is what the stats page already said it showed.
A new screening rule goes live only when the owner promotes it
Each night the bot tests five alternative rules for which new pairs to research. Until now, one that cleared every check would have joined the live screen overnight on its own. Now it is reported as clearing every check and waits for the owner's /lab promote, while a rule that stops working is still removed automatically. The nightly report also shows how uncertain each rule's hit rate is, and what a holder or KOL cap would have cut, including the winners it would have lost.
The sign-up link stops promising a free week
A shared sign-up link no longer promises a free week
When a sniff.trade/join link was pasted into X, a chat or a DM, its preview read "…create your account, start your free week." There is no free week while sign-up is by invitation, so the preview now ends at "pick your side, create your account."
Axiom on every chain, the feed's controls in one row, and yesterday's sweep fixed
A reason's bubble no longer hides under the badge beside it
Opening the New pair chip, or any reason on a card, showed its sentence cut across by the verdict badge or an author's chip next to it. The open bubble now sits on top of everything on the card.
New pairs have their own signal filter
The feed's signal menu has a New pairs option next to Research: only the research calls the new-pair screen set off, the ones that wear the green chip. They are a few dozen among more than a thousand calls, so under Latest activity they sit far down; this brings them up on their own.
Two gates before the new-pair screen: graduated, and 4 SOL of fees paid
A launchpad coin still on its curve, and a Solana coin whose market has paid under 4 SOL in fees, are held back and looked at again every five minutes until they clear both or leave the $75k band. The fee floor is judged only where GMGN counts fees live, which today means pump.fun and Raydium launches, not Meteora curves. A coin that never gets there is never screened, researched or graded, so scams stay out of the learning set. Backtested on 603 screened coins: one pass lost in 21 days, a third of the denied duds excluded against a tenth of the denied runners.
The nightly lab says what the misses had in common
Each night the screen lab now compares the denied coins that went on to triple with the ones that stayed flat: their features at the screen, the reasons they were denied, and how many of each every candidate rule would have caught. It changes no decision; it shows why the lab keeps saying "No change".
A new-pair call wears the wind
The mark for a call that came from the new-pair screen is now the owner's drawing: three gusts and six specks, in the screen's green, in the why-it-fired line, on the coin page and in the stats page's source picker. A research call that came from the screen now opens its why-it-fired line with a green "New pair" chip, so it stands out at a glance the way a spike does in blue.
The stats page's source filter follows the trigger
Choosing New-pair screen or Watched accounts on Bot performance now shows the research calls that source set off, with their outcomes. Before, the top of the page was empty under both: neither source publishes anything itself, and the calls they set off were filed under Research.
Switching views on a phone is one motion, and an answer never lands under another tab
Tapping All calls, Saved or Muted no longer flashes a grey pill over the tab. Saved and Muted with nothing in them answer at the press instead of asking the bot, a view you have already seen comes back at once while its fresh answer follows, and an answer that arrives after you have moved on stays off the screen: the previous list dims until the right one lands. On a slow connection the All list could appear under Saved and Saved's empty panel under All calls.
The waiting room says what is coming
The last line under "You're on the list." now reads "Your spot is coming." instead of "Yours is coming."
The waiting room's wordmark stands alone
The small nose beside sniff.trade at the top of the waiting room is gone and the word sits centred on its own. The nose above the headline is the only one on the screen.
The waiting room no longer says "Your code worked"
The line under "You're on the list." now starts at "Names are called by hand, one at a time." The headline already says the code worked, so the sentence went.
The waiting room says less, sniffs, and points at X
The screen after sign-up now says four short sentences: your code worked, names are called by hand, one at a time, keep this open, yours is coming. The nose sits above the headline and sniffs on arrival and every fifteen seconds. The signed-in email and the sign-out link are gone, and the X account is a follow button under one line.
The wordmark takes you back to the side you came from
On the admin page the sniff.trade wordmark went to the stocks feed whichever side you had come from. It now goes to your own side, the crypto workspace for a crypto account and the stocks feed for a stocks one, as the side switch last set it.
"All sources" wears a world under a glass
The statistics page's signal-source menu shows a solid globe with a magnifying glass on its rim, from the owner's reference, in place of the pulse line it shared with "Latest activity".
"Still maturing" sits clear of the 100% line
On the statistics chart the label over the days still being watched sat on the 100% grid line, which cut through the tops of its letters. It now sits just under that line, inside the shaded band.
Your switches hold, and never silence the bot's own alarm
Switching a kind of post off in one chat can no longer wipe another chat's switches or quietly turn everything back on if the switches file is unreadable; the bot refuses and says so. "Nightly recap" off no longer hides the menu-audit alarm. "Everything off here" now also stops a post being re-sent to you, and one chat's pump.fun switch no longer changes what the other followers receive. A spike or thesis every chat switched off is still recorded and graded, so the feed keeps the call.
A live figure that has gone stale steps back to the read
A setup's "FDV now" only speaks for the last five minutes, the call card's own rule. Past that, or after the tab has been away, the page shows the read's figures and says "at the read" rather than an hours-old number under the word "now", and a late answer can no longer overwrite a newer one.
The cost ladder says what its figure is a share of
"Holders of N% of the supply are back to even" was a share of the held supply the lab could place, up to 3.8× short of what it seemed to say. The heading and its hint now name the held supply, say how much of the token's supply that is, and say the ladder is drawn against the price at the read while the FDV above it is live.
Research says when it is stale on every view
A stale mirror or a failed poll was only announced inside the Crowd view. The notice now sits above the views, so Holding and Setups say it too.
The changelog's rail answers to a finger, and ships its words once
On a phone the day ticks are a few pixels wide, so the strip is now the target: press anywhere on it and the day under your finger lights with its card, slide and the card follows, lift and the page goes there. The day being read wears a dot under its tick. And the page's fifty kilobytes of prose reach the browser once, as the page, instead of again inside the script.
The coin's doors and the fold's chevron follow the house rules
The site and X doors beside the chain tag keep their 24px glyphs but take a 40px hit, and on a finger the pair spreads so the two hits do not overlap. The "Not interested" fold wears the same chevron as the price and timeline folds instead of a typed plus and minus.
The changelog reads properly on a phone and to a keyboard
The five area chips that fell short of contrast in light mode are darker; the preview card on the phone's rail strip opens below the strip rather than behind the header; clicking a rail tick hands focus to the day it reached; thirteen entries that shipped without a description have one; seven of yesterday's changes that were missing are in; and the page is in the sitemap. Settings and the admin panel say heart, not star.
Axiom is the second button on every chain
Axiom trades every chain now, so a BSC, Robinhood, Base or ETH call opens Axiom from its second button like a Solana call does. GMGN waits in the card's ⋯ menu unless it is chosen as the terminal in settings; a chain Axiom does not have still falls back to it.
Switching between All calls, Saved and Muted is one smooth motion
The pressed tab no longer shows the previous view's number while its own list loads: the count, the hint and the list change together when the answer arrives, the thumb glides into the new tab's width instead of snapping, and a long wait dims the old list rather than freezing the switch.
The feed's views, search and filters are one row
All calls · Saved · Muted, the search with its / shortcut, and the chain, signal and sort menus sit on one line under the heading; the "Live · automatic updates" block is gone. In a narrow window the views and the search keep the first line and the filters sit under them, left.
A coin's page fills a phone and a narrow window
On a phone the figures, the trade buttons and the address panel now fill the column instead of hugging the left. In a 700–979px window the three figures sit in a row beside the return and the two trade buttons stand side by side.
Small print on the coin's page reads at 11px, and nothing jumps
The page's labels, the reading's age and the returns note are 11px in a stronger ink; the heart's place is held while your session loads, so the save button no longer slides; timeline lines stop at a readable width; and a finger gets a full 40px on the tools and the contract pill.
Settings fits a phone
In Profile your email and the password's Change button are no longer cut off, the venue and terminal tiles are the same size and stay inside the page, settings starts at the same edge as every other crypto page, and tapping your username or a password field no longer zooms the page on an iPhone.
Settings keeps its side menu in a narrow window
On a phone the sections are a switch at the top and the links sit at the bottom. "About sniff" is gone from crypto settings, where it only led back to your feed.
The setups board shows its figures on a phone again
On a phone and in a narrow window every setup on the board shows how far it sits under its peak again, and a setup card's stage moves under the coin's name instead of squeezing it to a letter a line.
Research reads in a narrow window
In a narrow window an opened story names its tokens again and its row shows its three tickers; a tweet inside a post opens the tweet, not the call; and on a phone each run in What ran says what is left of it.
Research answers a finger
Handles, tickers, chips, "more" and the run capsules are 40px to press; the holding chart's reading and a setup card's day stay pinned after a tap; the table folds wear a chevron; and small print across Holding, Setups and Crowd is 11px in the quiet ink.
The statistics page on a phone
Tables keep each row's label in view while you scroll them sideways and fade at the edge that has more, missed winners show each token's peak right beside it, the period switch fills its row, and tapping the trend chart keeps the day's reading open until you tap elsewhere or scroll. Copying an address answers inside the pill without the table jumping, the folds wear a chevron, and captions and table headings read in a stronger ink.
The theses page on a phone
Tapping the search no longer zooms the page, the filters share the line with their arrows where they belong, pointing at a coin no longer hides its picture, a post that links to a tweet shows the "Tweet by @handle" pill, the bot's research reads in paragraphs, and short cards no longer leave holes beside long ones.
The header fits a phone, and every control is 40px to press
On a phone the side switch's menu opens at the page's edge instead of running off it, so the check that says which side you are on shows and both lines read whole. The account button, the side switch, the three tabs, the rows in the account menu and an invite's Copy link each take a 40px hit; the notification count is a sans digit on a red that reads; the sign-out question is painted in the theme you are in; and a missing page's tab says Not found.
The changelog's strip on a phone: a chosen day lands in view and the preview stays on screen
Picking a day lands with its date under the strip instead of behind it. The preview card opens under the strip, inside the screen for the first and last weeks too, and clears once you have chosen. Between a phone and a wide window the strip runs edge to edge and its ticks stay inside it.
Teardown bars are drawn to one scale again
On a setup's teardown page every bar chart is drawn to one scale on a phone and in a narrow window, so a longer bar is always the larger figure. Each row's note now sits under its name, and the cost ladder's key wraps instead of running off the screen.
Tapping a teardown chart keeps its figures on screen
On a phone, tapping a day on a teardown's charts keeps its figures under the chart until you tap elsewhere or scroll, and the money-flow readout now carries the bought-per-$1-sold multiple. The charts arrive at their phone size instead of drawing wide and then shrinking.
The teardown page tidies up on a phone
The stage chip sits under the token's name so the ticker never breaks; "An active play" and "Supply moving to larger hands" wear square marks so the round ones count the five tests; the contract address is the copyable CA pill; wide tables keep their row labels while scrolling; and the Daily figures fold wears the house chevron.
The feed fits a phone
Every control in the feed now presses at 40px, the filters wrap instead of running off a 320px screen, the search says "Token, contract or thesis" in full, and small text on the capsules is easier to read. In dark mode the chosen view's tab now sits lighter than its track.
Pages, menus and empty views behave
Next and Previous open the new page at its first call. A filter menu stays under the header, scrolls inside itself and opens upward when there is no room below. Saved and Muted say why they are empty, and the loading skeleton is now shaped like the feed it becomes.
The header no longer says you are on the feed when you are not
The feed tab lights only on the feed and its coin pages: the changelog, privacy, terms and a missing page light no tab, and a teardown lights research.
Privacy and terms open inside the crypto side
The privacy policy and the terms of service have their own pages under /crypto, reached from the settings rail and from each other, so reading them never hands you across to the stocks header.
A struck-off pump.fun caller leaves the record
A caller the owner removed from the bot's list leaves every page at once: the calls his theses fired are gone from the feed and the statistics, and his posts from other coins' timelines and spike blocks.
Turned away lists only the ids still turned away
An id the owner has since added to the allow list, or that the bot has since taken a message from, drops off the list instead of sitting there with its old refusal.
The call card on a phone
Labels, times and small print on a card are 11px or larger and no longer smaller than on a computer, in an ink that reads on the panel. The two trade buttons keep their labels on one line and the card's tools sit in their own row; the FDV line keeps each label with its figure; the fold's figures are 16px in every window.
Everything on a card presses at 40px
The contract pill, the stamps, the save, heart, share and menu buttons, handles and tweet pills all take a finger without opening the call by mistake, and nothing lights up and stays lit after a tap. Writing a review on a phone no longer zooms the page, the sheet buttons fit one row, and the "Not verified yet" note stays on screen at 320.
Why a call fired, one tap away
The reason behind a trigger chip, a returned card's "back", the verdict and the spike's flame open in a bubble on tap, hover or focus instead of a tooltip a phone never shows. An opened timeline can be folded again from its end, a tweet link cut short by the preview no longer opens the wrong post, "1 likes" reads "1 like", and the coin page shows every quoted post in a spike in full.
Notes, edits and removals on reviews
Under Crypto → Reviews every review now has Note, Edit and Remove at its foot: write a note only you and the bot's lessons see, correct a rating or comment in place (the row then says edited), or take a review out of circulation. It leaves the site, the heart counts and the bot's lessons, and Show removed brings it back with Restore.
The card behind a share sheet shows the sheet's figure
The FDV drawn on a shared picture is the FDV the card or coin page behind it shows from that moment, so the two never disagree. A post cut at its length ends in an ellipsis where you read it, the coin page's back chip and verdict say why on a tap like the card's, and a menu no longer stays lit after a tap on a phone.
The header's current tab reads on a dark phone
The current tab's word is in the page's ink on its raised ground, with the glyph still in blue: the blue word measured under 3:1 in dark.
The changelog's strip docks to the floating header
Once the header lifts, the phone's day strip sits against its card instead of leaving a seam the entries slid through. The stocks milestone on the crypto changelog takes the chip's deeper blue in light.
The theses page refreshes with the house button
The bordered "refresh" capsule is gone; the round refresh every other crypto page uses sits beside the heading.
On a phone the username shows it can be edited
In Settings the username field wears its faint fill at rest on touch, where there is no hover to reveal it.
A review the operator removed leaves the bot too
When a review is taken out of circulation on the site, the bot's next sync drops its copy, so the dossiers, the nightly lessons and /reviews stop reading it.
A spike's numbers add up
A thesis spike says "6 people in 22 minutes" and, under it, "8 posts: 4 FOMO theses, 4 pump.fun callouts": the posts are the theses and callouts together. When the block shows fewer quotes than that, a line above them says they are the five most liked.
Research says what it used to whisper in tooltips
In What ran, tap a run's figures to see the cap it was first seen at, its peak, its chain, when it was first seen and its holders; the token's name still opens the token. Opening a story now leads with what the story is and what its trend counts against.
A cut post points to the rest of it
A FOMO thesis reaches the bot as a 300-character preview ending in "…". Opened with "more", it now ends with a link to the rest on the author's FOMO or pump.fun profile; a post with no profile to link stays as it was.
New marks for the two sides, the chains, websites and copying
From the owner's references: the crypto coin is the Bitcoin ₿, the stocks coin four candlesticks, "All chains" is three linked blocks, a website is the globe with its meridian and parallels, and the copy mark is two sheets.
Alerts off per chat, the whole thesis, setups readers can vote on
Automatic posts off, per chat: /alerts
Any member can now switch each automatic post off for their own chat — new pairs, watched traders, spikes, interesting theses, pump.fun follows, the nightly recap — or all of them at once with /alerts off, and keep using the commands. The desk-wide switches stay admin-only.
A thesis card carries the whole thesis
FOMO's feeds serve a 300-character preview that ends in "…". A thesis that passes the gate is now fetched in full from the trade's own comments before it is posted, so cards no longer stop mid-sentence.
No more "?" tickers
A pump.fun answer that arrived without a symbol was being cached and posted as "?". It is no longer cached, and a "?" is replaced by GMGN's symbol before the post is written.
/vamp never alerts a coin that cannot be sold
A member's /vamp returned three coins the owner called honeypots. The watcher now checks a copy can be sold and has a real market under it before it alerts.
Bot operations audit: six patches applied, six recap days regenerated
Eight concerns verified against the live folder; the mirror fix and six bot patches went in at 12:50, and the recap days the writer had missed were written again.
"Not interested" on a setup
The operator can take a token off the feed and out of the lab's queue from its card; the lab then re-reads every listed token the owner has not dismissed, not only the screen's likeliest ten.
Teardown: what a rise meets
A cost-basis ladder shows where the holders bought, read forwards ("by +50%, holders of 27% of the supply are back to even"), in place of the coarse entry stack.
Readers vote on setups
The teardown page asks "Want more setups like this one?" — one answer per account, the token's picture kept beside it. The operator's readout sits under the setups board, by kind of coin and token by token.
Research is three views under one floating capsule
Holding · Setups · Crowd, no page heading, the switch standing alone without a live dot or source age beside it. The board's plays are called setups.
The call card's doors moved beside the chain tag
The coin's site and X account sit next to the chain tag — X in the page's ink, the site in the workspace blue — and the hover tile on the coin's name is gone. The muted-bell glyph was redrawn so its slash cuts cleanly.
Call card menu: Mute leads
"Mark updates as read" left the menu, and the mute bell is one shape again.
Token images come from three places
Pictures had fallen to initials because GMGN was the only source. The chain bot's logo, DexScreener and Mobula are tried in turn, and a miss is asked about again later.
A setup's FDV is the market's
Re-read every twenty seconds rather than taken from the last lab read; the mirror also uploads a card before its logo lookups, not after them.
The Setups glyph's arrowhead follows its line
The J read as bent at 16px; the head now sits on the stroke's own direction at its tip.
This changelog
Every change since the first commit, dated the day it landed, at /changelog on both sides. A rail of one tick per day beside it: hover for the day, click to go there, with the day each side began marked by its coin. Area tags wear a colour each, and an entry reads across the width.
Smooth scrolling removed
The eased wheel went from the whole site — the crypto workspace and the landing — a week after it arrived. The page scrolls as the browser scrolls it.
One clock per card
A returned call showed four times, three of them the same moment. The header's meta line is now the card's only clock — "first call 4m ago", or "back 7m ago · called 4h ago" — and the timeline fold dates its latest event only when it came after that. The first-call leaf is a solid glyph.
The owner's signal marks, and a heart for reviews
The rewound clock, the bulb, the flame and the header's feed mark are traced from the owner's references. The review star is a heart, filled in the site's like colour once a call has a review. The timeline fold wears the same chevron as the price fold.
The coin's page is a page
Opening a coin no longer shows the feed's card with every fold forced open. The page reads top to bottom: the coin as the heading with its tools, the call, the whole timeline, and a rail alongside with the return since the call, the FDV figures, the trade buttons, the address and the other venues.
Copied is one centred answer; save sits with the heart
Copying the address lifts the pill's reading away and a centred "Copied" rises in its place, and the pill no longer grows with each copy. The bookmark joins the heart, share and menu; "Copy contract address" leaves the menu; the mute mark is a solid bell cut by its line; the rating slider's ends hold their dots.
A one-liner never brings a post back
A watched trader's one-line mention that passed only because two other people had written real theses is folded into the coin's existing post as a line. It no longer re-posts a coin that already has a public post.
The lessons note never holds the writer's error
When the nightly lessons writer answers with a credit or sign-in notice instead of lessons, the previous night's note is kept rather than overwritten with the error.
The bot is off Mintlify
The nightly no longer syncs a docs site and the menu audit no longer reads one; the bot's own change ledger is the record.
170 pump.fun callers watched
The callers list grew to 170 accounts, added as a batch under the live bot. The read budget (~200 an hour) is the ceiling.
The research lab: holding time, holders against flippers, setups in the feed
The research lab
A new reader over Mobula's trades: hold curves per chain, a token's money flow with the bottoming rules, the market screen for washed-out tokens, holders against flippers, and bots read as wallets. Wrapped and pegged assets are not candidates; the open market is screened by launchpad.
Setups sit in the feed
A setup the lab calls ready appears between the calls as its own kind of card — a stage chip, one verdict line, a flow spark, no trade buttons — and the whole card opens its teardown. Only READY setups are posted; the Setups filter shows the lab's whole notebook, each saying what it still lacks. A setup expires.
The teardown page
A token's charts: the five bottoming readings with their own hourly chart, the flow bars with the buy-to-sell multiple, the price indexed to day one. The verdict's second clause reads on its own line; a token the bot has called links its call.
Research page rework
Holding time per chain, holders against flippers, the nightly brief with the recap's closing line as the lead, themes as rows with aligned columns. What ran is a strip; a story opens to its tokens; on a phone one liked board at a time and a theme's run beside its name.
Every chart answers to a pointer
Bars, stacks, flipper splits and the feed card's spark share one hover layer: the mark in hand keeps its colour, its siblings step back, a tip card says what is behind the figure. A tap pins it.
The bottoming test reads by the hour
Only active plays of size are torn down; a washout in progress is named on the chips; a token that is not past distribution says why — capitulating now, no recent washout, or still being sold. A fortnight high under an old peak is no flush to average over.
The forward test, and a Setups section on Statistics
Every ready setup is followed for a week from its own entry, with price and quality measures logged at each read, beside every other read the test made.
The lab runs on a schedule
Every four hours through launchd. A setup that becomes ready is said once on the owner's Mac; the schedule reports its own failures; the lab's output is a fifth part of the production mirror, uploaded when it changes.
Lab hygiene
Trades are asked for across every pool and an empty harvest is refused; a trade's wallet is the swap's recipient; unreadable selling is not judged; the search for a token's last wallet stops at 256k; a second pass can read further down the ranked list; tests cover holding time, the flow rules, flippers, validation and setups in the feed.
"Trade idea", not "small trade"; four bot changes reviewed one by one
Four bot changes, applied at 11:40
Research does not re-post a coin posted less than an hour ago; one post per Robinhood/BSC token while its post is up; a research run that wrote nothing is a failure, not a verdict; the token's age at the call is recorded. On replay: median +7.8 points, 16% fewer calls.
The writer calls a long a "Trade idea"
No more "small trade only" or exit prices under $5k. The dossier says what a coin trades against and who wrote the posts behind it, and a linked X post comes with the post it quotes or replies to.
A call is a "trade idea"
Cards and research cards say "Trade idea", never "small trade" or "not a position".
A held spike never shows as an update
"Held" is its own status. A new-pair thesis spike shows its theses, and a card's own send is no longer read as a comeback.
Telegram to the web card, faster
The delay from a bot post to its card on the site was cut; review fixes followed the same day.
Missed winners and first-hour dumps, measured
The coins the bot missed are the cost of selectivity (6.1% of calls halve against 22.3% of misses), and 21% of calls halve in the first hour. The age gate stays an owner decision.
The research writer, replayed 99 times
The new prompt reads 34% better to a judge and picks no better; the pairing and account context moved into the prompt's context rather than the Post lines.
Admin reviews, invites that belong to a person, one settings page on both sides
A reviews section, with filters
The reviews count is a door now: a section of every rating from the site and Telegram, filtered by reviewer strip, by score on the histogram, and by source and order. A score is drawn as a dial, not spelled "10/10". The blue tick rides on the name instead of a VERIFIED chip.
An invite belongs to a person
A code carries its owner, so the roster says who brought someone in and who they brought in. A minted code is good for one person, not five; the row menu escapes its panel and flips above when there is no room.
Invites that cannot lie
A dead code stops counting as an invite and loses its Copy link; a refused code says why when the code is one we recognise; links carry the code exactly or not at all; the code oracle has a flat ceiling whoever is asking.
Notifications in the account menu
Being minted an invite, verified, or let in shows up in the profile menu — the invite code itself, large and copyable — with a count overlapping the avatar. Opening the menu reads them.
A card stops quoting a day-old FDV
A figure that claims to be "now" is re-read from the market before the card speaks, thirty tokens to a request; a fresh card costs nothing.
The copy button says "Copied" without moving a pixel
The label swaps in place, the box keeps the address's width, and the green survives being read. The call page dropped its eyebrow.
One settings page, native to both sides
Profile is a list of facts with Save only when it has a job; Trading draws the card's own button row; Referrals is always there with the ask inside it; delete belongs to Profile alone; sign out asks properly and Enter answers; a pending invite looks pending.
Deleting an account takes a second place
The button sends a one-use link to the mailbox and the link deletes — a different kind of proof, not a second click. Without a mail provider the request refuses loudly.
The tick rides your own name
The verified mark shows on the settings header and the account menu, from one component, and the header stops guessing a name before the profile has loaded.
Sign out asks first, everywhere
The crypto header's sign out confirms like the settings page does, through one shared dialog.
A thesis added to an open post is not a spike alert
The record stopped grading them as alerts, and the statistics page no longer draws a young day as a fall.
Exact times on hover, a colour per signal, two buttons on a call, "desk" retired
Exact times on hover
Every stamp reads relative in the feed and says the reader's own clock on hover, the way a person would say it. A share caption now stands alone in a chat, with the token's link inside it. The word "desk" left the writing.
Two buttons on a call, and the card itself opens it
The chosen venue (FOMO or pump.fun) then the chosen terminal (Axiom or GMGN); the rest wait in the ⋯ menu. Every Solana call carries Axiom, other chains fall back to GMGN, and the tile is the way into the call.
A colour per signal
Research is violet, an interesting thesis amber, a watched trader the accent, a new pair green. The spike's furniture stays blue; only its small flame is red, and the flame is the spike's alone — a call that came back wears a rewound clock in the colour of what brought it back.
The copy button morphs into a tick; share is the first button and keeps the blue
Whatever the browser can do — card and words, words alone, or the clipboard — the sheet never re-ranks its buttons while the card draws.
The account is native to both sides
Account and settings live under /crypto too, so nobody is handed across to the stocks side to change a name. The right skeleton shows on the way in.
A tab click stops waiting for the server
Dynamic routes are prefetched whole, the account menu arms its page on open, the side switch warms the side you are about to cross to, and every crypto page arrives with the site's rise instead of blinking.
The coin's own doors
Hovering a coin's name opened a tile with its website and X account, at no cost — the bot already records both. (Moved beside the chain tag on 21 September.)
Account stops stacking its anchor onto the URL
Opening the account menu added #account to the address every time; now it is there once.
One header, two sides; the wall of traders; @sniffdottrade; a password-reset page
One header, two sides
The stocks bar became the crypto header, shared: the lockup, a side switch between stocks and crypto wearing real marks (the ₿ on its orange coin, the rising line on blue), tabs with glyphs, search and the account. On a phone the tabs are one segmented capsule.
EVERY TRADER
A wall of real traders on the record, each chip wearing the mark of the platform it was heard on, drifting row against row for as long as the page is open — and rising out of it, the one thesis others then joined.
@sniffdottrade
The site's X account in the footer, on every shared card and in the waiting room.
Forgot your password
/reset owns the whole round trip — ask, sent, set, done — and a reset link can never land somewhere useless.
Round coins for the two sides
The same marks fill the rings on the sign-up question, with each side's platforms under it, and the shows tab wears a television.
Why a call fired, the PNL card, the waiting room, beui's tabs and 404, two admin desks
A call says why it fired
One mark per reason from the bot's own list — a spark for a new pair, an eye for a watched trader, a bulb for an interesting thesis, a flame for a spike, a leaf for a first call — and the timeline is the story of the call, newest first, with the spike's theses inside its row.
The PNL card
Share a call as a 1200×630 image drawn from what the card knows: the return since the call as the one big figure, called-at, now and peak beneath. Always white. The token image comes through this origin so the canvas exports.
A research card opens with why it ran
The trigger post quoted under one sentence, the figures line leading with the current FDV, the bot's verdict said in plain words. A research thesis reads as prose, not as a form.
The waiting room
A new account waits at /waiting until the owner lets it in from /admin; the bar breathes until the grant lands and the page says "You're in."
Two desks
/admin is Stocks and Crypto, separated at the top: the Telegram roster ported for crypto, the People and code panels rebuilt, Users in both.
Every switch is beui's tabs
The thumb glides between options on a spring. The rating slider tried beui's inline range for an afternoon and went back to the knob, thicker.
Every 404 is the glitch
beui's scrambling code on every not-found page, with a crypto 404 inside the crypto shell.
A token image opens in its own place
It grows out of the coin's centre with the image-open tilt, leans toward the pointer, and closes the instant the coin moves under it.
The header lifts on scroll
Past 24px it becomes a floating frosted capsule; the box never changes, so nothing below shifts.
The feed: newest first, plain words, one freshness block
"Latest activity", "First called", "Return since call"; FDV at the call until the first observation; tokenised stocks and impossible peaks dropped; Ink joins the chains; a dot on Saved when a saved call moved.
Reviews from Telegram join the site's
The bot's new /rate and /pnl commands bring the rating sheet and the PNL card to Telegram, and their ratings show beside the site's.
Interesting theses from pump.fun
The bot's pump.fun callers feed the interesting-thesis rule; on the site the bulb stays the mark and the author chip wears pump.fun's.
The why line uses the author chip
One pill for a person everywhere; a link to an X post inside any quote becomes a "Tweet by @handle" pill.
The landing moves like Slush
Letters slide in last-first, headlines turn in line by line, pictures arrive from the right and drift with the scroll — and the page can never stay blank. Three crypto beats join the stock ones, fed the live figures.
"FDV now" means under five minutes
The bot re-reads the newest calls every three minutes now.
Smoother scrolling
The workspace scrolled through a Lenis port. (Removed on 21 September.)
Small fixes
A field shows its own focus with no hard box around the search bar; the statistics chart's reading card is wide enough for its figures; the spike block is blue with a white flame, sitting straight under the header.
The crypto workspace lands: menus, the mirror, the research page, invite-only sign-up, reviews
Menus that close, marks on every door
Action menus and selects dismiss on an outside click or Escape; every row carries a glyph; handles wear the mark of the platform they were recorded on; filters are custom selects with chain marks; popovers flip away from the viewport edge.
A production mirror
sniff.trade reads the bot's folder through a Storage mirror, so the site works away from the Mac. It survives a missing bucket, fits the plan's file limit and fills in missing images.
The feed has no sidebar
One centred column at the width a call has on its own page, so a card never changes size between the feed and its detail.
The toolkit became the research page
Ranked posts, recaps and themes as auto-updating boards; boards side by side under one switch; runs need a market behind them; one post per token; every footnote replaced by a "?" beside its heading.
A token image opens larger
A fast plain fade, nothing behind it moves, Escape and the backdrop close it.
Statistics split each day into fresh calls and re-alerts
And the hit-rate investigation behind it was written down.
Sign-up is invite-only
A referral code, enforced by a trigger on the accounts table, entered as six round cells that fill as you type; a refused code shakes. /join is one page, one question per screen, with a progress bar along the bottom.
The sign-in page, rebuilt
Google, Apple and the email fields as 60px capsules, one black Sign in button. The crypto side is accounts-only; there is no plan screen or trial while sign-up is invite-only.
A Users tab
Every account, its referral code and verified status, and the codes themselves — a code can be chosen by hand.
Verified reviewers rate a call
A star beside the card's menu opens a sheet: 1 to 10 with a comment, and the other reviews under it. The sheet takes the card's clock.
A crypto account menu, venue order, the owner's referral on every trade link
Crypto accounts get their own menu in the header, the trade buttons keep the venue you chose first, and every venue link carries sniff's referral.
Reviews feed research, and repeat spikes are held
Ratings from sniff.trade feed the writer's lessons and the track record; a repeat spike alert is held once the token is old or has already run.
The crypto workspace checked in; the landing on one centred grid
The workspace, as it stood
The /crypto workspace was checked in — a token-focused feed, thesis history and a statistics page — with its missing thesis-attribution module supplied the same day.
One centred grid
Alternating previews, no echo above the footer, the header joining the editorial grid, the source preview filling its slab, the blue footer regrouped, "Start sniffing" as the hero's second door.
The theme switch moved into the profile menu
Light and dark are chosen from the profile menu rather than a switch in the header.
A darker dark mode, tried and reverted
Dark mode sat on rgb(13,11,11) for 79 seconds.
People filings refreshed from the scanner
The politicians' and funds' filings were re-read from the SEC scanner so their pages show the latest disclosures.
/vamp watches a name for six hours; what one person sets up is theirs alone
/vamp
Give the bot a contract address or a keyword and it watches for six hours, saying when a copy launched under that name crosses $40k. Six hours of soak against the live market followed, and everything it found was fixed.
Per-person features are per person
A pump.fun follow, a vamp watch and /status could leak into the desk or swallow someone else's alert. A six-way isolation audit closed twelve findings; what one member sets up is theirs alone.
/ask answers in prose
No payloads, no plumbing — an answer. A bare bold verdict was being dropped, and sixteen real trade ideas with it; the crowd windows no longer run into the future.
The bot says when it is out of credits
Out of credits is not an expired login, and /status tells them apart; the desk checks it can write before anyone asks it to.
/search over every thesis and callout; /ask a question about a token
/search
Keyword search over every thesis and callout the bot has kept, on every chain, newest first, answering only with numbers it can stand behind. One bad line in a day file no longer breaks every search.
/ask
A question about a token — "why was this vamped by something else?" — answered from what the bot holds. "What vamped it" follows people, not price. The chart's age and high are the bars', and the answer says so.
The corpus sweep reads every chain
It spends its calls on what is fresh and on the chains with no substitute; a failed write retries rather than losing the posts. Mobula's price bars were never being read — they are now.
Small fixes
A half-encoded emoji no longer costs a whole research run; quoted posts stop printing their own markdown; /status shows the writing model's health.
pump.fun follows are per person; the bot writes with Opus 5
pump.fun follows are per person
Each member follows their own people; Contra came off the shared list and belongs to the admin alone.
The bot writes with Opus 5
The bot's research and recap writers moved to Claude Opus 5.
/users for the admin; six interesting theses an hour; a post sent again after three additions
/users (admin)
The allow list and what each member uses, read from the log. A member on the allow list who had never been recorded was getting no automatic alerts — the audience can no longer be lost.
Interesting theses: six an hour, same filter
The cap rose from four with the quality bar unchanged, and the slot is logged.
A post is sent again after three additions
A research post that gains theses by silent edits is re-sent so the growth is seen.
The spike post in the owner's shape: FDV now ⇨ high since the call, and Refresh
Spike posts redrawn
The chain line reads "Solana · FDV: $1.89M ⇨ $107M" — market cap now and the high since the call — with a Refresh button; interesting-thesis posts got the same FDV line and Refresh.
"CA:" on its own line, no wallet line, FDV instead of mcap
Every post puts the address on its own line; the research waiting message uses the owner's exact text.
Solana buttons go to Axiom
The bot's Telegram posts open a Solana coin in Axiom rather than GMGN.
/pumpwatch, /thesis, /fomo, mutes, and one post per token
/pumpwatch: watched pump.fun accounts
The fifth automation — give the bot usernames and it alerts whenever they buy something or update a callout.
/thesis <address>
Every FOMO post on a token, no wallet filter, both sides of the trade — trimmed to a bull case, a bear case and why it is here, then merged into three readable paragraphs.
/fomo @handle <address>
One account's theses on one token with all the times, including the note left after selling.
One post per token
Later theses edit the token's bubble instead of posting again; a muted chat keeps its old bubble; /mutes lists what is muted. Spike alerts got a Buy on FOMO button beside GMGN's.
Waiting messages in one style, deleted once the result is posted
And no files to the chat, ever — the dossier attachments are gone.
Decisions are logged, criteria are versioned
Every spike fired or suppressed, every thesis sent or held and every queue decision is appended to a log; the criteria are snapshotted before and after a change; the track record was wiped by a harness and restored with guards.
X research budget and a fallback
4,000 objects a day with 60% reserved from automatic runs, cheaper per useful post, and OpenTwitter as the fallback when the official API is out.
Spikes made relative; 548 watched accounts; the layouts redesigned
Spikes made relative
A spike is three times the token's own baseline, capped at six an hour and $15M market cap; a watched one-liner counts when two other substantive theses exist.
Watched accounts 173 → 548
The owner's whole FOMO following list; the sweep interval scales with the count. The thesis poll became chain-aware, since half the misses were Robinhood.
Layouts redesigned
Profile links, a pre-send lint, /holdings and /themes v2. The research queue waits 90 minutes instead of 45.
The bot's record book, the $1k author floor, interesting theses, the new-pair screen
Track record and grading
Every call is graded from its own entry — A at 3×, B at 2×, C at 1.3×, D otherwise, X for untradeable.
Interesting theses, forwarded
A strict filter, four an hour, once per token per six hours, with a $1k floor on the author's wallet for spikes and theses alike.
The new-pair screen
Substance, corroboration and community, and the trigger that has stood since: a pair that holds $75k for ten minutes.
Signed-in visitors skip the brochure
The landing is for people we still have to convince
A signed-in visitor goes straight to the feed, and the landing's bar became two doors: sign in and join.
The real app in real frames
Real TradeBlocks in real phone frames
The page flows continuously, the hero fits, the ticker tapes came and went the same day, and the copy sells the hours back.
The editorial landing; the thesis leads the episode card
The editorial register
Type is the layout, one idea per screen, and every statement gets its picture.
The thesis leads the episode card
The episode header became a masthead.
The theme switch moves to the footer
The theme switch sits in the footer slab
On the landing page the light/dark switch moved down into the blue footer.
Mono is for figures; likes and human error states land on web
Mono is for figures
The web caught up with the phone app: monospace only where digits form columns, sans for every label.
Likes and human error states
The heart on every trade block and errors that speak human, the two parity gaps readers felt most.
Search reads newest first, uncapped, and calls wear their coins
Search results come newest first with no cap on how many, and each call shows its ticker's coin.
The empty-desk picker stages follows
One commit button; a first tap never teleports you.
The cap.so arc reverted
The chaptered landing and full-width nav are back
The grey page, tinted pools and pill nav of the day before were reverted wholesale.
Client-writable tables capped; an hourly abuse watch; a landing experiment
Cost ceilings
Row caps on every client-writable table and an hourly abuse watch, because the database's spend cap sends no notification.
The cap.so coat
A grey page, tinted pools, a floating pill nav and one cinematic product take. Reverted the next day.
The three auth emails, in the design language
Auth emails redesigned
Confirm, reset and magic-link mails in the site's own type and colour.
Likes across accounts
Likes
A like is keyed on the content itself, so it counts the same from every page, and the count is wired through every read.
The money rail, hardened
No Whop purchase could be entitled at all
The payments lookup needed a company id, not an account id. Fixed, with an end-to-end webhook test — the closest thing to a real purchase the repo can run.
False revocations closed
Four ways a paying member could lose access — a refund on a dead membership, a dispute inquiry read as a chargeback, a reconcile that discarded a later webhook — and an entitlement hold that ends the class. The rule lives in one place now.
A regression suite for the money rail
Both processors tested exhaustively, fixtures validated against Whop's schema, and the config that is actually deployed.
The trial cannot be repeated; the nose sniffs back
The trial was unforgeable but repeatable
Eligibility is gated, not just the clock; a sandbox purchase can no longer buy a real subscription; redirects and session-token storage in analytics were closed over three rounds.
Poke the nav nose and it sniffs back
The follow button became a capsule.
/login is the one sign-in surface
One place to sign in
The /profile wall went; every follow gate points at /login. Logos blur up on first paint.
The 7-day trial, the Whop rail, a chaptered landing, and the polish pass
The 7-day trial paywall
Server-decided, server-enforced, honest about what it withholds; checkout, webhook, native cancel and reconcile over Whop; a profile dropdown, billing settings and a pricing page.
Content leaves the database through our server only
A migration and a build-time boundary, then two audit rounds that found a leak on the locked show page.
Chaptered sections
A feature bento, tinted bands, an iOS teaser, real calls everywhere, and the hero phone standing clean without floating chips.
The polish pass
A sliding theme thumb, themed scrollbars, the ⌘K palette's launcher-fast entrance, the 800 weight loaded, row hover and arrival rings, keyboard paths and contrast, retap-to-top, a shareable /track, an og:image.
A desktop settings page
Not the phone tray centred in a browser. The Today panel and the whole chain behind it were removed.
Quiet corners
A console line, the 404 nose sniffs, the palette can find itself, the footer knows where you are. A trotting 404 dog arrived and left the same day.
A landing page at /, light by default, the admin in capsules
A landing page
The brochure took "/": a drawn phone with the real feed, a demo loop, a desktop-first layout with ghost numerals and the blue slab footer, a magnetic sign-up button — the hero phone ended the day as a real iPhone showing the real Desk.
Light by default
Dark only when explicitly chosen. Sign-in became the account button; pricing and profile links left the bar. /login and /settings in the mobile design language.
The pipeline can be paused
Remove works on running jobs, the whole pipeline gets a pause switch, jobs became expandable task rows and the surface adopted the capsule language.
The policy catches up with the product
Analytics, billing and a subscriptions section in the legal pages. The first-run onboarding panel went.
PostHog on the web; a licensed price adapter, built and inactive
Analytics
PostHog on the web app — identity, errors, conversion events — and server-side revenue truth as entitlements change.
EODHD price adapter
Built and wired behind a flag, inactive until the paid plan.
One entitlement across web and app
One entitlement
Web and the iOS app read the same membership, with a readable paywall test.
The functions move to Dublin; pages cached
Faster everywhere
The functions run next to the database, the desk feeds are cached at the edge, and the show, episode, person and ticker pages are cached at all for the first time.
www redirects to the apex; opening a show lands at the top
www.sniff.trade sends you to sniff.trade, and opening a show starts at the top of the page rather than part-way down.
Sign-out clears everything; the app's Desk endpoints
An identity boundary on sign-out
Sign-out cleared nothing; now it empties the follow namespace, and the follow sync is guarded across tabs and devices.
Desk endpoints for the app
A shared slim row, the desk feed and the curated feed. Show pictures are asked from X at 400×400.
Followed desks show again
The desk had re-imposed the active-account filter on the client and hidden followed desks.
sniff.trade: the wordmark, the nose, one brand blue
The brand
sniff.trade — wordmark, nose logo, icons, and one accent blue in both themes.
Show and episode endpoints for the app
With speaker avatars for the mobile picker.
Every account has a real avatar
Site-hosted pictures for the seven with missing marks; white-on-transparent issuer marks sit on dark coins.
The person page for the app
/api/people/[slug]
A person's page is served as one JSON object for the mobile app.
Multi-select onboarding; per-route skeletons
Build your desk by multi-select
With a soft hand-off to sign-in.
Every route gets its own skeleton
The five that still inherited the home's.
/api/people
The People tab's cards for the app.
Two audits: sign-in journey and the ingest pipeline
Profile, auth and pipeline audited
Findings recorded for the fixes that followed.
Search finds what was actually said
Natural-language search
Ranked by the terms matched, with a stopword guard on ticker peeling.
The chase meter dropped
The prior price box is back on cards.
Full platform security audit
The platform audited end to end
A full security audit of the site, the database and the pipeline, written up under docs/audits.
Trade outcomes, the watchlist rail, and every claim checked against the system
Trade lifecycle: exits and flips
A call can close — exit or flip — priced at the moment of the event, so a record can be wrong as well as right.
The watchlist rail
Manage your tickers in one list, with a typeahead that matches company names as well as symbols.
Ticker stats cover the whole corpus
Dropping the active-account gate that hid a third of calls.
Honest pricing
Entries carry the same drift as live quotes, so no phantom P&L; wrong venues are never priced; the peak-P&L worker actually runs.
Every user-facing claim matches what the system does
Copy, docs and headers checked against the running system; placeholder filings are no longer presented as real.
Ticker pages, receipts, the chase meter, the Today panel
Ticker pages and a watchlist
/t/[ticker] — every call on a ticker, and a list to watch them.
Trade receipts
A permalink per call with a branded image for sharing.
The chase meter
"Did I miss it?" on every priced card, and a Today panel with first-run onboarding.
People added from /admin; top desks scored honestly
Add a person by name
Type a name and the form fills itself — no code change per person.
Top desks over the full window
Scored over the whole labelled window, never priced on the wrong venue, and a venue outage fails the rebuild instead of caching a skewed board.
The pipeline monitor in /admin
Live pipeline monitor
Every job with retry, park and remove, multi-select for bulk actions, filters on the left, and the sub-view kept in the URL.
The tweet hero; 13F options read right; the admin stats panel
A seamless tweet hero
Self-sizing and framed, no 16:9 letterbox; deep links to inactive accounts' episodes no longer 404.
13F put and call options
Parsed as options instead of shown as long stock, with twenty People-section findings closed.
Account stats and a themed delete
Click a profile for its ingestion-versus-output stats.
⌘K search; concurrent ingest; the cost-abuse fixes
Site-wide ⌘K search
Instant entities plus full-text search over calls, then twenty-one review findings applied.
A concurrent worker
45-minute lease with heartbeat, a pooled sink, a three-slot claim pool — and two adversarial reviews' findings closed.
Cost-amplification loopholes closed
A per-IP rate limiter on every public route, and the source-events table locked.
Password show/hide; honest account flows
Thirteen follow-sync and account findings fixed.
Top desks, the legal pages, the last of paste.trade
Top desks
A curated leaderboard of the best track records, loading instantly.
Privacy policy and terms of service
Wired to the footer's dead link.
paste.trade remnants purged
Real page titles and an honest 404.
Commodity, index and FX perps priced right
Imported commodity, index and FX perpetuals were priced off the wrong instrument; they now use the right one.
Real accounts; paste picks
Accounts
Register and sign in on /profile, usernames, follows synced to the account, settings. Following needs an account.
Paste picks
A promotion stage that badges the tickers the system found itself, provenance-gated.
The track rail collapses
Roster and speaker chips preview with "+N more".
Filings hardened; database locked down
Migrations 009–013
Public writes revoked, queue RPCs service-role only, deny-all policies on the tables nobody outside should touch.
Premieres and live streams wait for the broadcast to end
Livestream shows are discovered from /streams too, and every timestamped source gets a clip chip.
Phone-width pass
Nav, episode grid, trade rows and home rows usable on a phone.
Your desk, Groq transcription, live movement, filings from the SEC
Your desk
A personal feed of the accounts you follow, sharing one TradeBlock with the rest of the site.
Groq Whisper for long videos
Fast cloud transcription with a local fallback, chunks in parallel, timestamps kept.
Live movement
Equities move between polls, the show page ticks live, People holdings drift — with one chokepoint for price and P&L routing.
Filings from the SEC, live
A DB-backed overlay that updates itself, Gemini-vision OCR for scanned paper PTRs, and a health line on the site.
No flash on dark mode
The theme is set before first paint.
The cutover to our own database; extraction beats the API
Supabase cutover
From flag-gated to default to the last paste.trade call removed, in one day. The site is DB-only.
Extraction applies the playbook
Basket trees, selectivity, voices; net-forward direction with plain-English explanations; three-point reasoning chains restored.
Live pricing
A real-time ticker every few seconds, P&L on every trade, entry frozen on the publish date.
Interaction polish
Press feedback, icon cross-fades, image rings.
Instant skeletons; speakers ranked by trades
Skeletons on navigation
Every route shows its own pulsing silhouette the moment you click.
Better than the API on thesis, direction and ticker
The in-house extractor now beats the paste.trade API it replaced on getting the thesis, the direction and the ticker right.
Profile speakers ranked by trade count
Zero-trade speakers hidden; holdings cross-referenced against the whole corpus.
Inception
The first commit
paste.trade: finance content turned into executable trades.
People deep-link to the exact episode
And the tweets aggregate revalidates in the background.