From 973a5402e52125b9ec42109025357ae01ba8315d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20S=C3=A1nchez?= Date: Tue, 10 Mar 2026 16:50:40 -0300 Subject: [PATCH] README.md --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/README.md b/README.md index e69de29..caf4553 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,70 @@ +# crypto_project_analyst + +A multi-agent pipeline that takes a CoinMarketCap URL and produces a comprehensive markdown analysis report for a crypto project. + +Built on [OpenClaw](https://openclaw.dev) with local LLMs via LM Studio / Ollama. + +The architecture is specifically designed to get good results from small local models (20B). Each agent has a narrow, well-defined job with tight instructions — operators are dumb and deterministic, the analyst reasons freely but on a pre-assembled payload. Context isolation, parallel execution, and explicit skill files do the heavy lifting so the models don't have to. On a capable model like GPT-4 or Claude, most of this pipeline would be unnecessary — a single agent could handle it all. + +--- + +## How it works + +``` +User → data-orchestrator → [operators in parallel] → crypto-analyst → reports/-.md +``` + +1. **User** sends a CoinMarketCap URL to the `data-orchestrator`. +2. **data-orchestrator** POSTs the URL to the link extraction daemon, which categorizes all links found on the page (GitHub, Twitter, docs, web, etc.). It then spawns all relevant operators in parallel and waits for their responses. Once all results are in, it assembles a payload and spawns the `crypto-analyst`. +3. **Operators** each handle one data source: + - `rss-operator` — fetches recent news entries from the RSS feed database + - `github-operator` — pulls repo/org metrics from the GitHub scraper daemon + - `twitter-operator` — fetches Twitter/X profile data + - `web-operator` — fetches and summarizes relevant web pages (up to 20 URLs) +4. **crypto-analyst** receives the assembled payload as a starting point, investigates freely using `web_fetch`, hunts for the whitepaper, and writes a structured report to `reports/`. + +--- + +## Agents + +| Agent | Model | Role | +|---|---|---| +| `data-orchestrator` | gpt-oss-20b | Orchestration — link extraction, operator spawning, payload assembly | +| `rss-operator` | gpt-oss-20b | RSS news fetching | +| `github-operator` | gpt-oss-20b | GitHub repo/org metrics | +| `twitter-operator` | gpt-oss-20b | Twitter/X profile data | +| `web-operator` | gpt-oss-20b | Web page fetching and summarization | +| `crypto-analyst` | gpt-oss-20b | Investigation, analysis, report writing | + +--- + +## Daemons + +| Service | Port | Purpose | +|---|---|---| +| Link extraction | `scraper_host:5003` | Parses CoinMarketCap pages, categorizes links | +| GitHub scraper | `scraper_host:5002` | Fetches repo/org metrics from GitHub API | +| RSS fetcher | `scraper_host:5001` | Stores and queries RSS feeds by ticker/project | + +--- + +## Report structure + +Reports are saved to `reports/` in the analyst's workspace: + +``` +reports/ + ETH-20260310-143000.md + BTC-20260308-091500.md +``` + +Each report covers: Executive Summary, Project Overview, Development Activity, Community & Social, Recent News, Web Presence, Red Flags, and a Verdict for both developers and retail investors. + +--- + +## Config notes + +- `agents.defaults.subagents.archiveAfterMinutes: 10` — operator sessions auto-archive after 10 minutes +- `maxPingPongTurns: 0` — prevents agent-to-agent reply loops +- `runTimeoutSeconds: 0` — no timeout on spawns (GPU tokenization can be slow) +- `crypto-analyst` session is kept open after completion for inspection; operators are left to the archive policy \ No newline at end of file