The Four Job Phases
Every job runs through four phases. Each fills more cells in the output grid, reducing the problem space for the next. Results are visible as each phase completes. The grid is the single source of truth during execution and is flushed to the database after each phase, enabling progressive rendering in the UI. A confidence gate protects high-quality values from being overwritten by later phases: once a cell is filled with high confidence, it is permanently locked.
Each phase builds on the previous one, progressively filling the output grid. Phase 1 resolves ~30% of cells instantly using graph matches and lookups. Phase 2 deploys the Planner to fill remaining gaps. Phase 3 runs cross-field validation checks, and Phase 4 performs targeted re-reads for empty or low-confidence cells. You can monitor fill rate in real time as each phase completes.
The Job engine is designed around a key principle: use the cheapest, fastest method first and escalate to AI only when necessary. Phase 1 fills cells using deterministic lookups at zero AI cost. Phase 2 uses AI only for cells that Phase 1 could not resolve. Phase 3 re-runs lookups on Phase 2 output to normalize AI-generated values to canonical codes. Phase 4 performs targeted re-reads with full grid context for the remaining gaps. This cascading approach minimizes both cost and latency.
The grid is flushed to the database after each phase, enabling progressive rendering in the UI. You can watch cells fill in real time and begin reviewing results before the job finishes. The phase timeline on the job detail page shows which phase is currently active, how long each phase took, and the cumulative fill rate at each stage.
Job Detail — Phase Timeline
The phase timeline shows progress through the Job phases. Each dot represents a stage, highlighted when active.
# Poll the job endpoint to track phase progress:
curl -s https://api.talonic.com/v1/jobs/c3d4e5f6-a7b8-9012-cdef-123456789012 \
-H "Authorization: Bearer $TALONIC_API_KEY"
# During execution:
# {
# "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
# "status": "processing",
# "progress": 42,
# "current_phase": "phase_2_execute",
# "grid_stats": {
# "total_cells": 36,
# "filled": 15,
# "empty": 21,
# "fill_rate": 0.42
# }
# }
# current_phase values: phase_1_resolve, phase_2_strategy,
# phase_2_execute, phase_2_outliers, phase_3_validation,
# phase_4_reread, completed, errorThe phase timeline on the job detail page shows how long each phase took, which lets you identify bottlenecks in your Jobs. Phase 1 typically completes in seconds regardless of document count because it uses pre-computed indexes. Phase 2 is the most time-consuming because it involves AI calls — the duration scales linearly with the number of empty cells and document length. Phase 3 adds minimal overhead with deterministic lookups. Phase 4 duration depends on how many cells remain empty after Phase 2. If Phase 2 consistently takes longer than expected, consider improving your Field Registry coverage to shift more work to Phase 1, or use batch inference for non-urgent jobs at 50% cost.
A note on vocabulary. In Talonic a Pipeline is one run of a Spec on the production engine, and the Agent is the in-product copilot you open with Cmd+I. Neither word describes the machinery on this page. The four phases below are the internal stages of a Job, the quick path where you pick a schema and documents and run. The AI step inside a Job is the Planner, which was called "the agent" in older copy; it is a fixed part of every Job and has nothing to do with the copilot.
The production engine that runs a Spec works on a different shape. Its stages are composed in the Spec rail rather than fixed: Field Registry transfer, Extraction, optional Matching, Resolution with your Data Policies, Validation checkpoints, and Assembly into data products. Fields that fail a blocking gate there go to human review, and the reviewed results surface on Products. When the same document kind keeps coming back, that richer engine is usually the better home for the work, and a Job remains the fastest way to answer a one-off question.