Skip to content

How Reducto’s scores are calculated

The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.

verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10

PA Score39/100

Agent-ready 69.0 × 0.30 = 20.70

API quality 34.3 × 0.20 = 6.86

Openness 26.4 × 0.20 = 5.28

Built-in AI 22.0 × 0.15 = 3.30

Automation 20.6 × 0.15 = 3.09

(20.70 + 6.86 + 5.28 + 3.30 + 3.09) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 39.23 ÷ 1.00 = 39.2

Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.

Agent-ready69.0/100×0.30 of the PA blend

Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.

Point an agent at llms.txt or agent-oriented docsweight 2

2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://docs.reducto.ai/llms.txtPROBE llms.txt: HTTP 200 at https://docs.reducto.ai/llms.txt # Reducto - [Overview](https://docs.reducto.ai/overview.md): The agentic document platform for leading AI teams - [API
  • [claimed-docs] https://docs.reducto.ai/parse/overview.mdParse is Reducto's foundational endpoint. It converts documents into structured JSON with text, tables, figures, layout, and formatting
  • [claimed-docs] https://docs.reducto.ai/mcp-server.mdagents in Claude Desktop, Claude Code, Codex, Cursor, VS Code, Windsurf, or any other Model Context Protocol client can classify, parse, extract, split, and edit documents as part of their reasoning loop, without custom integration code.
  • [probe] https://docs.reducto.ai/mcp-serverofficial MCP server documented at https://docs.reducto.ai/mcp-server

Run the product headlessly / in CI for automationweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.reducto.ai/cliThe Reducto CLI gives you direct terminal access to Reducto’s document capabilities: parse, extract, split, classify, and edit.
  • [claimed-docs] https://docs.reducto.ai/cli.mdThe Reducto CLI gives you direct terminal access to Reducto's document capabilities: parse, extract, split, classify, and edit.
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` Calls async endpoint, returns job ID
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` | Calls async endpoint, returns job ID
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overviewclient.parse.run_job() ... POST /parse_async ... Job ID (returns immediately)
  • [claimed-docs] https://docs.reducto.ai/quickstartresult = client.parse.run(input="https://cdn.reducto.ai/samples/fidelity-example.pdf")
  • [probe] https://docs.reducto.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.reducto.ai/openapi.json — contains "openapi" key
  • [probe] https://docs.reducto.ai/cliofficial CLI documented at https://docs.reducto.ai/cli
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging. Use Svix for production applications.

Plug MCP servers into this product so it can use their toolsweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Connect an agent via an official MCP serverweight 3

3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max

  • [claimed-docs] https://docs.reducto.ai/mcp-serverOnce installed, agents in Claude Desktop, Claude Code, Codex, Cursor, VS Code, Windsurf, or any other Model Context Protocol client can classify, parse, extract, split, and edit documents
  • [claimed-docs] https://docs.reducto.ai/mcp-serveragents in Claude Desktop, Claude Code, Codex, Cursor, VS Code, Windsurf, or any other Model Context Protocol client can classify, parse, extract, split, and edit documents as part of their reasoning loop
  • [claimed-docs] https://docs.reducto.ai/mcp-server.mdagents in Claude Desktop, Claude Code, Codex, Cursor, VS Code, Windsurf, or any other Model Context Protocol client can classify, parse, extract, split, and edit documents as part of their reasoning loop, without custom integration code.
  • [probe] https://docs.reducto.ai/mcp-serverofficial MCP server documented at https://docs.reducto.ai/mcp-server

Use an official CLIweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.reducto.ai/cliThe Reducto CLI gives you direct terminal access to Reducto’s document capabilities: parse, extract, split, classify, and edit.
  • [claimed-docs] https://docs.reducto.ai/cli.mdThe Reducto CLI gives you direct terminal access to Reducto's document capabilities: parse, extract, split, classify, and edit.
  • [probe] https://docs.reducto.ai/cliofficial CLI documented at https://docs.reducto.ai/cli

Drive the product through a documented public APIweight 3

