Built by Cage Rao

NVDA · Forward P/E · same day, two sources

One of these numbers is wrong. The agent has no idea which.

Metric — NVDA Forward P/E Retrieved
SOURCE_A · yfinance 35.2
SOURCE_B · cross-check 18.5
VARIANCE — threshold 5% 47.4%

Consensus not reached. Third source requested → 2-of-3 agreement → value released to the model as VerifiedMetric. Without this step the agent answers fluently, confidently, and wrong.

I built CagentOS — a financial research agent that treats its own input as the thing most likely to be wrong.

Problem

A financial agent that reads a wrong number doesn't fail loudly. It produces a fluent, well-structured, entirely wrong answer — and every conclusion downstream inherits the error silently.

Most agent frameworks treat retrieved data as input. In investment research it is the single highest-risk surface in the system, and almost nothing is built to guard it. That gap is what CagentOS is organised around.

System

A financial research agent OS, built from scratch.

Python. No LangChain, no LangGraph. A ReAct loop on event sourcing, a plugin tool system, cross-session memory, and a data integrity layer standing in front of the model. Live at cagentos.com in invite-only beta.

10 Data sources
21 Tools
9 Research skills
25 Eval criteria
Try it — ask a research question
Powered by the same engine — 3 free queries per day, then sign up for full access.
Decisions

Three sources in parallel, not one

Variance above 5% raises a flag. Resolution requires 2-of-3 agreement — otherwise the agent reports that it doesn't know.

WHY — In research, a confident wrong number costs more than a missing one.

Event sourcing, not a messages table

Every state change is an immutable journal entry. The model transcript is rebuilt from the event stream on each turn.

WHY — Replayable debugging, crash recovery, and an audit trail you get for free instead of bolting on.

An allow-list, not trust in the model

Models invent tool names. A per-agent allow-list rejects the call before it ever reaches the dispatcher.

WHY — What the agent is permitted to do is a system decision, not a model output.

Scored on every change

Ten golden cases across seven scenario types, 25 criteria, LLM-judge scoring with history comparison.

WHY — Without a score you cannot tell a fix from a regression. Most agent projects never find out.

Method

I make every product and architecture decision. I don't hand-write the code.

I specify, direct and verify the implementation with AI coding tools. The four decisions above are mine — the reasoning behind them, the trade-offs, and the failure cases they were chosen against. The typing is delegated.

I put this up front because it's how I work, and increasingly how the teams I want to work with do too.

Prior

Two years as an investment analyst on a secondary-market fund — participating in trading decisions and producing 600+ research reports. The asset class was digital assets; the framework was fundamentals.

Currently — AI data product manager at NashNova, working on data engineering. Shanghai.

Contact

If you're building at the same intersection, I'd like to compare notes.