Skip to main content

Phase 1: Resolve

The fastest phase (~30% of cells in seconds). For each document x each schema field, the system checks if the cell can be filled from existing extracted data. No AI calls (except rare Haiku fallback for ambiguous lookups). Phase 1 is the workhorse of cost efficiency — it fills a large portion of the grid using pre-computed graph matches and deterministic lookups at near-zero cost. As your Field Registry grows from processing more documents, Phase 1 fill rates steadily improve.

Resolution methods

ParameterTypeDescription
Direct transfergraph matchField registry match found in extracted data. Confidence: extraction x match score.
Fuzzy name matchstringHandles naming variations — signature.date matches signature_date.
Concept-synonymexpansionMaps generic field concepts to common variations (supplier → vendor.company_name).
Reference lookup3-step cascadeFor fields with reference tables: normalize → fuzzy → AI. See Reference Tables.
Description scankeywordMatches by meaning using field descriptions. No AI calls.

Values are normalized during transfer: dates → YYYY/MM/DD, numbers → 2 decimal places, strings → trim + collapse spaces.

Phase 1 is the workhorse of cost efficiency. Because it relies entirely on pre-computed graph matches and deterministic lookups, it fills a large portion of the grid at near-zero cost. The confidence scores assigned during this phase are typically high (0.7-0.95) because they are derived from verified registry matches rather than AI inference. These high-confidence cells are then protected by the confidence gate, meaning later phases cannot overwrite them.

The resolution strategies execute in a fixed order: registry transfer first, then raw extraction mapping, then the 3-step lookup cascade, and finally deterministic compute (formulas like Total = Unit Price x Quantity). Each strategy only attempts to fill cells that are still empty after the previous strategy ran. This ordering ensures that the highest-confidence method always gets priority.

For example, consider an invoice with a "Vendor Name" field. The system first checks the Field Registry for a direct transfer — if "Vendor Name" was extracted from a previous document and promoted to Core, it resolves instantly at 0.85+ confidence. If no registry match exists, the raw extraction mapping looks for a semantically equivalent field in the document's extracted data (e.g., "supplier_name"). If that also misses, the 3-step lookup cascade checks the reference table: exact normalization first (0.95), then fuzzy token overlap (~0.70), then AI fallback (0.50). Only if all four strategies fail does the cell pass to Phase 2 for AI extraction.

To predict Phase 1 coverage before you run a job, open Registry in the sidebar and read the Core / Proven / Candidate counts in the Field Registry summary strip. Core fields (maturity is carried as maturity: core|proven|candidate on the /v1/fields API, alongside the legacy numeric tier: 1 = Core, 2 = Proven, 3 = Candidate) are verified, high-occurrence fields that resolve at 0.85+ confidence via direct transfer, so higher Core and Proven counts mean a higher Phase 1 fill rate for schemas that map onto those fields.

Strategy yield breakdown (job detail page)
{
  "registry_transfer": 0.44,
  "raw_extraction_mapping": 0.08,
  "lookup_cascade": 0.11,
  "deterministic_compute": 0.06,
  "llm_extract": 0.25,
  "phase3_lookup": 0.03,
  "empty": 0.03
}

Understanding Phase 1 resolution strategies helps you optimize your Jobs. Registry transfer is the highest-quality strategy — it maps extracted field occurrences from the Field Registry directly to schema fields. Raw extraction mapping handles cases where the extracted field name does not exactly match the registry but can be inferred from the document raw extraction data. The lookup cascade (normalization, fuzzy, AI fallback) resolves reference table fields. Deterministic compute handles formula-based fields like totals and differences. By monitoring the strategy yield across jobs, you can identify which strategies are carrying the most weight and where to invest in improving coverage.

Phase 1 fill rates improve over time as your Field Registry grows. The more documents you process, the richer the registry becomes, and the more cells Phase 1 can resolve without AI — reducing both cost and latency for every subsequent job.

Phase 1 is also where bypass strategies run: constant, generator, and reference values are written here before any AI call, so they are available as context to every later phase at zero model cost.

Frequently asked questions

How does Phase 1 resolve cells without AI?+
Phase 1 uses five resolution methods: direct transfer from registry, fuzzy name matching, concept-synonym expansion, reference table lookup (3-step cascade), and description-based keyword scanning.
What percentage of cells does Phase 1 fill?+
Phase 1 typically fills approximately 30% of cells in seconds, using graph matches and lookups without any AI calls.
Does Phase 1 performance improve over time?+
Yes. As your Field Registry grows from processing more documents, Phase 1 can resolve a higher percentage of cells through graph matches. Mature registries often see Phase 1 fill rates of 60-80%.
How can I improve my Phase 1 fill rate?+
Three approaches: process more documents to grow the Field Registry (more Core and Proven fields mean more direct transfers), add comprehensive reference tables with common value variations (improves lookup cascade hits), and use descriptive field names in your schemas that match the canonical registry names (improves exact match rates). Check the strategy_yield in job results to identify which resolution methods are underperforming.
Where can I see how mature my Field Registry is before running a Job?+
Open Registry in the sidebar. The Field Registry opens with a summary strip that counts Core, Proven, and Candidate fields, and each row shows its Status, occurrences, documents, and which Specs use it. Over the API, list fields with GET /v1/fields?maturity=core (the legacy tier parameter is still accepted). The more of your schema fields map onto Core and Proven fields, the more Phase 1 can fill without AI.