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": "089-0222-0-1-251 | 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": ["768", "800", "820"]}]}, {"table_number": "089-0337-0-1-270 | 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": ["50", "66", "100"]}]}, {"table_number": "089-0222-0-1-251 | Object Classification", "table_title": "Object Classification", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "11.1 Full-time permanent", "values": ["105", "118", "120"]}, {"row_label": "11.3 Other than full-time permanent", "values": ["2", "2", "2"]}, {"row_label": "11.5 Other personnel compensation", "values": ["4", "4", "4"]}, {"row_label": "11.8 Special personal services payments", "values": ["1", "1", "1"]}, {"row_label": "11.9 Total personnel compensation", "values": ["112", "125", "127"]}, {"row_label": "12.1 Civilian personnel benefits", "values": ["39", "32", "40"]}, {"row_label": "21.0 Travel and transportation of persons", "values": ["1", "3", "3"]}, {"row_label": "23.1 Rental payments to GSA", "values": ["1", "1", "1"]}, {"row_label": "23.3 Communications, utilities, and miscellaneous charges", "values": ["3", "3", "4"]}, {"row_label": "25.1 Advisory and assistance services", "values": ["35", "35", "35"]}, {"row_label": "25.2 Other services from non-Federal sources", "values": ["22", "30", "30"]}, {"row_label": "25.3 Other goods and services from Federal sources", "values": ["19", "19", "19"]}, {"row_label": "25.4 Operation and maintenance of facilities", "values": ["4,510", "5,518", "5,693"]}, {"row_label": "25.5 Research and development contracts", "values": ["11", "11", "11"]}, {"row_label": "25.7 Operation and maintenance of equipment", "values": ["2", "2", "2"]}, {"row_label": "26.0 Supplies and materials", "values": ["2", "2", "2"]}, {"row_label": "31.0 Equipment", "values": ["455", "256", "300"]}, {"row_label": "32.0 Land and structures", "values": ["2,162", "1,155", "1,200"]}, {"row_label": "41.0 Grants, subsidies, and contributions", "values": ["1,511", "1,152", "1,333"]}, {"row_label": "99.0 Direct obligations", "values": ["8,885", "8,344", "8,800"]}, {"row_label": "99.0 Reimbursable obligations", "values": ["631", "624", "643"]}, {"row_label": "99.9 Total new obligations, unexpired accounts", "values": ["9,516", "8,968", "9,443"]}]}, {"table_number": "089-0224-0-1-999 | 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": ["6", "6", "6"]}, {"row_label": "1930 Total budgetary resources available", "values": ["6", "6", "6"]}, {"row_label": "1941 Unexpired unobligated balance, end of year", "values": ["6", "6", "6"]}, {"row_label": "4180 Budget authority, net (total)", "values": [null, null, null]}, {"row_label": "4190 Outlays, net (total)", "values": [null, null, null]}]}, {"table_number": "089-0319-0-1-999 | Program and Financing", "table_title": "Program and Financing", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "0001 NEUP, SBIR/STTR, and TCF", "values": [null, "130", "147"]}, {"row_label": "0002 Nuclear Leadership Development Program", "values": [null, "7", "7"]}, {"row_label": "0003 University Fuel Services", "values": [null, "18", "20"]}, {"row_label": "0004 RC RD&D - Advanced Small Modular Reactor RD&D", "values": [null, "165", "20"]}, {"row_label": "0005 RC RD&D - Light water reactor sustainability", "values": [null, "45", "35"]}, {"row_label": "0006 RC RD&D - Advanced Reactor Technologies", "values": [null, "49", "43"]}, {"row_label": "0007 FC R&D - Mining, Conversion, & Transportation", "values": [null, "2", "2"]}, {"row_label": "0008 FC R&D - Material Recovery and Waste Form Development", "values": [null, "45", "39"]}, {"row_label": "0009 FC R&D - Accident Tolerant Fuels", "values": [null, "114", "109"]}, {"row_label": "0010 Naval Reactors Development", "values": ["93", "100", null]}, {"row_label": "0011 FC R&D - Triso Fuel and Graphite Qualification", "values": [null, "32", "25"]}, {"row_label": "0020 FC R&D - Fuel Cycle Laboratory R&D", "values": [null, "29", "29"]}, {"row_label": "0021 FC R&D - Advanced Nuclear Fuel Availability / HALEU Availability", "values": [null, "100", "120"]}, {"row_label": "0022 FC R&D - Used Nuclear Fuels Disposition R&D", "values": [null, "47", "47"]}, {"row_label": "0023 FC R&D - Integrated Waste Management System", "values": [null, "53", "53"]}, {"row_label": "0030 NEET - Crosscutting Technology Development", "values": [null, "32", "33"]}, {"row_label": "0031 NEET - Joint Modeling and Simulation Program", "values": [null, "29", "29"]}, {"row_label": "0032 Reactor Concepts RD&D (RC RD&D)", "values": ["256", null, null]}, {"row_label": "0034 Advanced Reactors Demonstration Program (ARDP)", "values": ["172", null, null]}, {"row_label": "0035 NEET - Nuclear Science User Facilities", "values": [null, "35", "35"]}, {"row_label": "0040 ARDP - National Reactor Innovation Center", "values": [null, "70", "34"]}, {"row_label": "0041 Fuel Cycle R&D (FC R&D)", "values": ["341", null, null]}, {"row_label": "0042 Nuclear Leadership Development Program", "values": ["5", null, null]}, {"row_label": "0043 Nuclear Energy Enabling Technologies (NEET)", "values": ["128", null, null]}, {"row_label": "0044 ARDP - Regulatory Development", "values": [null, "10", "11"]}, {"row_label": "0045 ARDP - Advanced Reactor Safeguards", "values": [null, "5", "6"]}, {"row_label": "0047 ARDP - Demonstration 1 (X-Energy)", "values": [null, "18", null]}, {"row_label": "0048 ARDP - Demonstration 2 (Natrium)", "values": [null, "18", null]}, {"row_label": "0049 ARDP - Risk Reduction for Future Demonstration", "values": [null, "120", "120"]}, {"row_label": "0051 23-E-200 - LOTUS", "values": [null, "20", "32"]}, {"row_label": "0052 16-E-200 - Sample Preparation Laboratory", "values": [null, "7", null]}, {"row_label": "0081 Inflation Reduction Act - Infrastructure", "values": ["149", "149", null]}, {"row_label": "0082 Inflation Reduction Act - HALEU", "values": ["47", "47", "66"]}, {"row_label": "0091 Direct program activities, subtotal", "values": ["995", "1,496", "1,062"]}, {"row_label": "0301 ORNL Infrastructure Facilities O&M", "values": ["105", null, null]}, {"row_label": "0401 Idaho Facilities Management", "values": ["337", "319", "319"]}, {"row_label": "0402 Versatile Test Reactor Project", "values": ["1", null, null]}, {"row_label": "0450 Idaho National Laboratory safeguards and security", "values": ["150", "150", "178"]}, {"row_label": "0451 International Nuclear Safety", "values": ["7", "5", null]}, {"row_label": "0491 Infrastructure programs, subtotal", "values": ["495", "474", "497"]}, {"row_label": "0551 Program Direction", "values": ["80", "85", "85"]}, {"row_label": "0552 International Nuclear Energy Cooperation", "values": ["3", "3", "13"]}, {"row_label": "0591 Other direct program activities, subtotal", "values": ["83", "85", "98"]}, {"row_label": "0739 Civil Nuclear Credit Program", "values": ["3", "274", "1,025"]}, {"row_label": "0791 Direct program activities, subtotal", "values": ["3", "274", "1,025"]}, {"row_label": "0799 Total direct obligations", "values": ["1,681", "2,329", "2,682"]}, {"row_label": "0801 Nuclear Energy (Reimbursable)", "values": ["314", "313", "314"]}, {"row_label": "0900 Total new obligations, unexpired accounts", "values": ["1,995", "2,642", "2,996"]}, {"row_label": "1000 Unobligated balance brought forward, Oct 1", "values": ["222", "2,323", "3,019"]}, {"row_label": "1001 Discretionary unobligated balance brought fwd, Oct 1", "values": ["222", null, null]}, {"row_label": "1011 Unobligated balance transfer from other acct [072–0306]", "values": ["7", null, null]}, {"row_label": "1021 Recoveries of prior year unpaid obligations", "values": ["18", null, null]}, {"row_label": "1070 Unobligated balance (total)", "values": ["247", "2,323", "3,019"]}, {"row_label": "1100 Appropriation", "values": ["2,855", "1,773", "1,563"]}, {"row_label": "1120 Appropriations transferred to other accts [089-0222]", "values": ["-29", "-20", null]}, {"row_label": "1120 Appropriations transferred to other acct [089–0228]", "values": ["-1", null, null]}, {"row_label": "1120 Appropriations transferred to other acct [089–0236]", "values": ["-1", null, null]}, {"row_label": "1121 Appropriations transferred from other acct [089–0314]", "values": ["93", "100", null]}, {"row_label": "1160 Appropriation, discretionary (total)", "values": ["2,917", "1,853", "1,563"]}, {"row_label": "1170 Advance appropriation", "values": [null, "1,199", "1,199"]}, {"row_label": "1200 Appropriation", "values": ["850", null, null]}, {"row_label": "1700 Collected", "values": ["212", "286", "287"]}, {"row_label": "1701 Change in uncollected payments, Federal sources", "values": ["92", null, null]}, {"row_label": "1750 Spending auth from offsetting collections, disc (total)", "values": ["304", "286", "287"]}, {"row_label": "1900 Budget authority (total)", "values": ["4,071", "3,338", "3,049"]}, {"row_label": "1930 Total budgetary resources available", "values": ["4,318", "5,661", "6,068"]}, {"row_label": "1941 Unexpired unobligated balance, end of year", "values": ["2,323", "3,019", "3,072"]}, {"row_label": "3000 Unpaid obligations, brought forward, Oct 1", "values": ["1,538", "1,745", "1,124"]}, {"row_label": "3010 New obligations, unexpired accounts", "values": ["1,995", "2,642", "2,996"]}, {"row_label": "3020 Outlays (gross)", "values": ["-1,769", "-3,263", "-2,906"]}, {"row_label": "3040 Recoveries of prior year unpaid obligations, unexpired", "values": ["-18", null, null]}, {"row_label": "3041 Recoveries of prior year unpaid obligations, expired", "values": ["-1", null, null]}, {"row_label": "3050 Unpaid obligations, end of year", "values": ["1,745", "1,124", "1,214"]}, {"row_label": "3060 Uncollected pymts, Fed sources, brought forward, Oct 1", "values": ["-174", "-266", "-266"]}, {"row_label": "3070 Change in uncollected pymts, Fed sources, unexpired", "values": ["-92", null, null]}, {"row_label": "3090 Uncollected pymts, Fed sources, end of year", "values": ["-266", "-266", "-266"]}, {"row_label": "3100 Obligated balance, start of year", "values": ["1,364", "1,479", "858"]}, {"row_label": "3200 Obligated balance, end of year", "values": ["1,479", "858", "948"]}, {"row_label": "4000 Budget authority, gross", "values": ["3,221", "3,338", "3,049"]}, {"row_label": "4010 Outlays from new discretionary authority", "values": ["632", "1,702", "1,681"]}, {"row_label": "4011 Outlays from discretionary balances", "values": ["1,137", "1,494", "1,117"]}, {"row_label": "4020 Outlays, gross (total)", "values": ["1,769", "3,196", "2,798"]}, {"row_label": "4030 Federal sources", "values": ["-198", "-286", "-287"]}, {"row_label": "4033 Non-Federal sources", "values": ["-14", null, null]}, {"row_label": "4040 Offsets against gross budget authority and outlays (total)", "values": ["-212", "-286", "-287"]}, {"row_label": "4050 Change in uncollected pymts, Fed sources, unexpired", "values": ["-92", null, null]}, {"row_label": "4070 Budget authority, net (discretionary)", "values": ["2,917", "3,052", "2,762"]}, {"row_label": "4080 Outlays, net (discretionary)", "values": ["1,557", "2,910", "2,511"]}, {"row_label": "4090 Budget authority, gross", "values": ["850", null, null]}, {"row_label": "4101 Outlays from mandatory balances", "values": [null, "67", "108"]}, {"row_label": "4180 Budget authority, net (total)", "values": ["3,767", "3,052", "2,762"]}, {"row_label": "4190 Outlays, net (total)", "values": ["1,557", "2,977", "2,619"]}]}, {"table_number": "089-0337-0-1-270 | Object Classification", "table_title": "Object Classification", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "11.1 Full-time permanent", "values": ["2", "2", "3"]}, {"row_label": "11.3 Other than full-time permanent", "values": ["6", "7", "13"]}, {"row_label": "11.9 Total personnel compensation", "values": ["8", "9", "16"]}, {"row_label": "12.1 Civilian personnel benefits", "values": ["3", "3", "3"]}, {"row_label": "21.0 Travel and transportation of persons", "values": ["1", "1", "2"]}, {"row_label": "25.1 Advisory and assistance services", "values": ["19", "21", "26"]}, {"row_label": "25.2 Other services from non-Federal sources", "values": ["18", "20", "20"]}, {"row_label": "25.3 Other goods and services from Federal sources", "values": ["4", "5", "8"]}, {"row_label": "25.4 Operation and maintenance of facilities", "values": ["46", "52", "87"]}, {"row_label": "25.5 Research and development contracts", "values": ["317", "359", "488"]}, {"row_label": "99.0 Direct obligations", "values": ["416", "470", "650"]}, {"row_label": "99.9 Total new obligations, unexpired accounts", "values": ["416", "470", "650"]}]}, {"table_number": "089-0337-0-1-270 | Program and Financing", "table_title": "Program and Financing", "column_headers": ["2022 actual", "2023 est.", "2024 est."], "rows": [{"row_label": "0001 ARPA-E Projects", "values": ["379", "433", "595"]}, {"row_label": "0002 Program Direction", "values": ["37", "37", "55"]}, {"row_label": "0799 Total direct obligations", "values": ["416", "470", "650"]}, {"row_label": "0900 Total new obligations, unexpired accounts", "values": ["416", "470", "650"]}, {"row_label": "1000 Unobligated balance brought forward, Oct 1", "values": ["510", "557", "557"]}, {"row_label": "1021 Recoveries of prior year unpaid obligations", "values": ["13", null, null]}, {"row_label": "1070 Unobligated balance (total)", "values": ["523", "557", "557"]}, {"row_label": "1100 Appropriation", "values": ["450", "470", "650"]}, {"row_label": "1900 Budget authority (total)", "values": ["450", "470", "650"]}, {"row_label": "1930 Total budgetary resources available", "values": ["973", "1,027", "1,207"]}, {"row_label": "1941 Unexpired unobligated balance, end of year", "values": ["557", "557", "557"]}, {"row_label": "3000 Unpaid obligations, brought forward, Oct 1", "values": ["742", "806", "890"]}, {"row_label": "3010 New obligations, unexpired accounts", "values": ["416", "470", "650"]}, {"row_label": "3020 Outlays (gross)", "values": ["-339", "-386", "-475"]}, {"row_label": "3040 Recoveries of prior year unpaid obligations, unexpired", "values": ["-13", null, null]}, {"row_label": "3050 Unpaid obligations, end of year", "values": ["806", "890", "1,065"]}, {"row_label": "3100 Obligated balance, start of year", "values": ["742", "806", "890"]}, {"row_label": "3200 Obligated balance, end of year", "values": ["806", "890", "1,065"]}, {"row_label": "4000 Budget authority, gross", "values": ["450", "470", "650"]}, {"row_label": "4010 Outlays from new discretionary authority", "values": ["23", "47", "65"]}, {"row_label": "4011 Outlays from discretionary balances", "values": ["316", "339", "410"]}, {"row_label": "4020 Outlays, gross (total)", "values": ["339", "386", "475"]}, {"row_label": "4180 Budget authority, net (total)", "values": ["450", "470", "650"]}, {"row_label": "4190 Outlays, net (total)", "values": ["339", "386", "475"]}]}]}