Mint Checker: NFT Intel Bot 2.0
In 2022, the NFT market moved fast and information moved slower. Collectors would see a mint announced, check the project's wallet distribution, and try to assess whether the holders looked real or farmed. The tools to do this existed — block explorers, dashboards, spreadsheet imports — but they were built for analysts, not for someone who had 90 seconds to decide whether to click mint.
The problem
The core question a collector asks before a mint is simple: are the wallets holding this project real people or sybil farms? The answer requires pulling holder data from the chain, analyzing distribution patterns, and synthesizing that into a judgment. The data was accessible through RPC calls and block explorers. The synthesis was not. A collector could pull a list of 500 wallets and stare at it, but turning that list into "this looks farmed" or "this looks organic" required pattern recognition that most collectors did not have the time or tooling to do quickly.
The gap was not data access. It was interpretation at speed.
Approach
We built a Telegram bot on Python and aiogram that does two things: pulls on-chain holder data and summarizes the trends in plain language. The user sends a contract address or a mint link. The bot queries the relevant Solana RPC endpoint, fetches the current holder distribution, and runs analysis on the raw data — concentration metrics, wallet age distribution, overlap with known sybil clusters, and holding patterns across related collections.
The analysis layer is deterministic. It computes the numbers: top-10 holder percentage, median wallet age, number of wallets that hold across multiple related mints, gas-spending patterns. These are facts, not opinions. The bot then passes the structured metrics to OpenAI, which produces a plain-language summary: what the distribution suggests, what the risk signals are, and what a collector should watch for. The LLM does not make a buy recommendation. It translates metrics into a sentence.
At peak, the bot supported 9 chains. Each chain required its own RPC integration and its own parsing logic for holder data, because no two chains expose this information the same way. Solana was the primary surface; EVM chains were added as the user base grew and demanded coverage beyond Solana.
What was built
A Telegram bot that takes a contract address, returns a holder analysis, and summarizes the findings in a readable report. The stack: Python for the orchestrator, aiogram for the Telegram interface, Solana RPC (and equivalent endpoints for other chains) for on-chain data, and OpenAI for the natural-language summary. The bot maintains a lightweight cache so repeat queries on the same contract return instantly, and it tracks which collections users are checking to surface trending mints back to the community.
The design principle was separation of concerns: the chain layer fetches, the analysis layer computes, the LLM layer narrates. No layer reaches into another's responsibilities. If the LLM is down, the bot still returns the raw metrics. If a chain RPC is slow, the bot degrades gracefully and reports what it could fetch.
Results
The bot reached roughly 2,800 active users. Average session length was 2 minutes 20 seconds — which is exactly the right duration for this use case. A collector opens the bot, sends a contract, reads the summary, and makes a decision. If the session were shorter, the analysis would be too shallow. If it were longer, the collector would have already moved on. The session length validated that the bot was delivering the right amount of information at the right density.
Nine chains supported at peak meant the bot was not a Solana-only tool. It became a cross-chain reference point, which is what drove the user growth beyond the initial Solana-native audience.
Takeaway
On-chain data is only useful if you can read it fast enough to act on it. The raw metrics — holder concentration, wallet age, cluster overlap — are the substance. The LLM's job is compression: take a table of numbers and return a paragraph a collector can read in the time between seeing a mint and deciding whether to participate. The analysis is deterministic and trustworthy. The narration is what makes it usable. That is the pattern: compute the facts, then make the facts readable.
