Buys, sells, and plans get buried in chat.
Buys, sells, and plans are posted in a WhatsApp group chat and scroll out of view. Weeks later it's hard to find who posted what, or whether it worked.
TradeFlow records every buy, sell, and plan shared in a WhatsApp group you’re already part of, and scores how each one did. You see what’s actually working.
If you're an active investor doing your own research and swapping buys, sells, and plans with fellow investors in WhatsApp groups, this is for you.
Buys, sells, and plans are posted in a WhatsApp group chat and scroll out of view. Weeks later it's hard to find who posted what, or whether it worked.
For WhatsApp groups whose members share their stock, options, and futures buys, sells, and plans in chat, and want a record of what was posted and how it turned out.
It lists what the WhatsApp group traded, who posted, and how each buy, sell, and plan performed five trading days later.
Not a group invite. This doesn't advertise a WhatsApp group or ask you to join one. It's a tool for getting more out of a group you're already in. It does the reading and sense-making you'd otherwise do by hand.
Not a live monitor. Data refreshes hourly. It's for review, not for reacting in real time.
Not a trading bot. Read-only. No broker connection, and it places no trades.
Not financial advice. It reports what happened. It doesn't recommend what to do.
One chronological tape of the group’s trades, without the questions and chatter around them. Filter by symbol, instrument, action, outcome, or trader.
Whether the WhatsApp group is opening or closing, put/call balance, the busiest symbols, and names several members are piling into.
Every call gets a five-trading-day direction check: favorable, unfavorable, or flat. Stated targets are tracked separately. Options are scored on the stock's direction, not the contract's profit.
The Traders view compares activity, active days, favorite symbols, and scored outcomes. Nobody's identity is exposed, and small samples stay labeled.
Each action is scored against daily market data from TradingView or Yahoo Finance, your pick. The scores show up on per-trader scorecards and in crowd insights.
This is the actual dashboard I use. It reads the WhatsApp trading group I’m in, scores each call every hour, and publishes the anonymized results here. TradeFlow works with whatever WhatsApp group you’re already in. Run it on yours and you’d get the same trade tape, outcome badges, crowd insights, and per-trader cards.
Live data — refreshes hourly.
A simple web page reading live data, refreshed hourly. No sign-up, no keys. Your own deployment reads from your database.
Want this for your group? Point it at your own WhatsApp group. The Get started tab has the checklist and the setup prompt.
Get started →Raw chat and WhatsApp identities don’t reach the dashboard. An AI reads each message and pulls out the trade. Only anonymous trade records get stored.
The code includes the reader, parser, outcome scorer, setup UI, database, and dashboard. It runs on your own hardware. A free Oracle cloud server is enough.
Fair warning: this is the do-it-yourself path. It assumes you’re comfortable typing commands and running a small computer in the cloud. A hosted version for everyone else is on the roadmap.
Connect as a linked device, get new messages since the last check, disconnect. Hourly 8:30am–5pm ET, plus a midnight run.
Turn buys, sells, plans, options, and quoted replies into organized trade records.
Check five-trading-day direction against market data.
Review flow, outcomes, clusters, and trader activity on the dashboard.
Connects as a linked device, pulls messages since the last check, and disconnects. No permanent session. No spare phone.
Reads chat messages and pulls out the trade details: symbol, action, instrument, strike, expiry, quoted context. Any OpenAI-compatible AI works.
Daily prices for the five-day outcome scoring, round-trip detection, and target checks. Yahoo Finance (free, no key) works as a replacement.
Stores the anonymous trade records. The dashboard reads them live; only the hourly job can write. Any compatible database works.
Node.js runs the WhatsApp reader and setup UI; Python handles reading the trades, scoring them, and saving to the database. It all runs on your server: one script per cycle, on an hourly schedule.
The dashboard is a simple page on Vercel; the hourly job runs on a free Oracle cloud server. Any Ubuntu server works as the host.
Gather the checklist, then hand the setup prompt to your AI agent. Every step matches the installer and setup UI.
Heads up: the steps below need some technical comfort. Typing commands, creating accounts on a few online services, and running a small computer in the cloud. If that’s not you, a hosted option is planned: you connect your WhatsApp group, fill in a short setup form, and get your own private dashboard, protected by a password. It’s paid, just enough to cover the running costs.
dashboard/ and it deploys on every push. Point dashboard/supabase-config.js at your Supabase project first.The agent does the deploying and installing. Three steps need you: typing the pairing code into WhatsApp on your phone, pasting your API keys, and creating the Supabase tables once. It all happens in the setup UI, section by section:
How to know it worked:
wa_trades table.sudo systemctl status wa-trade-bot-cycle.timer — hourly, 08:30–17:00 ET plus a midnight run.No. It watches exactly one WhatsApp group chat — the trading group you name in the setup UI — and only messages from that group. Your 1:1 chats are never touched.
No. The reader pairs as a linked device on your existing WhatsApp account with a one-time code, then disconnects after every hourly pull.
Never. It's read-only analytics — it watches, structures, and scores. There is no brokerage connection and no order path anywhere in the code.
$0 a month on free tiers: an Oracle Cloud Always Free server, the Gemini free tier, Supabase free tier, and Vercel free tier. Every layer is swappable if you'd rather use your own providers.
Pairing is a round trip: the setup UI shows a code, you type it into WhatsApp on your phone, and WhatsApp confirms back to the server. The link only counts once the UI reports wa_paired: true. Type the code in right away — codes expire within minutes — and wait for that confirmation before moving on. If it keeps failing, the server is holding a stale half-paired session: click "Get a fresh code" in the setup UI, which wipes it and starts clean.
The page at http://<VM-IP>:3001/setup.html won't load. Oracle blocks all ports by default — the subnet's security list needs a TCP ingress rule for port 3001 (source 0.0.0.0/0). Add it in the Oracle console under Networking → Security Lists; the checklist above has the exact rule.
Always Free capacity in a region comes and goes — we hit this in us-sanjose-1 for both free shapes. Retry, or try the other shape. What unblocked us: upgrading the tenancy to Pay As You Go (card on file, still free-tier eligible) with a budget alert as a safety net.
Two usual causes. First, a fresh linked device takes up to a minute to sync its chat list — the reader polls and waits, so give it a moment and run the cycle again. Second, the group filter: the reader only looks at the group named in "WhatsApp group to watch" in the setup UI (case-insensitive substring match). If that doesn't match the group's actual name in WhatsApp, it finds nothing.
Symptom: pairing codes never appear, or reads die instantly. The chromium snap's launcher wrapper refuses to run inside a systemd service — the browser starts fine over SSH but never from the timer or setup UI. The fix is PUPPETEER_EXECUTABLE_PATH=/snap/chromium/current/usr/lib/chromium-browser/chrome (the real binary). The installer sets this already; only hand-rolled setups need it done manually.
One bad batch never blocks the rest: the parser retries failed batches smaller, and messages it can't parse are marked and skipped. The usual cause is the Gemini free tier's rate limit. Easiest fixes first: add a backup Gemini key in the setup UI (it fails over automatically when the primary hits quota), wait for the quota to reset, or point the setup UI at any OpenAI-compatible model instead.
Not an error — the timer only runs 08:30–17:00 America/New_York plus a midnight run by design. For an immediate run, "Run a cycle now" in the setup UI bypasses the time gate.
Check Status first. If "Last pull" is old, the hourly job isn't running — check the timer and the cycle log. If the tape is fresh but outcome badges are missing, that's the market-data source: scoring failures never block new trades, so an expired TradingView token or an unreachable Yahoo just leaves scores blank. Reconnect it in §3 of the setup UI.
One free VM, your existing WhatsApp, one API key. Hand the setup prompt to your AI agent.
The pipeline handles messy chat. A few WhatsApp group habits make the tape cleaner and the scores more meaningful.
ACTION SYMBOL details — e.g. ADD AMZN $300 call or EXIT TSLA shares. The parser handles free text, but consistent posts extract reliably. Pin the format to the WhatsApp group.PLAN AMZN target 300. The dashboard checks whether stated targets get hit. A plan without a target can’t be scored.Where TradeFlow goes next. None of this exists yet. It's the direction, not a feature list.
A hosted option, paid just to cover costs. You connect your WhatsApp group and fill in a short setup form. Your group’s data stays private to you, and you get your own dashboard protected by a password.
Telegram, Discord, and others. Today it reads WhatsApp only.
Follow several groups in one dashboard, on the same channel or across channels.
A side project — feedback, feature requests, and bug reports welcome.