Extraction schema:
{"type": "object", "additionalProperties": false, "description": "Structural extraction of every numeric financial SCHEDULE (account x fiscal-year pivot) printed in a U.S. Budget Appendix page. Each account prints standardized schedules — 'Program and Financing', 'Object Classification', and 'Employment Summary' — each a small table with an Identification code and the fixed fiscal-year columns. Capture each schedule as a generic pivot: the fiscal-year column headers once, then one row per printed line (line code + description) with a positional value array. Ignore the surrounding narrative appropriations-language paragraphs — they are NOT tables.", "properties": {"tables": {"type": "array", "description": "One entry per printed financial SCHEDULE on the page. A schedule is a captioned numeric block: its caption is one of 'Program and Financing (in millions of dollars)', 'Object Classification (in millions of dollars)', or 'Employment Summary', and it begins with an 'Identification code ...' header row. Include every such schedule. Do NOT emit the narrative paragraphs, the account name headings, or '...—Continued' banners as tables.", "items": {"$ref": "#/$defs/Schedule"}}}, "required": ["tables"], "$defs": {"Schedule": {"type": "object", "additionalProperties": false, "properties": {"table_number": {"type": "string", "description": "Composite identity of the schedule: the printed Identification code, then ' | ', then the schedule kind. E.g. '002-0477-0-1-801 | Object Classification'. The Identification code is the value printed after the words 'Identification code' in the schedule's header row (format like '002-0477-0-1-801'). The schedule kind is exactly one of 'Program and Financing', 'Object Classification', 'Employment Summary' (drop the '(in millions of dollars)' suffix). Do NOT confuse the Identification code with a line code (the 4-digit codes like 1100, 3000 inside the rows). Use ASCII hyphens '-' in the identification code (normalize any source en-dash to '-'). The schedule-kind suffix is Title Case exactly as listed."}, "table_title": {"type": "string", "description": "The schedule kind verbatim: one of 'Program and Financing', 'Object Classification', 'Employment Summary'. Do NOT include the '(in millions of dollars)' suffix or the account name."}, "column_headers": {"type": "array", "items": {"type": "string"}, "description": "The fiscal-year column headers printed at the top of the schedule, left to right, verbatim. For FY2024 Budget Appendix schedules these are exactly ['2022 actual', '2023 est.', '2024 est.']. EXCLUDE the leftmost stub column (the line code + description) — it is the row_label, never a value column. The length MUST equal the number of value cells in every row."}, "rows": {"type": "array", "description": "One entry per printed data line of the schedule, top to bottom. A data line has a line code (e.g. '0001', '1100', '3000', '11.1', '99.9', '1001') and/or a description and at least one numeric value. EXCLUDE pure section-heading lines that carry NO values (e.g. 'Direct obligations:', 'Budgetary resources:', 'Unpaid obligations:', 'Appropriations, discretionary:', 'Budget authority and outlays, net:', 'Outlays, gross:', 'Memorandum (non-add) entries:').", "items": {"$ref": "#/$defs/ScheduleRow"}}}, "required": ["table_number", "table_title", "column_headers", "rows"]}, "ScheduleRow": {"type": "object", "additionalProperties": false, "properties": {"row_label": {"type": "string", "description": "The stub-cell text for this line, verbatim: the printed line code followed by a single space and the description, with trailing dot-leaders removed (e.g. '1100 Appropriation'; '3000 Unpaid obligations, brought forward, Oct 1'; '99.9 Total new obligations, unexpired accounts'; '1001 Direct civilian full-time equivalent employment'). Keep the leading numeric line code as part of the label — it is the identity_key for the row within its schedule. If a line truly has no printed code, use the description alone."}, "values": {"type": "array", "items": {"type": ["string", "null"]}, "description": "The fiscal-year cell values for this line, left to right, one entry per column_headers entry (same length, same order). Each value is the printed number verbatim as a string. Negative values are printed with a leading minus and MUST keep the sign (e.g. '-4', '-553'). Do NOT add thousands separators that are not printed. Use JSON null for a cell printed blank/empty (these schedules often leave a cell blank, shown as dots or nothing) — do NOT invent a 0."}}, "required": ["row_label", "values"]}}}

