Analyze trends, Measure sentiment, Predict what comes next HeronLoom, an open-source pipeline from developer korries, combines iterative clustering, LLM-based analysis, graph construction, and analytical search to turn social-media posts or documents into a structured, explorable 3D graph with citations and confidence scores. The tool is built for corpora of up to 50,000 posts or documents and was demonstrated on 43,976 Reddit WallStreetBets posts from September 29, 2020 to April 1, 2021 covering the January 2021 GameStop short squeeze, with no predefined categories, keyword seeds, or manual annotations. HeronLoom requires Python 3.11+, Ollama for embedding and cluster-naming models, and an OpenAI- or Anthropic-compatible API endpoint for its heavy model, with an NVIDIA GPU available for acceleration. Turn social-media posts or documents into a structured, explorable 3D graph — and ask analytical questions in natural language, with citations and a confidence score. No predefined categories, no manual annotation. Install -install · Quick start -quick-start · How it works -how-it-works · Documentation -documentation HeronLoom combines iterative clustering, LLM-based analysis, graph construction, and analytical search in a single pipeline. It tracks how topics and narratives evolve over time, identifies the signals driving those changes, and makes every conclusion traceable to the underlying corpus. Built for corpora of up to 50,000 posts or documents. The pipeline favours clustering quality and analytical depth over raw throughput — larger corpora may work but have not been systematically validated. - Reconstructs how ideas change — tracks topics, arguments, turning points, and changing interpretations across the corpus, instead of just producing a static list of topics. - Explains change over time — goes beyond what people discussed to show what changed, when it changed, and what happened afterward. - Preserves conflicting interpretations — keeps competing explanations visible instead of reducing them to a single narrative. - Separates claims from verified facts, and signals from outcomes — repeated claims, theories, and interpretations aren't treated as evidence just because they are frequent or highly engaged with. When a signal is used to anticipate an outcome, the prediction is kept separate from the evidence of what actually happened. - Evidence-based confidence — every conclusion shows what supports it, what remains uncertain, and where the evidence comes from, down to the original posts, timestamps, and quotes. - Built for noisy short-form text — fragmentation, repetition, slang, sarcasm, mixed sentiment, and rapidly changing context make short-form content difficult to analyze reliably with text similarity or aggregate scores alone. A complete run on Reddit WallStreetBets Posts https://www.kaggle.com/dsv/2530155 by Gabriel Preda, using raw posts from September 29, 2020 to April 1, 2021. After date filtering, the pipeline processes 43,976 posts covering the January 2021 GameStop short squeeze. No categories, keyword seeds, or manual annotations are provided to the system. Every cluster, name, narrative chain, and pool shown below is produced by the pipeline. Two real questions asked to the system using this corpus — full answers with confidence scores below, no editing: - Analyze trends + measure sentiment: What were the main topics and sentiment in the 48h after Robinhood's trading restrictions? https://github.com/korries/HeronLoom/blob/main/examples/robinhood-restrictions-sentiment.md - Predict what comes next: What do you think will happen next, after March 2021, to GameStop's stock, to Robinhood and Citadel, and to the hedge funds that bet against GameStop? https://github.com/korries/HeronLoom/blob/main/examples/after-March-2021.md Note: Because the corpus r/wallstreetbets may contain offensive language, source quotes have been removed from these two examples. The quotes are retrieved from the corpus and are not part of the LLM's response. Requirements - Python 3.11+ - Ollama https://ollama.com/ , for the embedding and cluster-naming models. - An OpenAI- or Anthropic-compatible API endpoint for the heavy model, unless a local endpoint is configured. For large corpora, a model with a 1M-token context window is recommended. - An NVIDIA GPU can accelerate computation: git clone https://github.com/korries/HeronLoom.git cd HeronLoom python -m venv .venv source .venv/bin/activate On Windows: .venv\Scripts\activate python -m pip install -U pip python -m pip install -r requirements.txt Optional, for GPU acceleration — installing this later, in a new terminal? Activate the virtual environment again first step 2 : you should see .venv at the start of your prompt. Example for CUDA 13.2: python -m pip install torch torchvision --index-url https://download.pytorch.org/whl/cu132 python -m pip install cupy-cuda13x cp .env.example .env ollama pull qwen3-embedding:8b ollama pull qwen3.5:9b Configure model slots in config/config.yaml before the first run. API keys go in .env , never in configuration files. Provider setup, model selection, and parallelism: Configuration https://github.com/korries/HeronLoom/blob/main/docs/CONFIGURATION.md . Place your files in data/raw/ — see Input format input-format below. Then launch the dashboard: python dashboard.py Open http://127.0.0.1:8000 and select New run . From there: launch the run, ask questions, and open the 3D graph, all on the same page. See Dashboard https://github.com/korries/HeronLoom/blob/main/docs/DASHBOARD.md . For scripting or automation, use the CLI instead — same data/raw/ folder, no dashboard needed: python pipeline.py --input data/raw/ python reload.py search