3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max

  • [probe] https://docs.reducto.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.reducto.ai/openapi.json — contains "openapi" key
  • [claimed-docs] https://docs.reducto.ai/quickstartresult = client.parse.run(input="https://cdn.reducto.ai/samples/fidelity-example.pdf")
  • [claimed-docs] https://docs.reducto.ai/configs/parse/chunking-methodsresult = client.parse.run( input=upload.file_id, retrieval={ "chunking": { "chunk_mode": "variable", "chunk_size": 1000 } } )
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` Calls async endpoint, returns job ID
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging.
  • [claimed-docs] https://docs.reducto.ai/cliThe Reducto CLI gives you direct terminal access to Reducto’s document capabilities: parse, extract, split, classify, and edit.
  • [probe] https://docs.reducto.ai/mcp-serverofficial MCP server documented at https://docs.reducto.ai/mcp-server
  • [claimed-docs] https://docs.reducto.aiMulti-step workflows that chain classification, parsing, extraction, and editing into single API calls

Issue scoped/least-privilege API credentials for an agentweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Build against official SDKsweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://docs.reducto.ai/quickstartresult = client.parse.run(input="https://cdn.reducto.ai/samples/fidelity-example.pdf")
  • [claimed-docs] https://docs.reducto.ai/configs/parse/chunking-methodsresult = client.parse.run( input=upload.file_id, retrieval={ "chunking": { "chunk_mode": "variable", "chunk_size": 1000 } } )
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` Calls async endpoint, returns job ID
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` | Calls async endpoint, returns job ID
  • [probe] https://docs.reducto.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.reducto.ai/openapi.json — contains "openapi" key
  • [probe] https://docs.reducto.ai/cliofficial CLI documented at https://docs.reducto.ai/cli

Subscribe to events via webhooksweight 2

2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max

  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging.
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksIn Reducto Studio, go to Webhooks in the sidebar. This opens your Svix dashboard directly.
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging. Use Svix for production applications.

Agent-ready = 124.2 ÷ 180 × 100 = 69.0

API quality34.3/100×0.20 of the PA blend

The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.

Explore an interactive API reference with runnable examplesweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://docs.reducto.ai/quickstartresult = client.parse.run(input="https://cdn.reducto.ai/samples/fidelity-example.pdf")
  • [claimed-docs] https://docs.reducto.ai/configs/parse/chunking-methodsresult = client.parse.run( input=upload.file_id, retrieval={ "chunking": { "chunk_mode": "variable", "chunk_size": 1000 } } )
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` | Calls async endpoint, returns job ID
  • [probe] https://docs.reducto.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.reducto.ai/openapi.json — contains "openapi" key
  • [probe] https://docs.reducto.ai/llms.txtPROBE llms.txt: HTTP 200 at https://docs.reducto.ai/llms.txt # Reducto - [Overview](https://docs.reducto.ai/overview.md): The agentic document platform for leading AI teams - [API

Download a machine-readable API spec (OpenAPI or equivalent)weight 2

2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max

  • [probe] https://docs.reducto.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.reducto.ai/openapi.json — contains "openapi" key

Test against a sandbox environment without touching production dataweight 1

1 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 10 max

  • [claimed-docs] https://docs.reducto.ai/studio-quickstart.mdBuild document workflows by configuring classification, parsing, extraction, and editing steps, test on real documents with the citation viewer, then deploy as a Pipeline ID callable from code.
  • [claimed-docs] https://docs.reducto.ai/quickstartresult = client.parse.run(input="https://cdn.reducto.ai/samples/fidelity-example.pdf")

Rely on versioned APIs with a documented deprecation policyweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

  • [probe] https://docs.reducto.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.reducto.ai/openapi.json — contains "openapi" key

API quality = 24.0 ÷ 70 × 100 = 34.3

Openness26.4/100×0.20 of the PA blend

Can you leave, inspect, or self-host — data export, open source, portability.

Do everything through the API that I can do in the UIweight 2

2 (weight) × 7 (quality) × 0.6 (partial) = 8.4 of 20 max

  • [claimed-docs] https://docs.reducto.ai/studio-quickstart.mdBuild document workflows by configuring classification, parsing, extraction, and editing steps, test on real documents with the citation viewer, then deploy as a Pipeline ID callable from code.
  • [claimed-docs] https://docs.reducto.ai/cliThe Reducto CLI gives you direct terminal access to Reducto’s document capabilities: parse, extract, split, classify, and edit.
  • [claimed-docs] https://docs.reducto.ai/mcp-serverOnce installed, agents in Claude Desktop, Claude Code, Codex, Cursor, VS Code, Windsurf, or any other Model Context Protocol client can classify, parse, extract, split, and edit documents
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksIn Reducto Studio, go to Webhooks in the sidebar. This opens your Svix dashboard directly.
  • [probe] https://docs.reducto.ai/openapi.jsonPROBE openapi: HTTP 200 at https://docs.reducto.ai/openapi.json — contains "openapi" key
  • [probe] https://docs.reducto.ai/cliofficial CLI documented at https://docs.reducto.ai/cli

Export all of my data in open formats and leaveweight 3

3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max

  • [claimed-docs] https://docs.reducto.ai/parse/overviewParse is Reducto’s foundational endpoint. It converts documents into structured JSON with text, tables, figures, layout, and formatting
  • [claimed-docs] https://docs.reducto.ai/extract/overviewExtract pulls specific fields from documents as structured JSON. You define a schema describing the data you need, and Reducto returns values matching that schema
  • [claimed-docs] https://docs.reducto.ai/splitSplit identifies which pages contain which sections of a document. You describe sections in natural language, and Reducto returns the page numbers where each section lives.
  • [claimed-docs] https://docs.reducto.ai/onprem/enterprise_deployment_optionsAll data and storage reside in the customer’s VPC, while ephemeral processing is handled by Reducto’s dedicated GPU infrastructure.
  • [claimed-docs] https://docs.reducto.ai/security/policiesWe have a Zero Data Retention policy (ZDR) for users on our “Growth” tier and above, meaning all data submitted via API is set to expire within 24 hours

Read the product's source under an open licenseweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Self-host the core productweight 3

