A social-media signal finder for investment decisions, and the judgment AI couldn't replace
A Singapore crypto investing academy with more than 40,000 students asked me to build a system that reads investment chatter on X and flags opportunities early. We built it and it worked as designed. The bigger lesson was that the client's real edge lived in their own heads, and no amount of AI research could replace it.

The client expected the AI to be better than them at spotting winning investments. It wasn't, and it was never going to be. What it could do was read thousands of posts a day and hand their team a short list worth judging. The judgment still had to come from them.
The brief
The client is one of Singapore's longest-running crypto investing academies: founded in 2017, it reports more than 40,000 students trained and partners with exchanges including OKX and Deribit. It believed what many investors on X believe: a small group of accounts tends to talk about a promising coin (a digital currency or token) before the crowd arrives, and following the right ones gives you an edge. Investors call that edge "alpha".
The belief was reasonable. It was also untested, and the feed it relies on is extremely noisy. Thousands of accounts post about hundreds of coins every day, many of them paid to do so. They wanted to know whether the signal was real, and if so, how to catch it early without a person reading X all day.
Phase 1: test the idea against history
Most "sentiment tools" count positive and negative posts, which tells you how the crowd feels now. By the time the crowd feels something, the move has usually happened. The useful signal is timing: who was early, how consistently, and on more than one coin.
So we started from outcomes and worked backwards.
Pick real breakouts
We chose nine coins that had broken out, from infrastructure projects to meme coins, and defined for each one the window before it first reached a meaningful share of its later market value.
Collect what was said before
Using Apify scrapers, we pulled the historical X posts that mentioned each coin in its window, with more than 30,000 posts for one coin and over 20,000 for another. We removed each project's official account, which otherwise dominated the data and would have topped every ranking while telling us nothing.
Build a fair baseline
We compared coins that had achieved a 10x move with coins that hadn't, using market data, so "early" was measured against real outcomes rather than hindsight.
Rank the accounts
Each account was scored on how early and how often it mentioned a coin before the breakout. Rankings from different coins were then merged into a single watchlist: first the top 500 accounts, later expanded to 700.
Phase 2: turn the watchlist into a live system
A ranked list in a spreadsheet goes stale in a week. The second phase made it run by itself.
Listen on a schedule
Several times a day, the system pulls new posts from the 700 accounts on the watchlist.
Work out which coin is meant
A language model identifies which coin each post refers to. That's harder than it sounds: tickers collide with ordinary words, and people use nicknames. The system separates definite matches from possible ones, and I added exclusion lists after the first runs produced false positives.
Read the tone
Each relevant post is classified as bullish, neutral or bearish and scored, so a coin's picture reflects what was said, not just how often.
Add market context
Live market data is attached to every coin, and the scoring favours smaller projects (under about $100M in market value), where early attention matters most.
Alert only when signals agree
Everything is stored in a database, and three independent rules decide whether a coin deserves attention: a high number of different watchlist accounts mentioning it over seven days, a rising count of new accounts joining the conversation, and bullish sentiment that climbs steadily rather than spiking once. Coins that pass are posted to the client's Telegram group, with a weekly summary as well.
The lesson: the judgment layer was missing
This is the part I'd tell any business owner.
The client assumed that because AI can read more news and more posts than any person, it would naturally be smarter at picking winners. It isn't. The system could collect, sort and score what people were saying. It couldn't supply the judgment that had built the client's business in the first place: why one kind of project was worth backing and another wasn't.
That expertise lived in their heads. The hardest part of the project wasn't the code. It was getting the people with the domain knowledge to spell out their thinking, with enough conviction that an engineer could turn it into rules. Too often they were delegating that authority to the AI instead, expecting it to decide what only they knew how to decide.
Next time, I'd spend the first weeks interviewing the experts and writing down their decision rules before building anything. It's the same lesson as writing down one process: the most valuable knowledge in a business is the judgment nobody has written down.
What made the difference
- Cleaning came before modelling. Official project accounts, reposts and ticker collisions would have swamped any clever scoring. Most of the early work went into making the input trustworthy.
- Several weak signals beat one strong-looking one. A single influential account getting excited is noise. Many independent accounts converging on the same small coin, with sentiment steadily improving, is worth a person's attention. The alert rules were built around agreement, not volume.
- Deliver to where the team already works. The client didn't want another dashboard. Alerts arrived in a Telegram group they already read every day, and each one explained why it fired.
- Be honest about data gaps. Historical X search is patchy in some periods, so we flagged windows where coverage looked incomplete rather than presenting it as complete.
The output was never meant to trade automatically. It was a filter that turned an unreadable feed into a short, explained list a person could judge in a few minutes.