Extract data from financial forecasts
A financial forecast is a claim about money that has not moved yet. Where an income statement or a cash flow statement reports what already happened, a forecast projects what a business expects to earn or spend across future periods, and it is only as good as the assumptions printed beside the numbers. That is the difference that matters when reading one: a forecast carries a confidence level, a comparison baseline, and a set of documented assumptions, because a projection without its drivers is just a column of guesses. The structure is a grid of periods against line items, and it has to foot. A revenue forecast prepared by Elena Vasquez for the Sales department, covering forecast_period_start 2026-01-01 through forecast_period_end 2026-12-31 in four quarterly periods, might project new business bookings of 500,000 USD, 550,000 USD, 600,000 USD, and 650,000 USD across Q1 to Q4 for a line total of 2,300,000 USD, plus renewals of 400,000 USD per quarter for 1,600,000 USD, giving a total_amount of 3,900,000 USD. Against a comparison_baseline of FY2025 actuals, the new-business line shows a variance of 300,000 USD, or 15 percent, and the forecast carries a variance_tolerance of 5 percent and a contingency_amount for the periods that miss. The revision_number and a prior_forecast_reference track which version supersedes which. Cast against the forecast schema, the projection returns the period window, the forecast type, the periodicity, the confidence level, the baseline, and the total as fields, while the line items, the key assumptions, and the period headers stay as tables. Loaded into a planning model, a four-quarter forecast totalling 3,900,000 USD lets an FP&A analyst read the projected total, the per-period detail, and the assumptions from structured fields rather than re-typing a board deck. Projections are captured as written, with no promise that targets will be met.
What gets extracted from financial forecasts
How extraction works for financial forecasts
A forecast arrives as a spreadsheet export, a board slide, or a scanned budget pack, and its meaning lives in the assumptions as much as the numbers, which templates routinely strip out. Fitted to the forecast model in the Field Registry, the document has its header (forecast_type, periodicity, number_of_periods, confidence_level, comparison_baseline) separated from the line_items grid and the key_assumptions and period_headers tables. Each line item’s period_1 through period_4 amounts are typed as numbers and checked so the period_total equals their sum, and the header total_amount is verified to equal the sum of the line totals, so a 3,900,000 USD forecast is confirmed to foot from a 2,300,000 USD new-business line and a 1,600,000 USD renewals line rather than trusted. The prior_period_actual, variance_amount, and variance_percentage columns are captured so the forecast reads against its baseline, the assumptions come back as rows with their category and rationale, and the revision_number and prior_forecast_reference track versions. Attached to every figure is a confidence score and a source-region pointer under DIN SPEC 91491, so an analyst can trace the projected total back to the line and period it came from.
Sample extraction
A four-quarter revenue forecast with assumptions
{
"document_number": "FC-2026-REV-02",
"document_date": "2025-12-10",
"forecast_period_start": "2026-01-01",
"forecast_period_end": "2026-12-31",
"prepared_by": "Elena Vasquez",
"department": "Sales",
"forecast_type": "revenue",
"currency": "USD",
"periodicity": "quarterly",
"number_of_periods": 4,
"total_amount": 3900000,
"confidence_level": "medium",
"comparison_baseline": "FY2025 actuals",
"variance_tolerance": 5,
"contingency_amount": 150000,
"revision_number": 2,
"prior_forecast_reference": "FC-2026-REV-01",
"approval_status": "approved",
"approved_by": "Marcus Feld, VP Finance",
"approval_date": "2025-12-15",
"note": "Line totals foot: new business 2,300,000 USD + renewals 1,600,000 USD = total 3,900,000 USD",
"line_items": [
{
"line_number": 1,
"description": "New business bookings",
"account_code": "4000",
"period_1_amount": 500000,
"period_2_amount": 550000,
"period_3_amount": 600000,
"period_4_amount": 650000,
"period_total": 2300000,
"prior_period_actual": 2000000,
"variance_amount": 300000,
"variance_percentage": 15
},
{
"line_number": 2,
"description": "Renewals",
"account_code": "4010",
"period_1_amount": 400000,
"period_2_amount": 400000,
"period_3_amount": 400000,
"period_4_amount": 400000,
"period_total": 1600000,
"prior_period_actual": 1500000,
"variance_amount": 100000,
"variance_percentage": 6.7
}
],
"key_assumptions": [
{
"assumption_id": "K1",
"category": "growth_rate",
"description": "New logo growth vs prior year",
"value": "15",
"unit": "percent",
"rationale": "Pipeline coverage of 3.2x plan"
},
{
"assumption_id": "K2",
"category": "churn",
"description": "Gross revenue churn on renewals",
"value": "5",
"unit": "percent",
"rationale": "Trailing-twelve-month retention"
}
],
"period_headers": [
{
"period_index": 1,
"period_label": "Q1 2026",
"period_start_date": "2026-01-01",
"period_end_date": "2026-03-31",
"days_in_period": 90
},
{
"period_index": 2,
"period_label": "Q2 2026",
"period_start_date": "2026-04-01",
"period_end_date": "2026-06-30",
"days_in_period": 91
},
{
"period_index": 3,
"period_label": "Q3 2026",
"period_start_date": "2026-07-01",
"period_end_date": "2026-09-30",
"days_in_period": 92
},
{
"period_index": 4,
"period_label": "Q4 2026",
"period_start_date": "2026-10-01",
"period_end_date": "2026-12-31",
"days_in_period": 92
}
]
}Frequently asked
How is a forecast different from an income statement?
An income statement reports actual results for a period that has closed. A forecast projects future periods and carries assumptions, a confidence level, and a comparison baseline. Talonic reads a forecast on its own schema, capturing the projected figures and the drivers behind them rather than historical actuals.
Does it check that the line items and total foot?
Yes. Each line item’s period amounts are checked to sum to its period_total, and the header total_amount is verified to equal the sum of the line totals, so a 3,900,000 USD forecast is confirmed to foot from its 2,300,000 USD and 1,600,000 USD lines.
Are the assumptions captured, not just the numbers?
Yes. The key_assumptions table returns each driver as a row with its category, value, unit, and rationale, so a projection is read alongside the growth rate, churn, or inflation figure it rests on rather than as a bare column of numbers.
How does it handle forecast revisions?
The revision_number and prior_forecast_reference are captured, so a version 2 forecast that supersedes version 1 is identifiable, and a planning system can keep the version history straight.
Ready to extract from your own financial forecasts?
Author note
Reviewed by Talonic engineering, finance schema review · last reviewed 2026-07-09