ultrametric:面向创始人及其 AI 智能体的开源创业运营知识库
ultrametricai/ultrametric
ultrametric 开源了一套面向创始人及其 AI 智能体的创业运营知识库,涵盖分步流程、供应商排名与开源模块,数据以纯 JSON 和 markdown 形式发布,无需密钥即可通过 curl 调用。仓库包含流程语料、供应商评测证据层、法律规则卡与开源模块代码,均经 CI 中的 schema 校验,并附带 CLI 与 MCP server 供智能体接入。
Everything a founder (or their agent) needs to start and run a company: every process step by step, the vendors ranked, and the open modules underneath.
- Use it: ultrametric.ai has the processes · the rankings · the simulator
- Improve it: the open startup repo, CONTRIBUTING.md. Contest a verdict, add your country, add a module.
- For agents: open data, no keys.
curl https://ultrametric.ai/data/categories.json(use it from an agent)
Contribution guides: Add your vendor · Add a process · Add a jurisdiction · Add an open module
Talk: Discord — founders and contributors
The single structural overview: each functional area, what it is, and where it lives, in the order a reader needs them. The knowledge layer is the product: plain JSON and markdown, schema-validated in CI, usable without running any code.
Processes — the founder work, step by step. On the site: /processes (every founder process with its Agentic %, plus the chained playbooks), /situations (reactive, trigger-driven work, hottest clock first), and /artifacts (the documents and records the processes produce and consume).
| Path | What lives there | Contract / gate |
|---|---|---|
processes/ |
corpus.json (the operational processes and the reactive situations: DAGs, routing, geo scope, time estimates; situations doctrine in SITUATIONS.md), the per-step vendor registry, the artifact registry (artifacts.json), the company data fields the open modules consume (company-fields.json), and jurisdiction-scoped legal workflows (equity/us-de/…) |
schemas/operational-process.schema.json · schemas/process.schema.json |
journeys/ |
chains.json — multi-process founder paths |
corpus schema + loader tests |
Vendors — the judged tool rankings behind every process step. On the site: /overall, the per-arena leaderboards at /arenas, head-to-heads at /compare, proven toolchains at /stacks, and government services with per-country agency boards.
| Path | What lives there | Contract / gate |
|---|---|---|
data/ |
The arena evidence layer: per-arena products, stories, verdicts, evidence packs, fingerprinted rankings | recompute-check (bit-identical determinism) |
vendors/ |
The evidence doctrine + reviews/generated/ — one interchange record per judged product |
schemas/vendor-review.schema.json, deterministic regeneration |
pipeline/ |
crawl → extract → probe → judge → derive; all scores computed from verdicts | churn policy, judge caches, recompute gate |
Open modules — the rules and calculations a startup runs on. On the site: /open-documents, and the geo views: the geo switcher on process/product pages and the per-country process views (US · UK · IN · DE · FR · PT · CA).
| Path | What lives there | Contract / gate |
|---|---|---|
rules/ |
Dated, source-locked legal rule cards with stable IDs, one dir per jurisdiction (US-FED/, US-DE/) |
schemas/rule.schema.json + validator |
sources/ |
Primary authorities: publisher, exact provision locator, issued/checked dates | schemas/source.schema.json |
open-modules/ |
The open-modules index: the cap-table, runway, deadline, equity, and tax math as source-cited code in lib/openstartup/, the contribution bar, each module's Honesty boundaries |
worked-example + property tests |
jurisdictions/ |
Jurisdiction registry + vendor-geo.json (dated per-country vendor availability, source-cited; feeds the geo views above) |
exact-dimension matching; unknown maps to unsupported |
open-documents/ |
The canonical startup legal documents as dated, link-only records | lib/documents.ts + registry/README sync test |
resources/ |
The canonical startup resources + LAWS.md (cited distilled principles) + LORE.md (veracity-graded startup history) |
lib/resources.ts / lib/lore.ts + invariant tests |
lore/ |
The startup-lore registry (registry.json): schooled heuristics as sourced claims, with the cross-school tensions mapped on both sides |
__tests__/lore-registry.test.ts schema + referential invariants |
Contracts & infrastructure — the layer everything above validates against, plus the site
that renders it. Three directories confuse newcomers, so to be explicit: schemas/ holds the JSON
contracts every record validates against; coverage/ is the coverage map
(domains.json = what the corpus intends to cover, coverage.json = what it covers
today, at what maturity); rules/ is cited law the open-modules layer consumes; its
rows are in the Open modules group above.
| Path | What lives there | Contract / gate |
|---|---|---|
schemas/ |
JSON Schema contracts for processes, rules, sources, vendor reviews | drift-gated against the zod source |
coverage/ |
Domain taxonomy, lifecycle map, machine-readable coverage with its maturity stated | lib/founderOps.ts coverage checks |
templates/ |
Blank, schema-valid starting points for contributions | — |
fixtures/ |
Wholly fictional companies/events that exercise the planner | synthetic: true enforced |
governance/ |
Review policy + maturity ladder, evidence doctrine, agent policy, security | — |
infra/ |
Cloudflare edge worker (routing, auth, live MCP probes) | worker tests |
docs/ |
Architecture (FOUNDER-OPS.md), scoring companions, program docs | — |
reports/ |
Committed weekly arena reports (markdown, rendered at /reports) |
generated by the pipeline |
scripts/ |
Repo utilities: stats, badges, data mirroring, schema generation | — |
app/, components/, lib/ |
The Next.js static site over the corpus, including the simulator at /startup-sim | typecheck, lint, vitest |
public/, __tests__/ |
Static assets (committed badges, logos) and the repo-level test suites | — |
Agent access — the ultrametric npm package ships the CLI and MCP server;
/get-started is the install page. The data itself
needs no install and no auth:
curl https://ultrametric.ai/data/categories.json # every arena curl https://ultrametric.ai/data/ai-coding/rankings.json # any arena, machine-readable curl https://ultrametric.ai/arena/ai-coding/llms.md # same arena, markdown for agents curl https://ultrametric.ai/llms.txt # the index for agents
Every shape is published as a JSON Schema in schemas/, the endpoints are
described by /openapi.json, and the ground rules are in
governance/AGENT_POLICY.md. More surfaces (the docs site, process
manifests, the search index, the RSS feed) in Use it from an agent below.
Record semantics that bind everything (from docs/FOUNDER-OPS.md):
stable IDs with versioned edits; every legal statement resolves to a primary source with an
exact locator; reviewed_on/review_due are editorial dates, not legal effective dates;
every externally-effectful workflow step requires a named, scoped human approval; the planner
answers unsupported rather than guessing; and no jurisdiction is called covered because a
few playbooks exist (maturity ladder).
Processes
ultrametric.ai/processes: the comprehensive founder processes from an agentic lens.
The operational corpus: step-by-step founder processes, each a DAG whose
every step is routed agent / manual form / human, with per-step reversibility
(reversible / painful / irreversible), vendor options drawn from the judged rankings, time
estimates, and, where routes differ, named method variants (e.g. the per-country
filing routes). Every process carries an Agentic %, the share of steps an agent can
run today (full / partial / manual_guide), with per-country geo notes (UK, India,
Germany, France; the US is the baseline). Playbooks chain processes into founder paths
(incorporate → launch, the VC raise, the agent-run back office).
One slice of Incorporate C-Corp
(record form_001 in processes/corpus.json): the opening step
"Choose formation service" carries the ranked vendor options, and the later step "Receive
Certificate of Incorporation" produces the certificate-of-incorporation artifact that the
EIN, banking, and state-registration processes consume
(processes/artifacts.json):
{ "id": "n1", "label": "Choose formation service", "route": "person",
"vendorOptions": ["clerky", "stripe_atlas", "firstbase", "legalzoom", "northwest", "doola"] }
{ "id": "n5", "label": "Receive Certificate of Incorporation", "route": "person",
"producesArtifact": "certificate-of-incorporation" }The corpus also carries situations, the reactive layer: trigger-driven records for the
work nobody schedules (a breach is live, a summons lands, a tax notice arrives). Each
situation names its trigger (the event, not the task) and an urgency tier
(hours / days / weeks), holds no slot on the founder timeline, and routes only the
mechanical core to agents; the counsel/CPA judgment calls and signature acts stay human.
The index is /situations, sorted hottest clock first,
and the doctrine is processes/SITUATIONS.md.
One situation end to end:
Respond to a cease-and-desist
(record sit_001 in processes/corpus.json) names its trigger and
clock, and routes the response to counsel:
{ "trigger": "A cease-and-desist letter claiming trademark or IP infringement arrives by mail or email.",
"urgency": "days" }
{ "id": "n4", "label": "Choose counsel for the response (IP/trademark litigation)",
"route": "person", "optionsArenaId": "startup-law-firms" }The data lives in processes/ (corpus.json + the jurisdiction-scoped legal
workflows), journeys/ (chains.json), and
processes/vendor-registry.json (every vendor fact the process pages render).
On the site: /processes (each process at /processes/<id>),
and The Open Startup, a simulator that replays the
whole corpus as a simulated company, end to end:
To contribute: add a geoNotes country analog, a new process from
templates/, or a chain. All are schema-gated by pnpm test. Start at
processes/README.md and journeys/README.md.
Vendors
The evidence layer: head-to-head, agent-tested rankings of the tools
startups run on, arena by arena (current counts under
Data releases & freshness). Every verdict cites dated evidence (vendor docs, GitHub,
community sources, hands-on probes), rankings recompute bit-identically and carry HMAC
_provenance, honest negatives count as much as positives, and owner-affiliated products are
disclosed and adversarially bias-audited
(evidence doctrine · METHODOLOGY.md).
One judged cell: in Online Payments, Stripe's verdict
on the story "As a founder, I can accept an online card payment within a day of signing up"
(data/payments/stories.json) is full, and its rationale leans
on a hands-on community report, "up and running and accepting recurring payments in less than
an hour" (evidence stripe-comm-9 in
data/payments/evidence/stripe.json). The cell renders on
the Stripe product page from
data/payments/verdicts.json:
{ "productId": "stripe", "storyId": "accept-card-payment-online",
"verdict": "full", "quality": 8, "confidence": "medium" }The data lives in data/ (per-arena products, stories, evidence, verdicts,
rankings), vendors/ (the doctrine + reviews/generated/, one dated interchange
record per judged product), and
processes/vendor-registry.json (the bridge that links process steps to judged
arenas). On the site: /overall and every arena at
/arena/<id> (index at /arenas).
To contribute: contest a verdict, add evidence, prove a story, or submit a product (see
Contributing). Start at
vendors/README.md.
Open modules
The open modules and the rule cards beneath them: the rules and calculations a startup runs on, as open, source-cited, exhaustively tested records and code:
- Rule cards —
rules/: dated legal propositions (US federal and Delaware to start), one stable ID each, everykind: legalcard citing a primary authority insources/with an exact provision locator. Status isdemonstration, the current maturity level, stated on each card. - Open modules —
lib/openstartup/, indexed inopen-modules/README.md— pure, deterministic functions, each tested against published worked examples:capTable.ts(+capTableCodec.ts) — founder issuance and vesting, option pools and the in-round pool shuffle, post-money SAFE conversion per the YC Post-Money Safe User Guide (Appendix II examples reproduced number-for-number), priced-round PPS solving, dilution waterfalls. The module is repo-only.runway.ts— Paul Graham's default-alive test as code (constant expenses, compounding revenue, month-by-month trajectory), plus growth-adjusted runway and hiring impact.deadlines.ts— the founder compliance clock (DE franchise tax, Form 1120, Form 941, the 83(b) 30-day window); every deadline cites a dated rule card by ID and flagsneedsReviewwhenever the true legal date can differ.equityComp.ts— offer and equity-comp scenarios (grant % of fully diluted, option spread, exit outcomes under future dilution), cited to the Holloway Guide and Index Ventures' Rewarding Talent; it takes the 409A FMV as input rather than inventing one. All outputs are pre-tax.convertibleNote.ts— convertible promissory notes: simple-interest accrual, best-of cap/discount conversion (the cap denominator comes from the note's own capitalization definition, not a guessed convention), maturity surfaced rather than decided, the three Cooley GO series-pricing methods, and the note-vs-SAFE differences stated plainly.waterfall.ts— liquidity-event waterfalls: the SAFE cash-out-vs-convert choice per the YC User Guide, one preferred series (non-participating vs participating), a pari passu preference tier, proceeds that sum to the sale price exactly, and the conversion-indifference point.grant409aSanity.ts— 409A grant sanity checks (strike floor, FMV staleness, appraisal-presumption timing), every check citing a dated rule card; a sanity model that takes the FMV as input and does not itself value a company. It now includes the three §409A valuation presumptions as structured cited data, method-eligibility checks over explicit inputs, a refresh-trigger checklist, and the penalty mechanics as a labeled arithmetic illustration.vesting.ts— vesting schedules and mechanics with real date math: cliff + periodic schedules per the Cooley GO convention, back-loaded tranches (Amazon's published 5/15/40/40), departure and unvested-repurchase summaries, single- and double-trigger acceleration outcomes, refresh grants as additive composition, the FAST advisor grid, and an early-exercise interface that hands the 83(b) and tax questions to the modules that own them.antiDilution.ts— round-protection mechanics: the NVCA model weighted-average formula (broad- and narrow-based, the denominator difference stated), full ratchet, conversion-price-to-ratio mechanics, pay-to-play as explanation, and a stated interface into the waterfall module; published worked examples are replayed number-for-number.round.ts— priced-round mechanics on top of the cap table: pro rata math (maintaining ownership is buying your pro rata, shown by algebra), option-pool sizing bottom-up from a hiring plan, down-round modeling that composes the anti-dilution adjustments, and founder secondaries (which dilute no one; the shares change hands, none are issued).optionTax.ts— ISO vs NSO exercise mechanics: NSO spread-at-exercise income and the published supplemental-withholding rates, ISO no-regular-tax-at-exercise with the AMT adjustment, the $100,000 ISO limit replaying the regulation's own examples, qualifying/disqualifying disposition math with the loss cap, and a clearly-labeled AMT exposure illustration with asOf-dated parameters.election83b.ts— the 83(b) money math (the deadline clock stays indeadlines.ts): tax-at-grant vs tax-at-vesting scenarios from explicit inputs, the zero-spread founder case, forfeiture outcomes with the cited no-refund risk, and the early-exercise interplay; all six of the IRS revenue procedure's examples are replayed.qsbs.ts— § 1202 mechanics: eligibility as cited conditions (needs review wherever facts decide), the holding clock with the 83(b)/vesting interplay, exclusion percentages by acquisition date across both statutory regimes, the per-issuer cap (greater of the dollar cap or 10× basis), and the § 1045 rollover explained and cited but not computed.deFranchiseTax.ts— both published Delaware franchise-tax methods computed exactly (the Division of Corporations' worked examples replayed number-for-number), the which-method-is-cheaper comparator for the annual March recalculation, and the Large Corporate Filer amount surfaced.rdCredit.ts— R&D tax mechanics at a stated, narrow scope: § 174/§ 174A capitalization/amortization arithmetic with the midpoint convention, and the § 41 payroll-tax-offset election mechanics (eligibility conditions, the cap, quarterly application); computation is over explicit inputs and eligibility always needs review.payrollTax.ts— employer-side federal payroll mechanics: FICA with the asOf-dated wage base, Additional Medicare labeled employee-only, FUTA with the bounded state credit, and per-employee annual cost with a stated state-tax out-of-scope boundary.roundComposer.ts— a priced round replayed end to end (term-sheet economics → conversions and pro rata → the post-close table), composing the cap-table, round, anti-dilution, and waterfall modules with zero parallel arithmetic.unitEconomics.ts— LTV/CAC and payback, the burn multiple, Rule of 40, and the magic number, each cited to its canonical formulation; benchmarks are inputs, not encoded constants.deferredRevenue.ts— subscription revenue recognition and plan-change proration, cents-exact, replaying the published worked examples.
- Open documents —
open-documents/: the canonical, openly licensed startup legal documents (SAFEs, board consents, offer letters, …) as dated records that link rather than redistribute; every URL is verified on itschecked_ondate. - Resources —
resources/: the canonical startup resources plusLAWS.md, the recurring principles distilled from them, every law citing its sources, andLORE.md, notable episodes of startup history as sourced records, every episode graded for veracity (first-person / documented / reported / legend).
An open module may propose a result; it does not silently authorize a filing, grant, or
transfer, and anything leaning on a legal threshold references a dated rule card and returns
needs_review when the locale or date is unknown. Educational, not legal advice.
The data lives in rules/, sources/, lib/openstartup/,
open-documents/, resources/, and jurisdictions/.
The modules are repo-first: pure libraries usable from tests, scripts, or your own agent, and
the processes and site consume the same rule cards and jurisdiction data.
To contribute, start at open-modules/README.md: the module
index, the contribution bar, and each module's Honesty boundaries.
How it works
The startup processes are the center of the repo; everything else feeds them:
- Vendor rankings feed the steps. The pipeline (
pipeline/) crawls vendor docs, GitHub, and community sources into dated evidence (data/<arena>/evidence/), an LLM judge turns each (product, story) pair into a cited verdict (verdicts.json), andderivecomputes the rankings (rankings.json). Scores are computed, never hand-set, andrecompute-checkproves it bit-identically.processes/vendor-registry.jsonlinks each process step's vendor options to the arena that judges them, so every "use this tool for this step" is a ranked, cited claim. - Open modules compute what the steps need. The
lib/openstartup/modules (cap table, runway, deadlines, equity comp, notes, waterfalls, 409A sanity) are the calculations behind the processes, each formula cited. - The law anchors both. Rule cards (
rules/, backed by primary sources insources/) drive the deadline math, the jurisdiction-scoped workflows, and the geo notes (jurisdictions/). A process step that leans on a legal threshold cites a dated card.
The processes themselves live in processes/corpus.json (playbooks in
journeys/chains.json), render at /processes, and replay
end to end in the simulator. Everything is also served
raw: the /data JSON API and the agent endpoints (/llms.txt, per-arena llms.md).
Rankings index — every market we rank
| Ranking | Products |
|---|---|
Desktop OS (desktop-os) |
macos, omarchy, ubuntu, fedora, windows |
Startup Banking (startup-banking) |
mercury, brex, ramp, wise, relay, jeeves, airwallex |
Project Management (project-management) |
linear, asana, clickup, notion, monday, jira, trello |
Web Scraping APIs (web-scraping) |
firecrawl, crawl4ai, jina-reader, apify, scrapingbee, browserbase, riveter, context-dev |
Mobile AI Dev Tools (mobile-dev) |
termius, tailscale, blink-shell, a-shell, working-copy, github-mobile |
Code Hosting (code-hosting) |
github, gitlab, bitbucket, gitea |
AI Coding Agents (ai-coding) |
codex, claude-code, cursor, github-copilot, gemini-cli, opencode, devin, aider, cline, cubic, antigravity, random-labs, conductor, byteask, grok-build |
Edge & App Platforms (edge-platforms) |
cloudflare, vercel, netlify, fly-io, railway, render |
Frontend Frameworks (frontend-frameworks) |
react, vue, svelte, angular, solid |
Local LLM Runtimes (local-llm-runtimes) |
ollama, llama-cpp, vllm, lm-studio, jan, localai, llamafile, runanywhere |
Payroll & HR Ops (payroll) |
gusto, rippling, deel, justworks |
Product Feedback & Intent (product-feedback) |
canny, featurebase, productboard, foreloop |
Software Factory (software-factory) |
foreloop, factory, devin, openhands, codegen, jules, omnara, yylo, humanlayer, superset |
Mobile & In-Person Payments (mobile-payments) |
stripe-terminal, square, sumup, adyen-pos, shopify-pos |
API platforms (api-platforms) |
postman, kong, bruno, hoppscotch, insomnia |
Team Chat (team-chat) |
slack, discord, ms-teams, zulip, buzz |
Backend as a Service (backend-as-a-service) |
supabase, firebase, convex, appwrite |
Online Payments (payments) |
stripe, adyen, paypal, square, autumn, checkout-com, mollie, airwallex, paddle, polar |
Accounting & Bookkeeping (accounting) |
quickbooks, xero, puzzle, pilot, freshbooks, zoho-books, wave, digits, kick, mercury-books, bench |
Security Scanners (security-scanners) |
trufflehog, semgrep, snyk, gitleaks, trivy, gecko-security |
Infrastructure as Code (infra-as-code) |
terraform, pulumi, opentofu, crossplane |
Vibe-Coding App Builders (vibe-coding) |
lovable, bolt, v0, replit, base44, floot |
Model Gateways & Routers (model-gateways) |
openrouter, litellm, portkey, vercel-ai-gateway, cloudflare-ai-gateway, requesty, kong-ai-gateway |
LLM Evals & Observability (llm-evals-observability) |
langfuse, langsmith, braintrust, arize-phoenix, wandb-weave, helicone, galileo, cekura |
AI Search APIs (ai-search-apis) |
exa, tavily, perplexity-sonar, brave-search-api, serpapi |
Agent Frameworks & SDKs (agent-frameworks) |
langgraph, openai-agents, claude-agent-sdk, crewai, pydantic-ai, mastra, google-adk, autogen, smolagents |
Agent Sandboxes & Code Execution (agent-sandboxes) |
e2b, daytona, modal, cloudflare-sandbox, vercel-sandbox, runloop, blaxel, maritime |
Product Analytics (product-analytics) |
posthog, amplitude, mixpanel, plausible |
CRM (crm) |
hubspot, attio, salesforce, twenty |
Startup Legal & Incorporation (legal-ops) |
stripe-atlas, clerky, docusign, firstbase, ironclad, beglaubigt, legalzoom |
Robotics Software Platforms (robotics-platforms) |
formant, gazebo, nvidia-isaac, ros2, viam |
Terminals (terminals) |
warp, ghostty, iterm2, alacritty, wezterm, kitty |
AI Assistants (ai-assistants) |
chatgpt, claude, gemini, perplexity, copilot, grok, muse, poke, martin, jo, dots, grok-bot, kimi, perplexity-computer, instinct |
AI Research Agents (ai-research-agents) |
elicit, consensus, futurehouse, undermind, sakana-marlin, notebooklm |
Package & Toolchain Managers (package-managers) |
homebrew, nix, pnpm, uv, bun, mise |
Vector Databases & Memory Stores (vector-databases) |
pinecone, weaviate, qdrant, chroma, milvus, helixdb, lancedb |
Auth & Identity (auth-platforms) |
auth0, clerk, workos, keycloak, better-auth |
AI Inference Providers (inference-providers) |
groq, together-ai, fireworks-ai, cerebras, deepinfra, baseten, morph |
Workflow Automation (workflow-automation) |
n8n, zapier, make, temporal, pipedream, windmill, afk, gumloop, lindy, activepieces, trigger-dev |
Observability & Monitoring (observability) |
datadog, grafana, sentry, new-relic, honeycomb, signoz |
MCP Infrastructure & Registries (mcp-infrastructure) |
composio, smithery, glama, pipedream-mcp, gram, manufact, metorial |
Browser Automation for Agents (browser-agents) |
browser-use, stagehand, skyvern, hyperbrowser, steel, notte, smooth |
AI Memory Layers (ai-memory) |
mem0, zep, letta, supermemory, cognee, airweave |
Voice Agent Platforms (voice-agents) |
vapi, retell, elevenlabs-agents, bland, livekit-agents, pipecat, bolna, telli, deepgram |
Notes & Knowledge Bases (notes-knowledge) |
obsidian, logseq, anytype, capacities, reflect, poly |
Meeting AI & Notetakers (meeting-ai) |
granola, fireflies, otter, fathom, fellow |
GPU Clouds (gpu-clouds) |
runpod, lambda-labs, coreweave, vast-ai, paperspace |
Feature Flags & Experimentation (feature-flags) |
launchdarkly, statsig, growthbook, flagsmith, unleash |
Serverless & Developer Databases (serverless-databases) |
neon, turso, planetscale, clickhouse, cockroachdb, supabase |
Agent Skills & Extensions (agent-skills) |
superpowers, anthropic-skills, mattpocock-skills, skills-cli, codex-plugins, gstack, ultrametric |
Data Warehouses & Lakehouses (data-warehouses) |
snowflake, databricks, bigquery, motherduck |
Search Infrastructure (search-infra) |
algolia, meilisearch, typesense, elastic, orama |
Scheduling & Calendar (scheduling) |
cal-com, calendly, motion, reclaim, savvycal |
Design & Prototyping (design-tools) |
figma, penpot, framer, sketch, canva, claude-design, spline, rive |
Email Clients & Email AI (email) |
superhuman, shortwave, missive, zero, fastmail, agentmail, gmail |
Incident Management & On-call (incident-management) |
pagerduty, incident-io, firehydrant, rootly, betterstack |
Developer Docs Platforms (docs-platforms) |
mintlify, gitbook, readme, docusaurus, fern |
Data Pipelines & ELT (data-pipelines) |
airbyte, fivetran, dagster, dlt, meltano |
E-commerce Platforms (ecommerce-platforms) |
shopify, medusa, woocommerce, bigcommerce, swell |
Customer Data Platforms (customer-data-platforms) |
segment, rudderstack, mparticle, jitsu, hightouch |
Durable Execution Engines (durable-workflows) |
temporal, inngest, trigger-dev, restate, hatchet, dbos |
AI Customer Support Agents (ai-support-agents) |
intercom-fin, decagon, sierra, pylon, lorikeet, parahelp |
AI Code Review (ai-code-review) |
coderabbit, greptile, graphite, qodo, cursor-bugbot, cubic |
Document Extraction APIs (document-extraction) |
reducto, llamaparse, extend, datalab, unstructured, mistral-document-ai |
Cap Table & Equity (equity-management) |
carta, pulley, cake-equity, fidelity-private-shares, ledgy, vestd |
Error Tracking (error-tracking) |
sentry, bugsnag, rollbar, honeybadger, glitchtip, raygun |
Expense Management (expense-management) |
ramp, brex, expensify, navan, bill-spend-expense |
Billing & Subscriptions (billing-subscriptions) |
stripe-billing, chargebee, recurly, lago, orb, metronome, revenuecat, stripe-invoicing |
Payment Fraud Prevention (fraud-prevention) |
stripe-radar, sift, signifyd, forter, riskified, adyen-risk |
Agentic Commerce (agentic-commerce) |
stripe-agentic-commerce, shopify-ucp, paypal-agent-commerce, coinbase-x402, crossmint, visa-intelligent-commerce, skyfire, adyen-agentic |
Card Issuing Platforms (card-issuing) |
stripe-issuing, lithic, marqeta, highnote, adyen-issuing |
Sales Tax Automation (tax-automation) |
stripe-tax, avalara, anrok, taxjar, numeral, kintsugi |
Marketplace & Platform Payments (marketplace-payments) |
stripe-connect, adyen-for-platforms, finix, mangopay, rainforest, tilled |
Banking as a Service (banking-as-a-service) |
stripe-treasury, unit, increase, column, synctera, treasury-prime |
Processors (processors) |
apple-m5, apple-m4-max, apple-m4-pro, qualcomm-snapdragon-x2-elite-extreme, amd-ryzen-ai-max-plus-395, amd-ryzen-9-9950x3d, intel-core-ultra-9-285k, intel-core-ultra-7-258v |
GPUs & AI Accelerators (gpus) |
nvidia-rtx-5090, nvidia-rtx-5080, nvidia-rtx-5070-ti, amd-rx-9070-xt, nvidia-rtx-pro-6000, nvidia-h200-sxm, nvidia-b200, amd-mi355x |
Hardware Security Keys (security-keys) |
yubikey, google-titan, nitrokey, solokeys, feitian, token2 |
Authenticator Apps (authenticator-apps) |
google-authenticator, microsoft-authenticator, authy, 1password, bitwarden, proton-pass, ente-auth, 2fas |
Game Engines (game-engines) |
unity, unreal, godot, threejs, babylonjs, bevy, playcanvas, phaser |
Identity Verification & KYC (identity-verification) |
stripe-identity, persona, entrust-onfido, sumsub, veriff, plaid-idv |
Banking Data APIs (banking-data-apis) |
stripe-financial-connections, plaid, mx, mastercard-open-finance, teller, truelayer, yapily |
Stablecoin Payments (stablecoin-payments) |
stripe-crypto, circle, bvnk, coinbase-payments, moonpay, paxos |
Email Marketing (email-marketing) |
loops, customer-io, klaviyo, mailchimp, kit, bento |
Self-Hosted AI Assistants (self-hosted-assistants) |
openclaw, open-webui, librechat, anythingllm, khoj, lobe-chat |
Frontier Models (frontier-models) |
jev, claude, gpt, gemini, llama, deepseek, mistral, grok |
Compliance Automation (compliance-automation) |
vanta, drata, secureframe, oneleet, sprinto, thoropass |
Applicant Tracking (applicant-tracking) |
greenhouse, lever, ashby, workable, recruitee |
Domain Registrars (domain-registrars) |
porkbun, name-com, cloudflare-registrar, godaddy, dynadot, namecheap |
SSO & Workforce Identity (sso-identity) |
okta, microsoft-entra, google-workspace, jumpcloud, rippling-it |
Cloud Storage (cloud-storage) |
dropbox, google-drive, box, onedrive |
Cloud Platforms (cloud-platforms) |
aws, google-cloud, azure, oracle-cloud |
Transactional Email APIs (email-apis) |
sendgrid, resend, postmark, mailgun, amazon-ses |
Virtual Mailboxes (virtual-mailboxes) |
stable, virtualpostmail, earth-class-mail, anytime-mailbox |
Startup Law Firms (startup-law-firms) |
cooley, gunderson-dettmer, fenwick, orrick, goodwin, latham-watkins, vlp-law-group, lowenstein-sandler, bird-bird, osborne-clarke, ypog, gide, cyril-amarchand, induslaw, trilegal |
Startup Immigration (startup-immigration) |
alma, lighthouse, founder-law, deel-immigration, plymouth-street, casium, legalos, siskind-susser, ellis-porter, daryanani-law, green-and-spiegel |
Government Services (government-services) |
irs, eftps, uscis, uspto, sam-gov, delaware-doc, california-sos, new-york-dos, texas-sos, companies-house, hmrc, uk-ipo, uk-visas-immigration, mca-india, gst-india, ip-india, efrro-india, handelsregister, elster, dpma, bamf, inpi-guichet-unique, dgfip-impots, inpi-ip-operations, anef-france, irn-portugal, at-financas, inpi-portugal, aima-portugal, corporations-canada, cra, cipo, ircc, colorado-sos, florida-dos, washington-sos, new-jersey-dor, ohio-sos, minnesota-sos, virginia-scc |
Regenerated by pnpm stats; do not hand-edit. The live site has the current set as it grows.
See data/categories.json for each arena's full description, personas, and themes.
Data releases & freshness
As of the last full pipeline run: 96 rankings, 656 products, 37,107 judged verdicts.
These counts (and the badges) are regenerated from data/ by pnpm stats, not maintained
by hand. Everything on this page that changes is generated from the committed data, so the
numbers stay current with the repo itself:
- /reports — generated weekly arena reports (biggest
movers, rank flips, new arenas, close races), committed as markdown in
reports/. - GitHub releases — point-in-time
dataset snapshots (e.g.
data-YYYY-MM-DD) with the fulldata/tree attached, if you want a stable dataset to build against instead of trackingmain. - Score history — every arena's rank and score movements are committed alongside the data
(
data/<arena>/score-history.jsonl), so any flip is reconstructible from the repo alone.
Methodology
The full technical writeup lives in METHODOLOGY.md; this is the short
version. For plain-language answers ("what does na mean," "how do I disagree"), see
docs/SCORING.md; for a critical self-assessment of the formula's limits,
docs/SCORING-REVIEW.md.
- Evidence tiers. Every claim is backed by a dated evidence item, ranked
probe(tested) >github(code) >community(independent) >claimed-docs(vendor claim). A keyless probe harness turns hands-on checks into probe-tier evidence, negative results included. - Judged cells. For every (product, story) pair, an LLM judge reads only that product's
evidence pack and returns
full/partial/disputed/none/nawith a 0–10 quality, a rationale, and the evidence ids it relied on. No training knowledge allowed; verdicts are cache-keyed on their evidence, so nothing re-judges without a reason. - Scores. A product's score is its weighted percentage across applicable cells:
evidenced story coverage, not absolute quality.
nacells are excluded entirely. - The Overall score blends five agent-readiness components (agent access 0.30, API quality 0.20, openness 0.20, agentic app 0.15, automation depth 0.15); 9 canonical agenticness stories are injected verbatim into every arena so the index is comparable across categories.
- Honesty mechanics. Unknown is
null, never 0; every Overall score carries an A–D confidence grade (how much of it is probe-backed) and a measured ±band (68% interval from re-roll statistics; see METHODOLOGY.md); re-judge churn that cites no new evidence is reverted under audited rules; claims vendors make are reconciled against our verdicts in a claims-integrity index. - Bias disclosure. The judge is an Anthropic model and the
ai-codingarena includes Anthropic's Claude Code; the Product Feedback arena includes Foreloop, built by Ultrametric Inc. Both conflicts are disclosed on-site, adversarially bias-audited with corrections applied in both directions, and documented cell-by-cell in METHODOLOGY.md § Bias disclosure.
Pipeline refresh workflow
The pipeline is local-only (not run on Vercel). Each stage accepts --category <id> to
scope a run, and most accept --product <id> to scope further to one product:
pnpm pipeline crawl --category <id> [--product <id>] # fetch site/docs/github pages pnpm pipeline extract --category <id> [--product <id>] # LLM: pull candidate stories from crawled pages pnpm pipeline normalize --category <id> # LLM: assemble the category's story taxonomy pnpm pipeline collect-community --category <id> [--product <id>] # gather community evidence pnpm pipeline probe --category <id> [--product <id>] # keyless hands-on checks (llms.txt, openapi, etc.) → probe-tier evidence pnpm pipeline judge --category <id> [--product <id>] # LLM: judge every (product, story) cell pnpm pipeline derive --category <id> # compute rankings.json (scores + battles) from verdicts pnpm pipeline logos --category <id> [--product <id>] # fetch product logos into public/logos/ pnpm pipeline popularity --category <id> [--product <id>] # keyless GitHub/npm/PyPI momentum signal (display-only, no LLM, not scored)
To refresh a single product's data after editing its evidence (e.g. after a contributed
correction), you don't need to re-run the whole category; see
CONTRIBUTING.md for the minimal judge --product + derive flow.
After any re-judge/derive that changes rankings, re-run node scripts/generate-badges.mjs
and commit the public/badges/ diff. The embeddable score badges (see /badges on the site)
are committed static SVGs rather than build output, so consumers who
hotlink them pick up the new scores on the next deploy.
Requires ANTHROPIC_API_KEY in a local .env (see .env.example) for the LLM-driven stages
(extract, normalize, collect-community, judge).
ANTHROPIC_API_KEY is local-pipeline-only. It must never be set as an environment variable
on the Vercel project. The deployed site only serves pre-computed static data from data/
and does not call the Anthropic API at build or request time.
Arena Notes (editorial drafts, not auto-published)
pnpm tsx pipeline/scripts/generate-arena-notes.ts drafts a short signed-POV essay (5
paragraphs max: the week's rank flip that matters, an unfilled gap in the arena, the vendor
move to watch, one self-critique of our own data, a closing line) into
drafts/arena-notes/YYYY-MM-DD.md. It is LLM-drafted but citation-gated in code: the model only
sees a fact sheet derived from the committed changelog/report/uncertainty/gap-closers data, and
every paragraph must cite its site source inline ((source: /changelog), (source: /arena/...)) from that fact sheet; violations fail schema validation and are retried.
Publishing is a human decision. Every generated file carries
status: draft — requires founder sign-off before publishing in its frontmatter, and the
/notes page (see lib/notes.ts) renders only
files whose frontmatter a human has edited to exactly status: published. Review the draft,
edit the frontmatter, commit. Unreviewed drafts do not render.
Data layout
data/
categories.json # arena metadata: id, name, description, personas, themes
{category}/
products.json # product metadata (id, name, vendor, type, urls, logo)
stories.json # the category's story taxonomy (incl. the 29 canonical stories, each with an optional `origin`)
evidence/
{product}.json # evidence items for one product: id, tier, url, excerpt, fetchedAt
verdicts.json # one verdict per (productId, storyId) cell
rankings.json # derived: leaderboard + battles (generated by `pipeline derive`)
popularity.json # optional: keyless GitHub/npm/PyPI momentum signal, keyed by productId (generated by `pipeline popularity`)
popularity-history.jsonl # optional: one snapshot line per product per popularity run, for future velocity tracking
popularity.json/popularity-history.jsonl are display-only. See "Popularity — a signal, not
a score" in METHODOLOGY.md. Neither file is read by the scoring pipeline
(pipeline derive) or lib/scoring.ts, and loadCategory tolerates their absence entirely.
rankings.json is derived data. Do not hand-edit it; regenerate it with
pnpm pipeline derive --category <id> after any verdict change.
pnpm run build/pnpm run dev mirror all of data/ verbatim to public/data/ (a gitignored
build artifact, via scripts/copy-data.mjs) so it's served at stable URLs (see "Use it
from an agent" below).
Dataset releases. Point-in-time snapshots of data/ are periodically tagged and published
as GitHub releases (e.g.
data-YYYY-MM-DD), each with a zip of the full data/ tree attached and release notes listing
arena/product/verdict counts at that snapshot; useful if you want a stable dataset to build
against instead of tracking main.
Use it from an agent
Ultrametric is built to be read by agents as much as by humans. Every surface here is live today, no keys, no install:
- /llms.txt: the top-level index per the
llms.txt convention: site purpose, methodology one-liner, and links to
every arena's markdown endpoint, the data API, and
/openapi.json. - Markdown endpoints: every arena has a full-content markdown rendering at
/arena/{category}/llms.md(leaderboard, business models, grouped story matrix with proof URLs), and every product has a deep-dive at/arena/{category}/product/{productId}/llms.md(every verdict, rationale, and proof URL). These are the pages an agent should read first. - Process manifests: every process page declares a machine-readable manifest as its
metadata alternate:
/processes/{slug}/manifest.json(chains at/processes/chains/{chain}/manifest.json), the published corpus reshaped into the executor handoff contract (docs/AFK-HANDOFF.md): per-step routing, tool calls, vendor options with their MCP endpoints, approval gates, and time estimates. Example: /processes/incorporate-c-corp/manifest.json. - Data API: the same JSON the site renders from is mirrored verbatim to stable URLs at
build time (
scripts/copy-data.mjs, aprebuildstep):/data/categories.json,/data/{category}/{products,stories,verdicts,rankings}.json,/data/{category}/evidence/{productId}.json.public/data/is a build artifact (gitignored); it doesn't exist untilpnpm run buildorpnpm run devregenerates it. - Raw committed data: the same records straight from the repo, no site in between:
data/(arenas),processes/corpus.jsonandjourneys/chains.json(processes, situations, chains),rules/andsources/(cited law), each validating againstschemas/. - /openapi.json: an OpenAPI 3.1 document
describing every data endpoint above, with hand-written JSON Schema summaries of each shape
(mirrors
lib/schemas.ts). - /search-index.json: the site's complete search index as one JSON fetch (every arena, product, stack, process, chain, and tool page with its href), the same file the on-site palette loads.
- /feed.xml: RSS over the derived changelog (overtakes, score moves, launches), re-derived from committed history on each build.
- /methodology: a tight, on-site summary of
METHODOLOGY.md (evidence tiers, judging, scoring, Overall score weights,
story provenance, re-judge stability, bias disclosure), linked from the header next to
Rankings and from
/llms.txt. - MCP / CLI: the
ultrametricpackage on npm ships the CLI and MCP server — /get-started is the install page, andlib/ultrametricCli.tsmaps the corpus steps it can drive. The simulator's MCP calls remain labeled demos. - The docs site: docs.ultrametric.ai documents the CLI,
MCP server, and HTTP API, and is itself agent-readable:
docs.ultrametric.ai/llms.txt indexes every page,
and each page is served as markdown at its own path with
.mdappended (e.g. quickstart.md). - schema.org: arena pages embed an
ItemListofSoftwareApplicationentries and product pages embed aSoftwareApplication, both withadditionalPropertyentries for our own metrics (aiEra,score, etc). NoaggregateRating: we don't have star ratings and won't fabricate one. - sitemap.xml / robots.txt:
app/sitemap.tslists every route including thellms.mdendpoints;public/robots.txtexplicitly allowsGPTBot,ClaudeBot,Claude-Web,PerplexityBot,Googlebot, andBingbot, with aSitemap:pointer.
Status & roadmap
Ultrametric is live at ultrametric.ai and under active expansion. In flight:
- Finer-grained arenas: splitting broad categories (e.g. project management, edge platforms) into narrower slices as products diverge enough to need it.
- New arenas incoming: the full build queue lives in
data/arena-roadmap.json(170+ planned arenas in priority tiers; seedocs/COVERAGE-STRATEGY.md); founder-ops next steps are specced indocs/FOUNDER-OPS-ROADMAP.mdand classic head-to-heads indocs/CLASSIC-BATTLES.md. - Recorded proofs: CLI/MCP probe sessions are now captured as sanitized, replayable
transcripts (and pilot browser video) published on product pages; the
docs/PROVE-IT.mdprotocol lets vendors submit reproducible proof specs our runner executes and publishes, pass or fail. - The Agentic Depth Program: a deeper, runtime-conformance-tested successor to the
current agenticness/API-quality cells (MCP handshake checks, API probe suites, CLI
conformance, agent task trials, and a monthly agentic-velocity leaderboard). See
docs/AGENTIC-DEPTH-PROGRAM.mdfor the full plan. - The contest flow: every verdict is contestable today (see
Contributing below);
.github/workflows/contest-check.ymlcan automate the add-evidence → re-judge → PR loop once a maintainer wires up theANTHROPIC_API_KEYsecret. - Continuous runners:
.github/workflows/story-runner.ymlre-runs one arena's full pipeline every 6 hours on rotation and opens a reviewable PR (idle until theANTHROPIC_API_KEYsecret is set); an arena-builder runner that works through the roadmap automatically is designed indocs/COVERAGE-STRATEGY.md.
Counts on this page (arenas/products/verdicts) are generated by pnpm stats (see
scripts/update-readme-stats.mjs) and will keep moving as arenas and products are added.
They reflect the data at the last pipeline run.
Contributing — how the community can help
Every score on the site is only as good as its evidence, so contributing evidence is the most valuable help. (And if the repo is useful to you, a star is how other founders find it.)
The quick index:
| You want to | Where |
|---|---|
| Contest a verdict | the "⚑ contest" link next to any verdict on the site → prefilled issue; flow in CONTRIBUTING.md |
| Add evidence or prove a story hands-on | CONTRIBUTING.md · docs/PROVE-IT.md |
| Add your product to an arena | /submit or CONTRIBUTING.md § Add your product |
| Add your country or state | Add your country or state below; four PR shapes, smallest first |
| Add an open module | open-modules/README.md: the bar is pure functions, a citation on every formula, tests that double as documentation |
| Submit a stack | the Submit a stack issue form (linked from /stacks). Stacks stay curated committed data; submissions feed review and are not auto-published |
| Understand the review bar | governance/REVIEW_POLICY.md |
Working on the repo itself: setup, the test gate, and style rules live in CONTRIBUTING.md § Local setup.
Ways to contribute:
- Contest a verdict: every verdict has a "⚑ contest" link that opens a prefilled issue. Bring a citation that contradicts (or supports) the ruling.
- Prove a story: submit a reproducible proof spec (setup + commands + expected
result) via the Prove a story issue form; our runner executes and records it, and the
recording is published as probe-tier evidence, pass or fail. See
docs/PROVE-IT.md. - Respond as a vendor: put an official, verified statement on the record next to a
verdict about your product (CVE-style) via the Vendor response issue form. Published
verbatim. The statement does not change a verdict by itself, but feeds the next re-judge. See
docs/VENDOR-RESPONSES.md. - Add evidence by PR: new doc pages, changelogs, or community sources for any product; the pipeline re-judges only the cells whose evidence changed.
- Submit a product or arena: the Submit a product issue form (prefilled from the
/submit quick scan), or open a PR adding your
data/<arena>/products.jsonentry. The exact entry shape, which URLs to include and why, and how to make your product probe well are all in CONTRIBUTING.md § Add your product. - Add your country or state: the most valuable contribution for founders outside the US; see the subsection below.
- Add an open module: pure, source-cited TypeScript under
lib/openstartup/; the bar and candidate modules are inopen-modules/README.md. - Make a prediction:
/predictionsauto-generates yes/no questions from live close races ("will the #2 overtake the #1 within 30 days?") and settles them mechanically from the committed rank-flip history. The "Predict" link opens a prefilled issue (.github/ISSUE_TEMPLATE/prediction.yml); v1 records predictions as submitted issues, and an accuracy leaderboard comes once enough questions have settled. - Report an inaccuracy: wrong metadata, broken link, stale evidence, missing logo.
- Adopt an arena: become the standing reviewer for one arena's story taxonomy, evidence freshness, and contest triage.
- Run probes locally:
pnpm pipeline probe --category <id>needs no API key; publishing discrepancies you find is exactly the point. - Cite the data: verdicts, scores, and evidence excerpts may be quoted with attribution (see DATA-LICENSE); bulk reuse needs written permission from Ultrametric.
- Spread the Weekly Arena Report:
pnpm tsx pipeline/scripts/generate-weekly-report.tsrenders the last 7 days (biggest movers, rank flips, new arenas, close races) into committed markdown atreports/YYYY-MM-DD.md, listed on the site at/reports. The markdown is copy-paste ready for a newsletter or community digest, with links, attribution, and empty states handled.
Found a verdict you think is wrong, or evidence we missed? See
CONTRIBUTING.md. Contesting a verdict and adding evidence are both
first-class, expected contribution paths: a maintainer (or, in the future, a GitHub Action)
does the deeper check, adding evidence and then running
pnpm pipeline judge --category <category> --product <product> followed
by pnpm pipeline derive --category <category>, before any verdict changes.
Add your country or state
The goal is the complete global repo for startup founders: processes, rules, and vendor
reality for every jurisdiction, contributed by founders who operate there and verified against
primary sources. The US slice (federal + Delaware, CA/multi-state overlays) is the starting
template; UK, India, Germany, and France already have first process analogs and vendor
rows. Four PR shapes, smallest first. Each is schema-validated, so pnpm test tells you
immediately whether your records hold up:
- Vendor availability in your country — add rows to
jurisdictions/vendor-geo.json:{productId, country, status: available|unavailable|partial, sourceUrl, note}. The source must be the vendor's own page (or an official register) stating the fact; honest negatives ("US entities only") are as valuable as positives. These rows drive the geo switcher and "Geos supported" on the site. - A country analog for a process — add a
geoNotesentry to the process inprocesses/corpus.json:{country, summary, actionUrl, actionLabel}with a live, official actionUrl (Companies House, MCA/NSWS, Handelsregister, INPI…). This is what renders in the top-of-page geo banner and the "Outside the US" block. - Rule cards for your jurisdiction — register the jurisdiction in
jurisdictions/registry.jsonwith a narrow, accurate scope, then addrules/<CODE>/*.jsonrule cards citing primary sources insources/registry.json(statute, regulation, agency guidance; a provider blog cannot establish law). One proposition per stable ID. - A full jurisdiction-scoped workflow — copy
templates/process.json, narrow the applicability dimensions, reference your rule cards, gate every external effect on a human approval, add a fictional fixture, and record the maturity level incoverage/coverage.json(draftordemonstrationto start;reviewedrequires a named domain expert, see the review policy).
Do not copy US rules into another jurisdiction, do not mark a country covered because one
workflow exists, and do not commit real company data (fixtures are fictional by gate). The
validator (lib/founderOps.ts, run by npx vitest run __tests__/founder-ops.test.ts) enforces
source resolution, jurisdiction matching, approval gates, and accurate coverage reporting on
every PR.
Citing Ultrametric
Quoting a ranking, verdict, or evidence excerpt (with attribution, per DATA-LICENSE) in a paper, post, or dataset card:
Ultrametric — agent tested software rankings for the agent economy. Ultrametric Inc, 2026. https://ultrametric.ai
@misc{ultrametric, title = {Ultrametric: agent tested software rankings for the agent economy}, author = {{Ultrametric Inc}}, year = {2026}, howpublished = {\url{https://ultrametric.ai}}, note = {Methodology: \url{https://ultrametric.ai/methodology}} }
Rankings move as evidence lands, so cite the dataset release tag (e.g. data-YYYY-MM-DD) when
you need a pinned snapshot.
License
Code: © 2026 Ultrametric Inc, all rights reserved (source-available, see LICENSE).
Data (data/): © 2026 Ultrametric Inc, all rights reserved (see DATA-LICENSE): viewable
and quotable with attribution; bulk reuse requires written permission.
Rankings are research outputs provided "as is", with no responsibility for decisions made in
reliance on them (see /terms); published
rankings.json files carry a _provenance watermark, verifiable with
pnpm tsx pipeline/scripts/verify-provenance.ts <file>.
来源:GitHub · github.com