3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max

  • [claimed-docs] https://docs.reducto.ai/onprem/enterprise_deployment_optionsAll data and storage reside in the customer’s VPC, while ephemeral processing is handled by Reducto’s dedicated GPU infrastructure.
  • [claimed-docs] https://docs.reducto.ai/onprem/enterprise_deployment_optionsCustomers can choose between a dedicated VPC deployment, a hybrid VPC model, and a fully hosted SaaS model, balancing control, cost, and compute performance.

Openness = 26.4 ÷ 100 × 100 = 26.4

Built-in AI22.0/100×0.15 of the PA blend

Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.

Get AI-generated insights and suggestions from my data inside the productweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Set up automations that run autonomously in the backgroundweight 2

2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max

  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` Calls async endpoint, returns job ID
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` | Calls async endpoint, returns job ID
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overviewclient.parse.run_job() ... POST /parse_async ... Job ID (returns immediately)
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging.
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksIn Reducto Studio, go to Webhooks in the sidebar. This opens your Svix dashboard directly.
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging. Use Svix for production applications.
  • [claimed-docs] https://docs.reducto.aiMulti-step workflows that chain classification, parsing, extraction, and editing into single API calls
  • [claimed-docs] https://docs.reducto.ai/studio-quickstart.mdBuild document workflows by configuring classification, parsing, extraction, and editing steps, test on real documents with the citation viewer, then deploy as a Pipeline ID callable from code.

Delegate tasks to a built-in AI assistant inside the productweight 3

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Operate the product with natural-language commandsweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://docs.reducto.ai/extract/overviewExtract pulls specific fields from documents as structured JSON. You define a schema describing the data you need, and Reducto returns values matching that schema
  • [claimed-docs] https://docs.reducto.ai/splitSplit identifies which pages contain which sections of a document. You describe sections in natural language, and Reducto returns the page numbers where each section lives.
  • [claimed-docs] https://docs.reducto.aiRoute documents by type before processing. Define categories in natural language.
  • [claimed-docs] https://docs.reducto.aiFill PDF forms and modify DOCX files programmatically with natural language instructions.
  • [claimed-docs] https://docs.reducto.ai/mcp-serverOnce installed, agents in Claude Desktop, Claude Code, Codex, Cursor, VS Code, Windsurf, or any other Model Context Protocol client can classify, parse, extract, split, and edit documents
  • [claimed-docs] https://docs.reducto.ai/mcp-serveragents in Claude Desktop, Claude Code, Codex, Cursor, VS Code, Windsurf, or any other Model Context Protocol client can classify, parse, extract, split, and edit documents as part of their reasoning loop
  • [claimed-docs] https://docs.reducto.ai/classify/overview.mdClassify determines what kind of document you are looking at before any downstream processing begins. You specify categories with natural language criteria, and Reducto returns the best match.
  • [probe] https://docs.reducto.ai/mcp-serverofficial MCP server documented at https://docs.reducto.ai/mcp-server

Built-in AI = 13.2 ÷ 60 × 100 = 22.0

Automation20.6/100×0.15 of the PA blend

Depth of automation primitives — rules, scheduling, bulk operations, webhooks.

Perform bulk operations across many items at onceweight 2

2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max

  • [claimed-docs] https://docs.reducto.ai/reference/credit-usageParse and Extract jobs submitted through the batch queue receive a 20% usage discount.
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` Calls async endpoint, returns job ID
  • [claimed-docs] https://docs.reducto.ai/workflows/async-overview`run_job()` | Calls async endpoint, returns job ID
  • [claimed-docs] https://docs.reducto.ai/cliThe Reducto CLI gives you direct terminal access to Reducto’s document capabilities: parse, extract, split, classify, and edit.
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging.
  • [community] https://news.ycombinator.com/item?id=47662833We used Reducto and it did struggle with long documents. As we process financial documents going over 300+ pages using Gemini 3 Flash is producing high accuracy extracts super fast.

Define rules that trigger actions automatically on eventsweight 3

3 (weight) × 4 (quality) × 0.6 (partial) = 7.2 of 30 max

  • [claimed-docs] https://docs.reducto.aiRoute documents by type before processing. Define categories in natural language.
  • [claimed-docs] https://docs.reducto.aiMulti-step workflows that chain classification, parsing, extraction, and editing into single API calls
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging.
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksSvix webhooks provide cryptographic request signing, automatic retries with exponential backoff, and a delivery dashboard for debugging. Use Svix for production applications.
  • [claimed-docs] https://docs.reducto.ai/studio-quickstart.mdBuild document workflows by configuring classification, parsing, extraction, and editing steps, test on real documents with the citation viewer, then deploy as a Pipeline ID callable from code.
  • [claimed-docs] https://docs.reducto.ai/workflows/svix-webhooksIn Reducto Studio, go to Webhooks in the sidebar. This opens your Svix dashboard directly.

Schedule recurring jobs or workflowsweight 2

2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Version, review, and roll back my automationsweight 1

n/a — not applicable to this product: excluded from numerator and denominator

no evidence cited — the verdict rests on absence of evidence, re-checked on refresh

Automation = 14.4 ÷ 70 × 100 = 20.6