Skip to main content
Flow B runs an extractor on your machine before the human review. The SDK calls the provider with your credentials, gets a structured extraction back, and ships both the document and the extraction to the reviewer. This page covers the providers we ship out of the box, the extras you install for each, and the minimum config to use them.

The contract

Every provider type plugs into the same extraction= parameter:
The SDK validates the provider output against your response_schema locally before sending. If the provider returns malformed JSON or fields that don’t match, you get an ExtractionFailedError and nothing is sent to the reviewer (no charge).

LLM providers (vision capable)

These read the document image directly and return structured output matching your schema.

OpenAI

Reads OPENAI_API_KEY from your environment if api_key= isn’t passed. Uses OpenAI’s structured-output mode (response_format=json_schema) to guarantee the output matches your Pydantic schema.

Anthropic (Claude)

Uses Claude’s tool-use API with your response_schema as the tool schema; the tool call response gets validated against Pydantic.

Azure OpenAI

Same code path as OpenAI but pointed at your Azure deployment. Useful for customers on Azure-only data-residency requirements.

Document extraction providers (SaaS)

These do OCR + layout analysis and return structured JSON. Pair them with a StructuringConfig to map the raw extraction to your Pydantic schema.

Reducto

Reducto’s /extract endpoint returns structured data; the StructuringConfig is the LLM that maps it to your specific Pydantic shape. Best for documents with complex layouts (multi-column, mixed text + tables).

Azure Document Intelligence

Best for documents that match one of Azure’s prebuilt extraction models (invoices, receipts, IDs).

Local providers (no API calls)

Run entirely on your machine. No credentials, no per-request cost. Slower, depending on your hardware.

Docling

Open-source OCR + layout analysis from IBM. Runs locally. The structuring step still uses an LLM unless you swap in a deterministic mapper.

PaddleOCR

Open-source OCR. Best for plain-text documents where you only need text extraction (then structure with an LLM).

Comparison

Credentials never leave your machine

The SDK calls every provider from your Python process. Your OPENAI_API_KEY, REDUCTO_API_KEY, etc. are read from your environment (or passed to the constructor) and used to make the provider request directly. AwaitVerify’s managed backend never sees provider credentials. We only receive:
  • The encrypted document fragments
  • The extracted result (after your provider returned it)
  • The task metadata you attach

What if my provider isn’t on the list?

Two options:
  1. Use Flow A. Run your provider on your machine, then pass the result as prior_extraction=YourModel(...). We don’t need to support your provider directly; we just need the Pydantic instance.
  2. Open an issue. New providers land based on real demand. PR welcome too. The provider interface is in awaithumans.providers.base.

Where to go next

The three flows

Flow A (you bring the extraction) vs Flow B (SDK runs the provider).

Response schemas

The Pydantic shape determines the provider’s output schema too.