live · real money · runs only in your browser

Watch shad0w read
Polymarket's money, live.

Every trade on Polymarket is a sentence ("Will Galatasaray win on Oct 13?") plus dollars. To know where the money is going, someone has to read every sentence and file it under a topic. Thousands of them, every few minutes.

shad0w does that reading. It files each sentence in a few millionths of a second, inside this browser tab: no server, no GPU, no per-call bill. Press start and watch a minute of real trades get sorted as they happen.

or try one sentence first ↓

  1. 1
    A trade happenssomewhere in the world, someone buys "Yes" for $40
  2. 2
    shad0w reads its sentenceand picks a section and a topic, in microseconds
  3. 3
    You see where money flowsa live map, a tape, the biggest markets, every label checkable
60seconds left
Ready. Press start: one minute, then a report you can download.
a trade comes in“Counter-Strike: Vitality vs NAVI – Map 1 Winner”$120 · bought Vitality
shad0w reads it7 µsno LLM call, no server
it files it
EsportsCounter-Strike
certified ✓
shad0w, in this tab
0
an LLM, one call a second
0

Trades labelled so far. One call a second is generous: the hosted LLM calls we measured took 1.1–2.4 s each.

trades read0
money in those trades$0
labels made0
time per trade (measured here)–
of the minute spent labelling–
agrees with Polymarket's tags–
Showing:
Where the money wentarea = dollars · click a block to focus on it

Press start and the map fills in as trades arrive.

Dollars a secondhistory first, then live · hover for details
The tapenewest first · big trades in orange · click one
    Is it right? Checked against Polymarket's own tags

    Polymarket tags every event itself. While you watch, this page fetches those tags for each market and compares.

    markets checked
    –
    section agrees
    –
    topic agrees
    –
    certified labels: section agrees
    –
    share of dollars correctly filed
    –
    Where it disagreed (0) · click to check each one yourself
      Biggest marketsby dollars in this minute · click one
        try it yourself

        Type any market question.

        This is the same table the live run uses, already loaded in your tab. Type anything and it answers as you type, with how sure it is.

        what shad0w gives you

        Three things you can hold in your hand.

        ⚡A label on every item, the moment it arrives

        Not a sample, not a nightly batch. Each trade is filed before the next one lands, and the whole backlog of 20,000 takes well under a second.

        ✓A promise you can check

        Each answer says whether it is certified: confident enough that, tested in advance, such answers disagree with the truth at most 2% of the time (sections) or 5% (topics). The rest are marked, so you know what to double-check. And this page checks it live, against Polymarket's own tags, with every mismatch listed for you to click.

        0No server, no GPU, no bill per item

        The table is a file of a couple of megabytes. It runs in a browser tab, on a laptop, on a phone, or next to your database. Labelling a million items costs electricity.

        why this wasn't practical before

        Reading every trade, live, used to need a server and a bill.

        Polymarket's live feed runs at about 35–45 trades a second. Here is what it takes to label all of them as they come, four ways.

        time per labelto keep up with the live feedthe 20,000-trade backlogwhere it runs
        a person~5 s~200 people, nonstop~28 hoursan office
        a hosted LLM1.1–2.4 s (measured)~40–100 calls in flight, all day, each one billed~6–13 hours, one call at a timesomeone's GPU cluster, over the network
        a small decision model on a laptop CPU0.3–15 s (measured)can't, on a CPU (on a GPU: 3–12 ms, published)hoursa GPU server
        shad0w~7 µsabout 0.03% of one CPU coreunder a secondthis browser tab

        LLM and decision-model times are our measurements on a laptop with a hosted API and llama.cpp (see the Doom race); the GPU figure is llama.cpp's published one. The person is a rough guess. shad0w's time is measured in Node and again in your tab during a run. The trade-off: an LLM can label anything you ask; shad0w knows only what it was taught, and says when it isn't sure.

        how it learned

        No LLM in the loop. Polymarket's own tags taught it.

        Polymarket tags every event it lists ("Soccer", "Fed Rates", "Ukraine Map"…). We mapped those tags to 9 sections and … topics, and shad0w compiled … market questions into a … table. Then two tests: the trades of a few recorded minutes of the live feed (what this page shows you; long-running markets in it may also be in the training data), and every market in the events created in the last two weeks before the data was collected (… questions, including thousands of near-identical sports props).

        "Certified" means the answer is confident enough to pass a test set in advance: a certified section may differ from the tags on at most 2% of answers, a certified topic on at most 5% (90% confidence). The test was run on 4,000 older markets the table never trained on. Everything else is still answered and shown, marked "not certified": in a real system those go to a person or an LLM. Sections are broad; topics are finer and overlap (a Fed market tagged "Trump"), so fewer of them are certified.

        use it on your own feed

        Any stream of short text, labelled as it arrives.

        Prediction markets are one feed. The same kind of table works on support tickets, news, chat, reviews, transactions or logs. If you already have labels (tags, queues, CRM fields), shad0w compiles them directly, as here. If you don't, it learns them from your LLM's answers and takes over the cases it is certified on.

        Newsrooms and research desks

        File every incoming market, headline or filing by beat, and get alerted when money moves on a topic you follow.

        Risk and compliance

        See sports vs elections vs crypto exposure minute by minute, with every label auditable.

        Data products

        Enrich a firehose with labels before it reaches your warehouse. The labelling costs less than the network.

        Support and operations

        Route tickets and alerts the moment they arrive; send only the uncertain ones to a person or an LLM.

        pip install shad0wllm
        # one line per labelled example: {"text": "...", "section": "...", "topic": "..."}
        shad0w train --log labelled.jsonl --out bundle/
        python -c "import shad0w; print(shad0w.load('bundle/').decide('Will the Fed cut rates in December?', probabilities=False))"

        In a browser: npm i shad0wllm, then (await Bundle.load(url)).decide(text), exactly what this page does. Docs →

        fine print

        What this is, and isn't.