Bloomberg-grade research. Built for retail.
VYNN is an agentic equity-research platform. Fundamentals, news intelligence, valuation, and a validated recommendation — six minutes per ticker, with every figure traced to a deterministic source.
The thesis scales in May 2026 — joining Robinhood as an ML Engineer on the central AI team, working on Cortex Digest.
Wall Street's last
data moat.
Hedge funds pay $24,000 per Bloomberg seat each year for the research that moves markets. Retail investors get free chat rooms and 15-minute-delayed quotes.
VYNN runs the same six-minute pipeline against the same data — fundamentals, news intelligence, valuation, validated recommendation — for anyone with a phone.
Speed
What a Goldman associate produces in twelve hours, VYNN produces in six minutes — same pipeline, no shortcuts.
Trust
Every figure is computed by deterministic Python. The LLM is allowed to cite numbers; it is never allowed to invent them.
Audit
Every prompt, every state transition, every line of the agent that decided — open source on GitHub. No black box.
Most AI invents numbers. VYNN makes that impossible.
When a chatbot says "Apple is worth $200," where did that number come from? Often nowhere — the model just produced something plausible. VYNN draws a hard line: every figure on the page is computed by deterministic Python. The language model is allowed to *cite* numbers. It is never allowed to *produce* them.
- Intent classification
- Event extraction
- Materiality scoring
- Narrative synthesis
The Apple thesis hinges on iPhone 16 ASP and Mac Mini attach. We model a [c-DCF-WACC-01]WACC = 8.4% and a [c-DCF-Tg-02]terminal growth = 2.5%, holding gross margin flat. Under our base case the intrinsic value resolves to [c-DCF-IV-03]$215.62 per share, against a 12-month price target of [c-REC-PT-04]$199.31.
REPORTING.AGENT · narrative.synthesize()
- DCF computation
- Recommendation calculation
- Citation validation
- Reproducibility checks
| cite_id | source | value |
|---|---|---|
| [c-DCF-WACC-01] | dcf.assumptions!E12 | 0.0840 |
| [c-DCF-Tg-02] | dcf.assumptions!E14 | 0.0250 |
| [c-DCF-IV-03] | dcf.summary!C7 | $215.62 |
| [c-REC-PT-04] | rec.layer1.targets[12m] | $199.31 |
RECOMMENDATION.LAYER1 · FixedNumbers (immutable)
● hover any citation chip to see the source it must cite. unsourced numbers are rejected by the validator.
LangGraph supervisor–worker
over a frozen blackboard.
One supervisor classifies intent and routes a ticker request across six specialized workers. Every agent reads from and writes to a single FinancialState — a frozen dataclass that makes the whole pipeline auditable and reproducible. Click any node to inspect its prompt, its schema, and the lines of code behind it.
Three layers.
Zero invented numbers.
Layer 1 is pure Python: a deterministic calculator turns DCF output into price targets and rating bands. Layer 2 is the LLM — but it can only cite numbers Layer 1 produced. Layer 3 is a regex validator that rejects any unsourced figure and triggers an auto-correction loop. ≥95% citation coverage, enforced at the boundary.
Calculate
rec/layer1.py · pure Python
| [c-DCF-IV-03] | intrinsic_value | $215.62 |
| [c-REC-PT-04] | target_12m | $199.31 |
| [c-REC-RET-05] | expected_return | +3.8% |
| [c-REC-RAT-06] | rating | HOLD |
Numbers derived from the DCF and stored as an immutable FixedNumbers object. The LLM cannot mutate or invent these values.
Narrate with citations
reporting.narrative.synthesize()
We initiate coverage of NVIDIA at [c-REC-RAT-06]HOLD, with a 12-month price target of [c-REC-PT-04]$199.31 implying [c-REC-RET-05]+3.8% of expected return. Our DCF-derived intrinsic value is [c-DCF-IV-03]$215.62, reflecting strong AI-infrastructure demand offset by valuation discipline.
The model can only reference numbers Layer 1 produced. Every number you see in production output traces back to a row on the left.
Validate
validate_citations.py · regex
- [c-DCF-IV-03]/\$215\.62\b/ok
- [c-REC-PT-04]/\$199\.31\b/ok
- [c-REC-RET-05]/\+3\.8\s?%/ok
- [c-REC-RAT-06]/\bHOLD\b/ok
Any number in the narrative without a matching regex bounces the run back to Layer 2 with a correction prompt. ≥95% citation coverage is enforced at the boundary.
● hover any citation chip in the middle column · the cell on the left and the regex on the right light up together.
Six minutes, no corner-cutting.
Most AI products either cache the answer or skip steps. VYNN runs the full pipeline every time — financial data, DCF, news intelligence, narrative, and validator. The 383-second average is what production-grade analysis costs honestly.
- Supervisor coordinationIntent classification + dependency-aware routing.16.1s4.2%
- Financial Data + DCFPure Python: yfinance pull + 10-tab DCF generation.10.0s2.6%
- News Screening agentMateriality scoring + structured event extraction across 47 articles.189.4s49.4%
- Reporting agentCited narrative synthesis + recommendation auto-correction loop.167.6s43.8%
Same ticker requested by another user within 10 minutes? News artifacts reuse — full pipeline rerun avoided.
Four minutes. · One ticker. · The whole pipeline.
Recorded against a production deployment. The system goes from a natural-language request to a 35-page analyst PDF, a 10-tab DCF workbook, and a validated recommendation in real time.
Real artifacts.
Real tickers.
Every run produces these. Pulled directly from production output during the pilot. Click any card to preview or download.
| A | B |
|---|---|
| WACC (Perpetual DCF) | 9.00% |
| Terminal Growth g | 2.50% |
| Exit Multiple (EV/EBITDA) | 20.0x |
| Shares Out. (diluted) | 15.0 B |
| Current Market Price | $273.40 |
| Value per Share (Perpetual DCF) | $317.24 |
| Value per Share (Exit Multiple DCF) | $252.18 |
| Average of Methods (per-share) | $284.71 |
| Upside vs Market | +4.1% |
AAPL Financial Model
10 tabs · live formulas · sector-aware DCF
| Metric | FY0 | FY1 | FY2 | FY3 | FY4 | FY5 |
|---|---|---|---|---|---|---|
| Revenue ($B) | 164.5 | 200.5 | 237.6 | 274.4 | 308.7 | 339.6 |
| YoY Growth | — | +21.9% | +18.5% | +15.5% | +12.5% | +10.0% |
| Gross Margin | 81.7% | 81.7% | 81.5% | 81.2% | 81.0% | 80.5% |
| EBITDA ($B) | 86.9 | 84.6 | 99.8 | 114.7 | 128.1 | 139.2 |
| EBITDA Margin | 52.8% | 42.2% | 42.0% | 41.8% | 41.5% | 41.0% |
| Free Cash Flow ($B) | 54.1 | 67.2 | 80.4 | 93.5 | 105.5 | 115.7 |
META Financial Model
10 tabs · live formulas · sector-aware DCF
Measured, not claimed.
Real measurements from the production pilot. Reproducibility was tested across multiple runs and paraphrased prompts.
Average over comprehensive analyses, parallelized agent execution.
Across 9 runs · 3 tickers · CV 0.016 on NVDA.
vs. the original sequential pipeline, via parallel agent execution + caching.
Symbolic outputs reproduce exactly under identical inputs.
Production deployment on Hetzner Cloud during 2025.
Across three repositories — backend, API, frontend.
yfinance, SerpAPI free tier, newspaper3k.
Generic · SaaS · REIT · Bank · Utility · Energy NAV.
Read the code. Three repos.
VYNN ships across three repositories under the Agentic-Analyst organization. Permissive license, real production code.

Zanwen (Ryan) Fu
Duke MS Computer Science · joining Robinhood Agentic AI · MLE · May 2026
I built VYNN AI solo over six months — agent backend, API orchestration, React frontend — to test a thesis: that institutional-grade financial analysis can be democratized end-to-end with agents.
It worked. Five hundred pilot users, deterministic numbers, real reports, six minutes per ticker. The thesis scales next at Robinhood.
Three places to go from here.
Watch the demo. Read the code. Or read the engineering blog for the deep dive.
- Watch the 3-minute demo
End-to-end run on AAPL — request to validated recommendation in real time.
- Star on GitHub
stock-analyst — the agent backend. LangGraph, blackboard pattern, 33 prompt templates, six sector DCFs.
- Read the engineering blog
12-min read · the architectural decisions, the wrong calls, and what production-grade agentic systems actually require.