Search projects, hackathons, sponsors and tech

    ← All projects

    AgenIPO

    Startup fundraising where the investor is an AI agent bound by a human mandate

    Demo

    About

    AgentIPO is a fundraising platform where the investor is an AI agent, not a person. We are trying to solve two problems at the same time: 1) Founders get funding from verified investors 2) Investors can run their own AI agent that analyzes and verifies data (onchain & offchain), with the ability to close deals autonomously. How does this work: 1) A founder lists a startup with links, contracts, token, and all data they think is important, such as MRR, DAU, growth, etc. They can gate it and send it upon request from an agent 2) Investor run their own AI agent, based on their investing rules - thesis, sectors, minimum diligence score, max ticket, per-round share, daily budget, risk tolerance. 3) Agent working in the background and does the research for every new startup on the platform, then shows investors good matches. It has two modes: fully autonomous, where the agent tries to send money ASAP, and human-in-the-loop, where investors can review data themselves and proceed with investing.

    How it's made

    pnpm monorepo: NestJS 11 API, Next.js 16 dashboard, a zod contract package shared by both, and Foundry contracts. Every module is ports & adapters, every source file is capped at 100 lines by ESLint and a CI script, and the domain layer — evaluators, mandate gate, spending policy, approval policy, growth math is framework-free pure functions with Vitest specs. The Graph is load-bearing, not decorative: agents cannot decide without it. Three Graph products compose in one pipeline — the Token API for holders, top-10 concentration, 30-day transfers and treasury stables; a Messari standardized DEX subgraph so one query works against any DEX by swapping the subgraph id; and the Agent0 / ERC-8004 subgraph, whose reputation for the agent's own identity is fed back into its decision prompt. Every signal carries a provenance badge in the UI, and fixtures are labelled as fixtures rather than passed off as live. Arc is where money moves. RoundEscrow.sol (Solidity 0.8.24, 52 Foundry tests) is a milestone escrow settled in USDC — which on Arc is the native gas token, so the same asset pays fees and fills the round. createRound sells equityBps; invest is target-or-refund; releaseMilestone pays tranches; settleExit(kind, valuation, proceeds, evidenceUri) pays a liquidity event into the claim pool, callable only by the platform or the round's founder. Claims are floored per investor so the sum can never exceed the pool. Agents hold their own wallets — HD-derived from one mnemonic, or Circle developer-controlled wallets on ARC-TESTNET behind the same SettlementRail port. Hedera carries the audit trail: data access requested and granted, decision made, approval, settlement, exit, claim — each written to an HCS topic with sequence numbers. Agents also get their own Hedera accounts and ERC-8004 identities. Two decisions worth naming. First, we removed our own x402 paywall on the diligence report. Charging agents to read public on-chain evidence is the wrong product, and it broke every run without Hedera keys; x402 survives as an opt-in flag (X402_GATE_REPORTS), with the real scarcity moved where it belongs — the founder's private numbers, gated by the founder and opened per agent. Second, missing data is never zero: a withheld metric, an unreadable index and a single reading with no trajectory all land as "unknown", which lowers the report's data coverage instead of inventing a score. The mandate gate then refuses low-coverage rounds before any LLM call or any signature. Hacky bits worth mentioning: Prisma's engine binaries were blocked by our network, so the whole app runs on Prisma 7 with the Rust-free @prisma/adapter-pg and hand-written, transaction-safe migrations. For offline development and for the hosted demo we run a local Arc stand-in — anvil on Arc's chain id with MockUSDC injected at Arc's native USDC address — so the entire escrow lifecycle, including exits and claims, executes as real EVM transactions with no testnet funds. Sign-in is Privy, and when no Privy app is configured the same screens run on a local session that is labelled "demo" in the nav, on the sign-in step and in the stored account record, so a screenshot can never imply a verified login.