Search projects, hackathons, sponsors and tech

    ← All projects

    Finch, Token Tracker

    Discover Robinhood tokens which landed in your wallet randomly

    Demo

    About

    Finch snitches on where your tokens really came from. On Robinhood Chain, wallets receive tokenized stocks — NVDA, COST, GLD — they never bought, with no obvious cause. Here's why: someone launches a memecoin on Pons, it graduates to a Uniswap V4 pool paired against a stock, and the creator's fee cut — paid in that stock — gets redirected through a holder-fee distributor to holders. A wallet just sees "+0.09 NVDA from 0xe25e…"; no block explorer says which memecoin that came from, or why that wallet. Finch is a Telegram bot (@FinchRH_bot) that reconstructs the route: it finds the transfer, resolves the payer on-chain (cross-checked against the official PonsHolderFeeManager registry, never inferred from a getter alone), and confirms the creator-fee path from the Pons launch through its Uniswap V4 pool to the payout. Ask it "why did I get NVDA?" and it answers in plain language — with the technical trace available as a drill-down, and every response honestly labeled confidence: "signal only - not a recommendation". It also surfaces Pons's own activity directly — recent launches and graduations to a live Uniswap V4 pool. The same backend is callable three ways: the Telegram bot, an HTTP API wrapped as a metered Bazantic x402 gateway, and an MCP server for Claude/Cursor — Finch is a peer other agents call, not a gatekeeper.

    How it's made

    Finch is a Telegram bot backed by a Substreams pipeline indexing Pons launchpad activity on Robinhood Chain (EVM 4663). Stack: a parameterized Rust Substreams module (published finch-substreams@v0.1.1) → substreams sink postgres → Aiven Postgres → a Node/TypeScript bot (grammy) with an HTTP API, MCP server, and Bazantic x402/MPP gateway, all deployed as systemd services on an AWS box behind Caddy. Partner tech: The Graph is load-bearing twice over — StreamingFast's Robinhood endpoint (via a thegraph.market Substreams token) is the only data source Finch has, and a separate call to The Graph's canonical ENS subgraph resolves addresses to .eth names. Bazantic wraps the same HTTP API as a metered x402 gateway and hosts a published Recipe (FINCH_GRAPH_ENS) chaining both of Finch's own tools as one LLM-orchestrated call. Hacky/notable bits, honestly: we pivoted off subgraphs entirely mid-hackathon after The Graph's dev-rel confirmed a Goldsky-hosted subgraph doesn't satisfy the track — the whole query layer got rewritten from GraphQL to raw SQL against the Substreams sink. The 1 GB free-tier Postgres meant the sink can't hold full chain history, so an hourly prune job truncates pool-swap tables and keeps only a rolling transfer window. Uniswap V4's singleton PoolManager has no per-pool address to watch, so the Substreams module decodes Initialize events directly and filters by Pons's Meme Hook address to find only the relevant pools. And the Bazantic Recipe's LLM kept returning its answer wrapped in a different ad-hoc JSON shape almost every run — fixed by parsing defensively by field role (a list of known key-name aliases) instead of chasing exact key names each time it drifted.