An autonomous AI agent that hunts, filters, debates, grades, and paper-trades micro-cap stocks across 4 global markets — every single day.
yFinance screener + Brave Search trending merged, scored, and ranked.
$5M–$500M cap, <$30 price, zombie filter. Command routing.
Pydantic InvestmentVerdict model with Kelly Criterion sizing.
HTML reports emailed to the full team via Resend API.
Writes the strongest bullish Lynch Pitch using only provided data.
Aggressively challenges the bull case, flags fabricated claims.
Synthesizes the debate, applies Kelly sizing, issues the final verdict.
yFinance-based micro-cap screener with quantitative candidate scoring. Brave Search adds trending/momentum signals. $5M–$500M market cap range.
Fetches 10-K/10-Q filings for US equities. Extracts MD&A and Risk Factors via BeautifulSoup. Injected into the analyst prompt as hard evidence.
Computes optimal position size from historical win rate. Half-Kelly with verdict scaling. Per-verdict caps: STRONG BUY 25%, BUY 15%, WATCH 5%. 10-minute cache.
Live broker integration for US equities. Submits market orders for BUY/STRONG BUY verdicts. Records order ID, fill price, and broker status to VPS.
VPS systemd timer polls every 15 min for volume spikes, price moves, and SEC Form 4 insider filings. Fires GitHub Actions repository_dispatch for instant analysis.
7 evaluators across two tiers. Online: format_score and verdict_validity run inline during every cron and post LangSmith feedback. Offline: LLM-as-a-Judge hallucination catchers. Annotation queue auto-tags edge cases for human review.
FastAPI + DuckDB behind Tailscale. Seen-tickers with dynamic amnesia (14d AVOID, 30d BUY). Paper portfolio with P&L tracking. Chart.js dashboard with summary cards, verdict donut, Kelly bar chart, and sortable trade table.
LangSmith Hub integration with PROMPT_VERSION env var to pin prompts to specific commits. Run parallel crons with different prompt versions and compare results in LangSmith Experiments.
6-model cascade via OpenRouter: Nemotron → Step → Trinity → Gemma → Llama → Mistral. Auto-retry on 429s with exponential backoff.
Core LangGraph pipeline, yFinance integration, Brave Search discovery, Finnhub fundamentals, Resend email dispatch, Chainlit UI, and GitHub Actions cron.
Command routing, Send parallel fan-out, RetryPolicy, InMemorySaverrepository_dispatch wake-upformat_score and verdict_validity run inline after every verdict, posting feedback directly to LangSmith runs — zero extra LLM costneeds_review in LangSmith for team reviewPROMPT_VERSION env var pins LangSmith Hub prompts to specific commits for controlled experimentsGET /portfolio/summary for lightweight stats without yFinance callsNodes return only changed keys. Annotated reducers on candidates and scores with operator.add.
Gatekeeper combines state update + routing in a single return. Routes to analyst, scout, or email.
Parallel fan-out across 4 market regions. Each region runs the full pipeline independently.
InMemorySaver with thread_id for state persistence and tracing correlation.
max_attempts=3, initial_interval=2.0 on all nodes. Handles transient API failures.
Multi-agent debate as a nested LangGraph subgraph. Composable and independently testable.
"PrimoGreedy does not predict the future. It finds the math, finds the catalyst, finds the catch — and says AVOID far more often than it says BUY."