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
| Parameter | Type | Description |
|---|---|---|
| Direct transfer | graph match | Field registry match found in extracted data. Confidence: extraction x match score. |
| Fuzzy name match | string | Handles naming variations — signature.date matches signature_date. |
| Concept-synonym | expansion | Maps generic field concepts to common variations (supplier → vendor.company_name). |
| Reference lookup | 3-step cascade | For fields with reference tables: normalize → fuzzy → AI. See Reference Tables. |
| Description scan | keyword | Matches 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.
{
"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 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?+
What percentage of cells does Phase 1 fill?+
Does Phase 1 performance improve over time?+
How can I improve my Phase 1 fill rate?+
Where can I see how mature my Field Registry is before running a Job?+
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.