A venture fund is, at its core, a firm of minds: people who have each developed a view of a domain, who hold positions, and whose combined judgment is worth more than that of any individual. We asked whether that firm could be implemented in software. Not assisted by software, but actually implemented as software. Fair is the answer we arrived at.
The system is structured as an orchestrating agent that coordinates several specialised sub-agents. Each has a domain, a memory, and a developing view of the world. They hold positions, surface disagreements, and write to a shared memory that compounds over time. The result behaves less like a tool and more like a team: one that doesn't sleep, doesn't forget, and doesn't let quality slip when deal volume spikes.
We chose crypto as the testing environment because the conditions are unusually favourable: access to deals is permissionless, positions are liquid, and feedback loops are fast enough that the system can learn from its own decisions in weeks rather than years. The alpha hypothesis runs deeper than that. At the earliest stages of any market, a significant portion of signal lives in social exhaust, what builders, researchers, and operators surface publicly before it reaches any database. Human analysts can't process this at scale. Agents can.
One decider, many producers. Sub-agents build the context package. Only Fair issues execution intents.
Every object in the system has a defined type with explicit mutation rules. This removes ambiguity about what "state" means.
Fair operates on a formal knowledge typology: nine distinct object types, each with defined mutability and provenance requirements. Raw observations enter as Receipts and are progressively transformed through normalization, scoring, interpretation, and structured decision-making into Executions and Outcomes. This ladder is not abstract. It is the schema that governs every object in the system's ledger.
In practical terms, this means that at any point in time, we can reconstruct exactly what the system knew, what it had access to, and why it made the decisions it made. Every step from raw observation to capital deployment is traceable, auditable, and reproducible.
| Type | Definition | Mutability | Example |
|---|---|---|---|
| Receipt | Raw observation from a source. No interpretation whatsoever. | append-only |
Tweet, price tick, on-chain event, group chat message |
| Fact | Normalized, validated receipt. A statement of what happened, without inference. | append-only |
"Project X launched at 50K market cap on Solana" |
| Derived Signal | Deterministic transform of one or more facts. Tagged with function version and source receipts for full reproducibility. | recomputable |
Momentum score, volume z-score, social velocity index |
| Belief | Interpretation about the state of the world. Narrative phase, founder quality, macro regime. | versioned |
"AI agent infrastructure narrative is in the 'hot' phase" |
| Thesis | Actionable claim about a specific project with explicit invalidation conditions. Always falsifiable. | versioned |
"Project X will reach 5x because Y. Invalid if Z occurs." |
| Conviction | Scalar derived from belief strength and thesis quality. Maps directly to position sizing. | derived |
0.8 conviction → 3% portfolio allocation |
| Intent | Structured decision emitted by Fair. Specifies action, instrument, sizing, take-profit, stop-loss. | immutable |
BUY 2% of NAV, TP at 3x, SL at -50% |
| Execution | Result of a policy-approved intent. Confirmed fill, partial, or rejection with reason. | immutable |
Filled 1.2 SOL at $54K market cap, tx: 0x... |
| Outcome | Realized P&L and post-investment state. Closes the feedback loop for all three evaluation targets. | append-only |
+90% realized, thesis held through exit, no thesis drift |
State lives in the harness, not in any agent. The ledger is truth; the snapshot is a performance-optimized projection of it.
as_of timestampfunction_version provenanceThe executive loop runs on an hourly cadence and interrupts immediately on material events.
flowchart TD
subgraph SOURCES["DATA SOURCES"]
direction LR
S1["X / Twitter"]
S2["Telegram"]
S3["Farcaster"]
S4["On-chain"]
S5["Market Data"]
S6["Group Chats"]
end
subgraph INGEST["INGEST ADAPTERS"]
direction LR
IA1["Social"]
IA2["Chain"]
IA3["Market"]
end
subgraph PROD["ARTIFACT PRODUCERS"]
direction LR
P1["Sourcing Analyst"]
P2["Principal"]
P3["Macro"]
P4["Monitor"]
P5["Narrative"]
end
subgraph ROUTING["PERCEPTION"]
AR["Attention Router"]
DP["Decision Packet"]
AR --> DP
end
FAIR["Fair, the MD"]
POLICY["Policy Gate"]
subgraph EXEC["EXECUTION"]
direction LR
EX["Executor"]
RC["Reconciler"]
EX --> RC
end
LEDGER["Ledger"]
SNAP["Snapshot"]
SOURCES --> INGEST
INGEST -->|"receipts"| PROD
PROD -->|"artifacts"| AR
SNAP -->|"beliefs + portfolio"| DP
DP -->|"Decision Packet"| FAIR
FAIR -->|"Intent"| POLICY
POLICY -->|"Approved"| EXEC
RC -->|"events"| LEDGER
FAIR -->|"events"| LEDGER
PROD -->|"events"| LEDGER
LEDGER -->|"materialise"| SNAP
SNAP -.->|"read"| PROD
style FAIR fill:#fffbeb,stroke:#ea580c,stroke-width:2.5px,color:#0c1024
style POLICY fill:#fef2f2,stroke:#dc2626,stroke-width:2px,color:#0c1024
style LEDGER fill:#eff6ff,stroke:#2563eb,stroke-width:2px,color:#0c1024
style SNAP fill:#eff6ff,stroke:#2563eb,color:#0c1024
Ingest adapters pull receipts from all sources. Producers transform facts into typed artifacts: CandidateSet, ThesisDraft, RegimeAssessment, WatchlistDeltas, NarrativeCards. Each artifact is logged to the ledger before it is consumed.
The Attention Router surfaces what matters this cycle. The Decision Packet assembles the full context: current beliefs, portfolio state, fresh artifacts, pinned to an as_of timestamp. The packet is itself logged: Fair's inputs are always reconstructible.
Fair (the MD) receives the packet and applies its world model. Emits structured intents: buy, sell, add to watchlist, update thesis, request more data. Every intent is logged immutably before it proceeds to the gate, regardless of whether it is approved.
The Policy Gate validates each intent against hard rules: position limits, drawdown breakers, liquidity thresholds, concentration limits. Returns APPROVED, RESIZED, VETOED, or EMERGENCY with a reason code. Deterministic. No language model is involved at this stage.
Approved intents are executed, paper or live, same interface. The Reconciler confirms fills and updates portfolio state in the ledger. An ExecutionReport and ReconciliationResult are emitted and logged for every action taken.
Outcomes feed three independent learning targets: routing quality, thesis quality, and execution quality. Each operates at a different feedback speed. Beliefs update. Producer accuracy is re-evaluated. The policy gate is reviewed on a slower cadence. The system improves with each completed cycle.
flowchart LR
subgraph CADENCE["REGULAR CADENCE"]
T1["Hourly tick"] --> T2["Assemble packet"] --> T3["Run full loop"]
end
subgraph INTERRUPTS["INTERRUPT TRIGGERS"]
direction TB
I1["Watchlist spike"]
I2["Stop / TP hit"]
I3["Drawdown breach"]
I4["Thesis invalidated"]
I5["Liquidity collapse"]
end
INTERRUPTS -->|"immediate"| T2
style T1 fill:#eef2ff,stroke:#4f46e5,color:#0c1024
style T2 fill:#eef2ff,stroke:#4f46e5,color:#0c1024
style T3 fill:#eef2ff,stroke:#4f46e5,color:#0c1024
style I1 fill:#fef2f2,stroke:#dc2626,color:#0c1024
style I2 fill:#fef2f2,stroke:#dc2626,color:#0c1024
style I3 fill:#fef2f2,stroke:#dc2626,color:#0c1024
style I4 fill:#fef2f2,stroke:#dc2626,color:#0c1024
style I5 fill:#fef2f2,stroke:#dc2626,color:#0c1024
Designed assuming the system can be exploited or make mistakes. The security model does not rely on any single component being correct.
The agents that think have no access to wallets. The agent that has wallet access doesn't think. No single component can independently discover, research, decide on, and execute an investment. An adversary would need to compromise multiple architecturally isolated systems to move funds, and even then, the append-only ledger would record every step.
Every execution intent passes through a rule-based gate before any capital moves. No language model participates in this decision. Position limits, drawdown breakers, liquidity requirements, and concentration limits are checked against hard numerical thresholds. The gate returns a structured verdict with a machine-readable reason code. Survival constraints override every other consideration. There is no mechanism for Fair to bypass this check.
The ledger is immutable. Every receipt, artifact, decision packet, intent, policy verdict, execution, and outcome is written as a new event. Nothing is overwritten, nothing is deleted. Corrections are new events that reference what they correct. This means every decision Fair has ever made is reconstructible from first principles, with the exact inputs it operated on at the exact moment it decided. The system can be audited, backtested, and interrogated at any point in its history.
The intelligence layer, decision layer, and execution layer are architecturally isolated. The Sourcing Analyst and Principal have no awareness of portfolio state. The Policy Gate has no access to research. The Executor has no access to theses, social data, or any intelligence output. It only receives structured, policy-approved intents. These boundaries are enforced by the system architecture, not by social convention. There is no single point of failure that bridges all three domains.
What the Attention Router surfaces for a given cycle is recorded independently from what the Decision Packet contains. This separation prevents attention heuristics from silently changing Fair's decision inputs. The router can prioritize what to highlight, but it cannot modify the underlying facts, signals, or beliefs that Fair reasons about. Both layers are logged independently.
The normal hourly cadence can be interrupted immediately by critical events: drawdown breach, liquidity collapse, confirmed rug pull or exploit, or thesis invalidation. These interrupts bypass the regular scheduling and trigger an emergency policy review. The escalation tier (CRITICAL, HIGH, MEDIUM, INFO) determines response speed and routing. CRITICAL events produce an immediate interrupt; others are handled within the next regular cycle.
All derived signals cite the receipts they were computed from, along with the function version used. All beliefs cite the facts they were inferred from. All theses carry explicit invalidation conditions. This chain of provenance means that any claim the system makes can be traced back to the original observation that grounded it, and any inference that does not survive scrutiny can be identified and corrected without contaminating the rest of the knowledge base.
Three independent evaluation targets. Each part of the system improves on its own signal, at its own speed.
Fair gets better with every investment, not as a metaphor but as a measurable property of the system. Every Outcome closes a feedback loop that flows back through three independent evaluation targets: how well the system identified what was worth paying attention to, how well its theses about individual projects held, and how cleanly the execution layer translated approved intents into positions. These three targets update at different speeds because they carry different signal-to-noise characteristics. Execution quality is immediate; thesis quality requires holding periods to measure; routing quality accumulates across hundreds of sourcing decisions before meaningful patterns emerge.
flowchart TD
OUT["Outcomes + P&L"] --> R["Routing Quality"]
OUT --> TH["Thesis Quality"]
OUT --> EQ["Execution Quality"]
R -->|"fast"| CTX["Perception tuning"]
TH -->|"medium"| WM["World model update"]
EQ -->|"slow"| POL["Policy review"]
style OUT fill:#fdf2f8,stroke:#db2777,color:#0c1024
style R fill:#ecfeff,stroke:#0891b2,color:#0c1024
style TH fill:#f5f3ff,stroke:#7c3aed,color:#0c1024
style EQ fill:#ecfdf5,stroke:#059669,color:#0c1024
style CTX fill:#f7f8fb,stroke:#c4c9d6,color:#5a6378
style WM fill:#f7f8fb,stroke:#c4c9d6,color:#5a6378
style POL fill:#f7f8fb,stroke:#c4c9d6,color:#5a6378
Non-negotiable properties of the system. Not guidelines. Structural constraints.