Expected output:
{"tables": [{"table_number": "002-0477-0-1-801 | employment summary", "table_title": "Employment Summary", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "1001 Direct civilian full-time equivalent employment", "values": ["2,259", "2,693", "2,840"]}]}, {"table_number": "002-0461-0-1-801 | program and financing", "table_title": "Program and Financing", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "1000 Unobligated balance brought forward, Oct 1", "values": ["1", "1", "1"]}, {"row_label": "1930 Total budgetary resources available", "values": ["1", "1", "1"]}, {"row_label": "1941 Unexpired unobligated balance, end of year", "values": ["1", "1", "1"]}, {"row_label": "3000 Unpaid obligations, brought forward, Oct 1", "values": ["1", "1", "1"]}, {"row_label": "3050 Unpaid obligations, end of year", "values": ["1", "1", "1"]}, {"row_label": "3100 Obligated balance, start of year", "values": ["1", "1", "1"]}, {"row_label": "3200 Obligated balance, end of year", "values": ["1", "1", "1"]}, {"row_label": "4180 Budget authority, net (total)", "values": ["1", "1", "1"]}, {"row_label": "4190 Outlays, net (total)", "values": ["1", "1", "1"]}]}, {"table_number": "002-0476-0-1-801 | object classification", "table_title": "Object Classification", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "21.0 Travel and transportation of persons", "values": ["27", "28", "38"]}, {"row_label": "23.3 Communications, utilities, and miscellaneous charges", "values": ["4", "5", "4"]}, {"row_label": "25.2 Other services from non-Federal sources", "values": ["67", "85", "104"]}, {"row_label": "26.0 Supplies and materials", "values": ["10", "14", "21"]}, {"row_label": "31.0 Equipment", "values": ["42", "61", "61"]}, {"row_label": "99.0 Direct obligations", "values": ["150", "193", "228"]}, {"row_label": "99.0 Reimbursable obligations", "values": ["5", null, null]}, {"row_label": "99.5 Adjustment for rounding", "values": [null, null, "1"]}, {"row_label": "99.9 Total new obligations, unexpired accounts", "values": ["155", "193", "229"]}]}, {"table_number": "002-0476-0-1-801 | program and financing", "table_title": "Program and Financing", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "0001 General Expenses (Direct)", "values": ["150", "193", "229"]}, {"row_label": "0801 Reimbursable program activity", "values": ["5", null, null]}, {"row_label": "0900 Total new obligations, unexpired accounts", "values": ["155", "193", "229"]}, {"row_label": "1000 Unobligated balance brought forward, Oct 1", "values": ["40", "23", "25"]}, {"row_label": "1100 Appropriation", "values": ["134", "193", "229"]}, {"row_label": "1121 Appropriations transferred from other acct [002–0477]", "values": ["4", null, null]}, {"row_label": "1160 Appropriation, discretionary (total)", "values": ["138", "193", "229"]}, {"row_label": "1700 Collected", "values": ["7", "2", "2"]}, {"row_label": "1701 Change in uncollected payments, Federal sources", "values": ["-1", "1", "1"]}, {"row_label": "1750 Spending auth from offsetting collections, disc (total)", "values": ["6", "3", "3"]}, {"row_label": "1900 Budget authority (total)", "values": ["144", "196", "232"]}, {"row_label": "1930 Total budgetary resources available", "values": ["184", "219", "257"]}, {"row_label": "1940 Unobligated balance expiring", "values": ["-6", "-1", "-1"]}, {"row_label": "1941 Unexpired unobligated balance, end of year", "values": ["23", "25", "27"]}, {"row_label": "3000 Unpaid obligations, brought forward, Oct 1", "values": ["72", "125", "123"]}, {"row_label": "3010 New obligations, unexpired accounts", "values": ["155", "193", "229"]}, {"row_label": "3011 Obligations (\"upward adjustments\"), expired accounts", "values": ["11", null, null]}, {"row_label": "3020 Outlays (gross)", "values": ["-100", "-195", "-235"]}, {"row_label": "3041 Recoveries of prior year unpaid obligations, expired", "values": ["-13", null, null]}, {"row_label": "3050 Unpaid obligations, end of year", "values": ["125", "123", "117"]}, {"row_label": "3060 Uncollected pymts, Fed sources, brought forward, Oct 1", "values": ["-1", null, "-1"]}, {"row_label": "3070 Change in uncollected pymts, Fed sources, unexpired", "values": ["1", "-1", "-1"]}, {"row_label": "3090 Uncollected pymts, Fed sources, end of year", "values": [null, "-1", "-2"]}, {"row_label": "3100 Obligated balance, start of year", "values": ["71", "125", "122"]}, {"row_label": "3200 Obligated balance, end of year", "values": ["125", "122", "115"]}, {"row_label": "4000 Budget authority, gross", "values": ["144", "196", "232"]}, {"row_label": "4010 Outlays from new discretionary authority", "values": ["37", "117", "137"]}, {"row_label": "4011 Outlays from discretionary balances", "values": ["63", "78", "98"]}, {"row_label": "4020 Outlays, gross (total)", "values": ["100", "195", "235"]}, {"row_label": "4030 Federal sources", "values": ["-7", "-2", "-2"]}, {"row_label": "4050 Change in uncollected pymts, Fed sources, unexpired", "values": ["1", "-1", "-1"]}, {"row_label": "4070 Budget authority, net (discretionary)", "values": ["138", "193", "229"]}, {"row_label": "4080 Outlays, net (discretionary)", "values": ["93", "193", "233"]}, {"row_label": "4180 Budget authority, net (total)", "values": ["138", "193", "229"]}, {"row_label": "4190 Outlays, net (total)", "values": ["93", "193", "233"]}]}, {"table_number": "002-0477-0-1-801 | object classification", "table_title": "Object Classification", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "11.1 Personnel compensation: Full-time permanent", "values": ["305", "355", "411"]}, {"row_label": "12.1 Civilian personnel benefits", "values": ["177", "187", "201"]}, {"row_label": "99.9 Total new obligations, unexpired accounts", "values": ["482", "542", "612"]}]}, {"table_number": "002-0477-0-1-801 | program and financing", "table_title": "Program and Financing", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "1100 Appropriation", "values": ["469", "542", "612"]}, {"row_label": "1120 Appropriations transferred to other acct [002–0476]", "values": ["-4", null, null]}, {"row_label": "1160 Appropriation, discretionary (total)", "values": ["465", "542", "612"]}, {"row_label": "1930 Total budgetary resources available", "values": ["496", "545", "615"]}, {"row_label": "1940 Unobligated balance expiring", "values": ["-11", null, null]}, {"row_label": "1941 Unexpired unobligated balance, end of year", "values": ["3", "3", "3"]}, {"row_label": "3000 Unpaid obligations, brought forward, Oct 1", "values": ["41", "37", "26"]}, {"row_label": "3010 New obligations, unexpired accounts", "values": ["482", "542", "612"]}, {"row_label": "3011 Obligations (\"upward adjustments\"), expired accounts", "values": ["15", null, null]}, {"row_label": "3020 Outlays (gross)", "values": ["-482", "-553", "-608"]}, {"row_label": "3041 Recoveries of prior year unpaid obligations, expired", "values": ["-19", null, null]}, {"row_label": "3050 Unpaid obligations, end of year", "values": ["37", "26", "30"]}, {"row_label": "3100 Obligated balance, start of year", "values": ["41", "37", "26"]}, {"row_label": "3200 Obligated balance, end of year", "values": ["37", "26", "30"]}, {"row_label": "4000 Budget authority, gross", "values": ["465", "542", "612"]}, {"row_label": "4010 Outlays from new discretionary authority", "values": ["420", "515", "581"]}, {"row_label": "4011 Outlays from discretionary balances", "values": ["62", "38", "27"]}, {"row_label": "4020 Outlays, gross (total)", "values": ["482", "553", "608"]}, {"row_label": "4180 Budget authority, net (total)", "values": ["465", "542", "612"]}, {"row_label": "4190 Outlays, net (total)", "values": ["482", "553", "608"]}]}, {"table_number": "002-0478-0-1-801 | object classification", "table_title": "Object Classification", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "25.2 Other services from non-Federal sources", "values": ["3", null, null]}, {"row_label": "25.3 Other goods and services from Federal sources", "values": [null, "6", "6"]}, {"row_label": "99.0 Direct obligations", "values": ["3", "6", "6"]}, {"row_label": "99.9 Total new obligations, unexpired accounts", "values": ["3", "6", "6"]}]}, {"table_number": "002-0478-0-1-801 | program and financing", "table_title": "Program and Financing", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "0001 Direct program activity", "values": ["3", "6", "6"]}, {"row_label": "1000 Unobligated balance brought forward, Oct 1", "values": ["26", "23", "17"]}, {"row_label": "1930 Total budgetary resources available", "values": ["26", "23", "17"]}, {"row_label": "1941 Unexpired unobligated balance, end of year", "values": ["23", "17", "11"]}, {"row_label": "3000 Unpaid obligations, brought forward, Oct 1", "values": [null, "1", "1"]}, {"row_label": "3010 New obligations, unexpired accounts", "values": ["3", "6", "6"]}, {"row_label": "3020 Outlays (gross)", "values": ["-2", "-6", "-6"]}, {"row_label": "3050 Unpaid obligations, end of year", "values": ["1", "1", "1"]}, {"row_label": "3100 Obligated balance, start of year", "values": [null, "1", "1"]}, {"row_label": "3200 Obligated balance, end of year", "values": ["1", "1", "1"]}, {"row_label": "4011 Outlays from discretionary balances", "values": ["2", "6", "6"]}, {"row_label": "4180 Budget authority, net (total)", "values": [null, null, null]}, {"row_label": "4190 Outlays, net (total)", "values": ["2", "6", "6"]}]}, {"table_number": "009-1600-0-1-801 | program and financing", "table_title": "Program and Financing", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "0001 Salaries and Expenses (Direct)", "values": ["7", "8", "9"]}, {"row_label": "1000 Unobligated balance brought forward, Oct 1", "values": [null, "1", "1"]}, {"row_label": "1100 Appropriation", "values": ["8", "8", "9"]}, {"row_label": "1930 Total budgetary resources available", "values": ["8", "9", "10"]}, {"row_label": "1941 Unexpired unobligated balance, end of year", "values": ["1", "1", "1"]}, {"row_label": "3000 Unpaid obligations, brought forward, Oct 1", "values": ["2", "3", null]}, {"row_label": "3010 New obligations, unexpired accounts", "values": ["7", "8", "9"]}, {"row_label": "3020 Outlays (gross)", "values": ["-6", "-11", "-9"]}, {"row_label": "3050 Unpaid obligations, end of year", "values": ["3", null, null]}, {"row_label": "3100 Obligated balance, start of year", "values": ["2", "3", null]}, {"row_label": "3200 Obligated balance, end of year", "values": ["3", null, null]}, {"row_label": "4000 Budget authority, gross", "values": ["8", "8", "9"]}, {"row_label": "4010 Outlays from new discretionary authority", "values": ["5", "8", "9"]}, {"row_label": "4011 Outlays from discretionary balances", "values": ["1", "3", null]}, {"row_label": "4020 Outlays, gross (total)", "values": ["6", "11", "9"]}, {"row_label": "4180 Budget authority, net (total)", "values": ["8", "8", "9"]}, {"row_label": "4190 Outlays, net (total)", "values": ["6", "11", "9"]}]}]}