44%
closed the quarter within six working days in 2023, down from 49% in 2019
44 of every 100 organisations
Criterio CFO
The finance function
Evidence before the decision
Clara prepares the monthly close, Tomás puts the budget next to actual spend and Áurea checks cash, payments and debt against their policy. All three process every document, calculate what does not tie out and prepare the deliverable; the status of the close, the budget and cash is always declared by a person.
What it costs, measured by third parties
44%
closed the quarter within six working days in 2023, down from 49% in 2019
44 of every 100 organisations
45%
of SOX controls are manual in the organisations surveyed; programme hours rose 32% in two years, from 11,800 to 15,580
45 of every 100 SOX controls
18 days
is the median annual close; top performers take 10 days or less and the slowest 35
18%
of people in the controllership function make errors at least daily, and 59% several per month, because of capacity constraints
18 of every 100 controllership staff
79%
of organisations suffered attempted or actual payments fraud in 2024; 63% name business email compromise as the main channel
79 of every 100 organisations
Third-party figures, each with its source, year and sample, verified against the publisher’s own text. The agents’ own figures are further down, in the test evidence.
Criterio is open source. If it creates value for you, help fund testing, documentation and the next capabilities.
Clara, Tomás and Áurea are Criterio’s CFO family, an open platform of agent families. See the families
Industries
The engine and the agents are tested on all 33 entities of the material, in 11 countries: 22 industry entities —4 industries— and 11 control entities. The engine, also, on every change to the repository. On the map, each country with its evolution.
11 countries tested, in the order they came in · signals and fields from each entity’s latest run
| Since | Country | Material entities | Its rounds | Signals · fields |
|---|---|---|---|---|
| Round 1 | Colombia | Banking, Retail, Control entity | Rounds 1–4 | 28 of 28 signals · 24 of 24 fields |
| Round 2 | Ecuador | Cooperatives, Mining, Control entity | Rounds 2, 4 | 28 of 28 signals · 25 of 25 fields |
| Round 3 | Peru | Banking, Mining, Control entity | Rounds 3–4 | 24 of 24 signals · 25 of 25 fields |
| Round 5 | Chile | Retail, Mining, Control entity | Round 5 | 26 of 26 signals · 24 of 24 fields |
| Round 6 | Mexico | Banking, Retail, Control entity | Round 6 | 27 of 27 signals · 24 of 24 fields |
| Round 7 | Brazil | Retail, Mining, Control entity | Round 7 | 24 of 24 signals · 24 of 25 fields |
| Round 8 | Argentina | Retail, Mining, Control entity | Round 8 | 24 of 24 signals · 25 of 25 fields |
| Round 9 | Panama | Banking, Retail, Control entity | Round 9 | 27 of 27 signals · 24 of 24 fields |
| Round 10 | Guatemala | Retail, Mining, Control entity | Round 10 | 24 of 24 signals · 25 of 25 fields |
| Round 11 | Costa Rica | Banking, Retail, Control entity | Round 11 | 25 of 25 signals · 25 of 25 fields |
| Round 12 | Honduras | Banking, Retail, Control entity | Round 12 | 27 of 27 signals · 625 of 625 fields |
The progress map
11 countries tested
Borders: Natural Earth, public domain.
What was tested here
SAR · Key of each document: CAI y número correlativo
ISV at 15%, against what the books record
The entity’s RTN · HNL
Clara · 11
Tomás · 6
Áurea · 6
Latest round: 12
67 documents · 12 defects seeded on purpose
65 documents · 12 defects seeded on purpose
67 documents and no defects: any signal would be a failure
Evolution
The entities and their defects are written in the repository, in tests/criterio-cfo/generar.py.
Criterio · CFO family
They process the books, the supporting documents, the budget and the cash as they are, and tell you what ties out, what does not and what has no support.
CRITERIO · CFO FAMILY
Where the family stands: built and tested on synthetic material from six countries —Colombia, Ecuador, Peru, Chile, Mexico and Brazil, the latter with its documents in Portuguese—. The engine passes its deterministic test against the eighteen entities in the material, and the three agents passed their rounds with a key they never see.
Where each name comes from
The four, one at a time
Each tab stands on its own: you can install one agent without the others. The screenshots are Rostrum, the portal for every family, publishing what the agents found in the banking test data.
criterio-finance
From clarus: the books say what the supporting documents say.
Processes the books and their supporting documents: the monthly close with its checklist and evidence, bank and account reconciliations, every e-invoice against the books and the auditor’s package. You close and sign.
What only she does
A task marked done without the document that proves it is not done, and she says so with the task and its owner. She processes every document in the period, not a sample: every e-invoice against the books, every item in each reconciliation.
What she answers
Never
Posts entries, signs or declares the close status.

Its commands, by group
finance-setupfinance-wakeclose-scanclose-statusbank-reconcileaccount-reconcileledger-checkeinvoice-checkaudit-pack9 commands · 7 skills
Clara, Tomás and Áurea have no portal of their own: they enter Rostrum, the portal for every family, like any other. What Rostrum shows is what their engine already wrote, with the date it was written; it recalculates nothing and never writes to their state.
How it enters the portal
/criterio-finance:finance-setup, leaves its configuration in .criterio/finanzas/<entity or case>/ and marks its root folder with _CRITERIO_FINANZAS.txt./criterio-budget:budget-setup, leaves its configuration in .criterio/presupuesto/<entity or case>/ and marks its root folder with _CRITERIO_FINANZAS.txt./criterio-treasury:treasury-setup, leaves its configuration in .criterio/tesoreria/<entity or case>/ and marks its root folder with _CRITERIO_FINANZAS.txt.Then Rostrum adds it to the map and raises the portal:
/plugin install criterio-server@criterio /criterio-server:server-setup /criterio-server:server-start
What it has in Rostrum

What it costs you today
Each agent extends one person: Clara the controller’s team, Tomás the FP&A analysts and Áurea the treasury. Enter how many people you have, what they cost and how many hours a week each task takes them. Nothing you type leaves your browser.
Write the costs in the currency you choose. There is no conversion: changing the currency clears the costs, because an exchange rate written into a page is wrong within weeks.
The people
Hours per week on each task
Hours are per person, per week. The starting people and hours are examples: replace them with yours. The cost is yours to write: we do not print one we cannot source.
Your numbers · per year
Clara
Controller’s team and accounting · 15 h a week each (38% of the week)
2,070 ha year
—a year
Tomás
FP&A analysts · 9 h a week each (23% of the week)
828 ha year
—a year
Áurea
Treasury · 8 h a week each (20% of the week)
736 ha year
—a year
Write the monthly cost of each group to see what it costs.
What this number is and what it is not
It is the cost of the hours your team spends today on tasks the agents prepare: matching, reconciling, consolidating, drafting. It is not a saving. The person still reviews, decides and declares the status.
How many of those hours come back we will publish in the evidence section, with each round’s tests. Until that figure is measured, we do not put it here.
Test evidence · updated with every round
Every figure comes from a real run of the repository, with its count and its 95% confidence margin. The engine is tested on every change to the repository; the agents, in rounds on one entity’s material.
How it is tested
4 industries and 11 controls
The engine, on all of them. The agents, so far on all 33 entities of the material, in 11 countries. The control entities carry no defects at all: any signal is a failure.
6 commands per entity
Clara, Tomás and Áurea run each agent’s setup and processing —the commands that process the documents and write the records—, with a token cap set before starting. The rest calculate on those records with the engine, which is tested on every change to the repository.
2,189 documents
What the material of the measured entities holds, in CSV, XML, Excel, text, PDF, Word and JSON. The key is not counted: the agents do not have it.
145.5 million tokens
The work of the language model (LLM) in each entity’s latest run —rounds 4, 5, 6, 7, 8, 9, 10, 11 and 12—, with its verifications and 5.5 million from the runs repeated after fixing a defect.
A key they never see
What is expected is written in each entity’s key before the run: every seeded signal and every data point the written documents carry.
95% margin
Every figure comes with its confidence margin: it says how much the sample supports, which a percentage alone does not.
What they wrote is graded against the key they never saw: every signal by its name and its key, and every data point in the records against what the written documents carry. Each entity counts with its latest run, whatever round it came from; if a defect was fixed, the one that verified it. The first runs, with what they missed, are in the chart and in the detail.
Record data
99.3% or higher
Measured: 99.9%. The headline is the floor of the 95% confidence margin: what the test supports.
870 of 871 data points extracted from the written documents match the key.
Measured
95% confidence margin (Wilson): 99.3–99.97%
Signals found
98.6% or higher
Measured: 100%. The headline is the floor of the 95% confidence margin: what the test supports.
284 of 284 signals the key expected.
Measured
95% confidence margin (Wilson): 98.6–100%
Correct signals
98.6% or higher
Measured: 100%. The headline is the floor of the 95% confidence margin: what the test supports.
284 of 284 signals raised were correct.
Measured
95% confidence margin (Wilson): 98.6–100%
Controls without false alarms
11 of 11
11 of 11 control entities without a single extra signal.
Measured
198 commands run on 33 entities, each with its output, its cost and its grade published.
How the family moves from one round to the next
Each dot is one entity in its first run of the round; the line is its 95% confidence margin. Verifications are shown apart: they repeat what was fixed. The axis starts at the lowest value published.
Round 11
Round 22
Round 33
Round 44
Round 55
Round 66
Round 77
Round 88
Round 99
Round 1010
Round 1111
Round 1212
Results by country · each country’s latest run
Each country with its entities in their latest run with the agent. The margin is the 95% Wilson interval.
| Country | Entities | Round | Record data | Signals found | Correct signals | Controls without false alarms |
|---|---|---|---|---|---|---|
| Colombia | 3 | 4 | 24 of 24 · 100%95% CI 86.2–100% | 28 of 28 · 100%95% CI 87.9–100% | 28 of 28 · 100%95% CI 87.9–100% | 1 of 1 |
| Ecuador | 3 | 4 | 25 of 25 · 100%95% CI 86.6–100% | 28 of 28 · 100%95% CI 87.9–100% | 28 of 28 · 100%95% CI 87.9–100% | 1 of 1 |
| Peru | 3 | 4 | 25 of 25 · 100%95% CI 86.6–100% | 24 of 24 · 100%95% CI 86.2–100% | 24 of 24 · 100%95% CI 86.2–100% | 1 of 1 |
| Chile | 3 | 5 | 24 of 24 · 100%95% CI 86.2–100% | 26 of 26 · 100%95% CI 87.1–100% | 26 of 26 · 100%95% CI 87.1–100% | 1 of 1 |
| Mexico | 3 | 6 | 24 of 24 · 100%95% CI 86.2–100% | 27 of 27 · 100%95% CI 87.5–100% | 27 of 27 · 100%95% CI 87.5–100% | 1 of 1 |
| Brazil | 3 | 7 | 24 of 25 · 96%95% CI 80.4–99.3% | 24 of 24 · 100%95% CI 86.2–100% | 24 of 24 · 100%95% CI 86.2–100% | 1 of 1 |
| Argentina | 3 | 8 | 25 of 25 · 100%95% CI 86.6–100% | 24 of 24 · 100%95% CI 86.2–100% | 24 of 24 · 100%95% CI 86.2–100% | 1 of 1 |
| Panama | 3 | 9 | 24 of 24 · 100%95% CI 86.2–100% | 27 of 27 · 100%95% CI 87.5–100% | 27 of 27 · 100%95% CI 87.5–100% | 1 of 1 |
| Guatemala | 3 | 10 | 25 of 25 · 100%95% CI 86.6–100% | 24 of 24 · 100%95% CI 86.2–100% | 24 of 24 · 100%95% CI 86.2–100% | 1 of 1 |
| Costa Rica | 3 | 11 | 25 of 25 · 100%95% CI 86.6–100% | 25 of 25 · 100%95% CI 86.6–100% | 25 of 25 · 100%95% CI 86.6–100% | 1 of 1 |
| Honduras | 3 | 12 | 625 of 625 · 100%95% CI 99.3–100% | 27 of 27 · 100%95% CI 87.5–100% | 27 of 27 · 100%95% CI 87.5–100% | 1 of 1 |
Defects the rounds found · 12
Every error is logged with its origin and the commit that fixes it. It counts as verified only when a run after the fix gives the expected result.
Where they came from
For auditing
The full detail of every run. Each block opens on its own.
The agents ran their commands on each entity’s material, with a token cap set before starting. What they wrote was graded against the key they never saw: every signal by its name, and every data point in the records against what the written documents carry.
| Test material | Agents · commands | Signals | Record data | Tokens |
|---|---|---|---|---|
| bankingRound 1 · Colombia | Clara, Tomás · 16 | 13 / 13 | 8 / 8 | 8.8 M + 0.8 M repeated |
| control entityRound 1 · Colombia | Clara, Tomás · 16 | 0 / 0 | 8 / 8 | 8.5 M |
| control entityRound 10 · Guatemala | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 3.9 M |
| miningRound 10 · Guatemala | Áurea, Clara, Tomás · 6 | 12 / 12 | 9 / 9 | 4.3 M |
| retailRound 10 · Guatemala | Áurea, Clara, Tomás · 6 | 12 / 12 | 8 / 8 | 4.5 M |
| bankingRound 11 · Costa Rica | Áurea, Clara, Tomás · 6 | 13 / 13 | 9 / 9 | 4 M |
| control entityRound 11 · Costa Rica | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 3.9 M |
| retailRound 11 · Costa Rica | Áurea, Clara, Tomás · 6 | 12 / 12 | 8 / 8 | 3.9 M |
| bankingRound 12 · Honduras | Áurea, Clara, Tomás · 6 | 14 / 14 | 213 / 213 | 4.5 M |
| control entityRound 12 · Honduras | Áurea, Clara, Tomás · 6 | 0 / 0 | 212 / 212 | 5.5 M |
| retailRound 12 · Honduras | Áurea, Clara, Tomás · 6 | 13 / 13 | 200 / 200 | 4.4 M |
| bankingRound 2 · Colombia | Clara, Tomás · 16 | 13 / 13 | 8 / 8 | 8.4 M |
| control entityRound 2 · Colombia | Clara, Tomás · 16 | 0 / 0 | 8 / 8 | 8.4 M |
| control entityRound 2 · Ecuador | Clara, Tomás · 16 | 0 / 0 | 8 / 8 | 8.5 M |
| cooperativesRound 2 · Ecuador | Clara, Tomás · 16 | 11 / 11 | 8 / 8 | 9.2 M |
| miningRound 2 · Ecuador | Clara, Tomás · 16 | 11 / 11 | 8 / 9 | 9.7 M |
| retailRound 2 · Colombia | Clara, Tomás · 16 | 10 / 10 | 8 / 8 | 8.8 M |
| bankingRound 3 · Colombia | Áurea, Clara, Tomás · 6 | 16 / 16 | 8 / 8 | 3.8 M |
| bankingRound 3 · Peru | Áurea, Clara, Tomás · 6 | 12 / 12 | 8 / 8 | 4.8 M + 4.4 M repeated |
| control entityRound 3 · Peru | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 3.9 M |
| miningRound 3 · Peru | Áurea, Clara, Tomás · 6 | 12 / 12 | 9 / 9 | 4.7 M |
| bankingRound 4 · Colombia | Áurea, Clara, Tomás · 6 | 16 / 16 | 8 / 8 | 4.7 M |
| bankingRound 4 · Peru | Áurea, Clara, Tomás · 6 | 12 / 12 | 8 / 8 | 4.2 M + 1.1 M repeated |
| control entityRound 4 · Colombia | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 3.9 M |
| control entityRound 4 · Ecuador | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 3.8 M |
| control entityRound 4 · Peru | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 4.3 M |
| cooperativesRound 4 · Ecuador | Áurea, Clara, Tomás · 6 | 14 / 14 | 8 / 8 | 4.2 M + 1.6 M repeated |
| miningRound 4 · Ecuador | Áurea, Clara, Tomás · 6 | 14 / 14 | 9 / 9 | 4.6 M |
| miningRound 4 · Peru | Áurea, Clara, Tomás · 6 | 12 / 12 | 9 / 9 | 4.1 M |
| retailRound 4 · Colombia | Áurea, Clara, Tomás · 6 | 12 / 12 | 8 / 8 | 4.3 M + 2.7 M repeated |
| control entityRound 5 · Chile | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 4.5 M |
| miningRound 5 · Chile | Áurea, Clara, Tomás · 6 | 12 / 12 | 8 / 8 | 4 M |
| retailRound 5 · Chile | Áurea, Clara, Tomás · 6 | 14 / 14 | 8 / 8 | 4.2 M |
| bankingRound 6 · Mexico | Áurea, Clara, Tomás · 6 | 16 / 16 | 8 / 8 | 4.3 M |
| control entityRound 6 · Mexico | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 4.4 M |
| retailRound 6 · Mexico | Áurea, Clara, Tomás · 6 | 11 / 11 | 8 / 8 | 4.5 M |
| control entityRound 7 · Brazil | Áurea, Clara, Tomás · 6 | 0 / 0 | 7 / 8 | 4.3 M |
| miningRound 7 · Brazil | Áurea, Clara, Tomás · 6 | 12 / 12 | 9 / 9 | 3.9 M |
| retailRound 7 · Brazil | Áurea, Clara, Tomás · 6 | 12 / 12 | 8 / 8 | 3.8 M |
| control entityRound 8 · Argentina | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 3.8 M |
| miningRound 8 · Argentina | Áurea, Clara, Tomás · 6 | 12 / 12 | 9 / 9 | 4.3 M |
| retailRound 8 · Argentina | Áurea, Clara, Tomás · 6 | 12 / 12 | 8 / 8 | 4.1 M |
| bankingRound 9 · Panama | Áurea, Clara, Tomás · 6 | 16 / 16 | 8 / 8 | 3.8 M |
| control entityRound 9 · Panama | Áurea, Clara, Tomás · 6 | 0 / 0 | 8 / 8 | 4.7 M |
| retailRound 9 · Panama | Áurea, Clara, Tomás · 6 | 11 / 11 | 8 / 8 | 4.3 M |
CFO-1Fixed and verified
Tomás proposed the path to the PMO records without looking for them first, and the engine said nothing when it found none.
Tomás looks for the records before proposing the path and the engine says when there are none. Setup was rerun on banking and gave the expected result.
the agent’s instructions · banking · Colombia · 7ba9570
CFO-2Fixed and verified
Grading did not match a figure written another way and rejected a correct text with more detail than the key.
Grading matches figures and accepts text that contains what the key asks for. Verified in round 2: 48 of 49 data points across the six entities.
the test harness · banking · Colombia · 7ba9570
CFO-3Fixed and verified
When the agent changed folder, the engine wrote state and signals somewhere else: it resolved paths from the session, not from the .criterio folder.
The engine resolves paths from the .criterio folder and grading only takes the state the configuration names. Verified in round 2: no extra signals in either control.
the code · control entity · Colombia · 39e892d
CFO-4Fixed and verified
Grading compares the committee commitment as text: the key says “Revisar el contrato de vigilancia” and Tomás wrote “Administración revisa el contrato de vigilancia antes del próximo comité”, the same commitment with the same owner and the same minutes. That is why mining scores 8 of 9 and not 9.
Grading accepts a what with the key’s words, conjugation aside, only when its citation and the rest of the record match. Verified by re-grading the original round 2 mining output: 9 of 9 data points; the other entities do not change.
the test harness · mining · Ecuador · 96935cc
CFO-5Fixed and verified
The dollar account was only in the key: no document stated its currency. Áurea said so during setup, left the currencies empty and did not raise the FX exposure.
Every statement in the material carries its currency, as the bank prints it, and the engine takes it from the statement when the configuration does not set it. Áurea's setup and scan were rerun on Peru banking: she raised the exposure.
the test data · banking · Peru · fe751d3
CFO-6Fixed and verified
Tomás did not take to the record the email in which Administration says it is within budget, so the declaration-against-evidence signal was not raised. In the other entities he did.
The engine returns in record_issues every written document in forecasts or minutes that the record does not cite, and the agent extracts it or notes it in reviewed with its reason. Tomás was rerun on Peru banking: he took the email and raised the signal.
the agent’s instructions · banking · Peru · fe751d3
CFO-7Fixed and verified
When setup was rerun, Tomás set version 1 as approved because no minutes say “version 2 is approved”, although version 2 comes from an approved transfer. That raised 10 extra signals against the forecasts' version.
Setup now says the current version is the most recent one and that the engine checks each change against its minutes; Tomás does not set the version on his own. Rerun on Peru banking: no extra signal.
the agent’s instructions · banking · Peru · 67898bb
CFO-8Fixed and verified
During setup, Clara took the accounts starting with 51 and 53 as purchases, by their name. 5305 is financial expenses, and a bank fee came out as a purchase without an e-invoice: one extra signal.
The engine proposes the invoice-matching accounts from the data —the ledger accounts that record the number of an invoice of the period—, and Clara does not add on her own a prefix no invoice supports. With that proposal the engine matches the key exactly on all nine entities. Clara's setup and scan were rerun on credit unions: no extra signal.
the agent’s instructions · cooperatives · Ecuador · d4afcde
CFO-9Fixed and verified
Clara added inventories to the accounts to reconcile, with no subledger in any period, and an extra stale-reconciliation signal came out. No document said which accounts are reconciled each month: the key took it for granted.
The material carries August's subledgers, as a finance function has them, and Clara proposes the accounts with a subledger this period or the previous one. Clara's setup and scan were rerun on retail: no extra signal.
the test data · retail · Colombia · d4afcde
CFO-10Fixed and verified
The test policy had the dollar rate at 1, and Áurea inferred from it that the functional currency was the dollar. The dollar account stopped being foreign and the FX exposure was not raised.
The material's reference rate is of the order of the real one for the entity's currency, and Áurea takes the functional currency from the entity, not from the policy. Áurea's setup and scan were rerun on Peru banking and on retail: she raised the exposure in both.
the test data · banking · Peru · d4afcde
CFO-11Fixed and verified
The key for the Brazilian entities translated into Portuguese values that the record keeps the same in any language —the declared close status, an area's «within» and a committee commitment's status—. Clara and Tomás wrote them as the skill defines them, and they were graded as wrong.
The key keeps those values as the skill defines them, and the harness accepts the same value said in Portuguese. The three Brazilian runs were regraded with the corrected key, with no commands repeated.
the answer key · retail · Brazil · f30c3846
CFO-12Fixed and verified
In the Honduras setup, `cuentas` proposed no account: it looked for XML invoices, and Honduran invoices are documents the agent extracts to the record. Clara inferred the accounts from the ledger and got them right, but without the engine behind her.
`cuentas` takes the Honduran invoices from the close record with `--state`, and without them it says they are extracted first; the setup asks for that. Reports say «on the invoice», not «in the XML», when the invoice is a document. Verified on the Honduran retail entity, set up after the fix: the accounts came from the invoices in the record.
the code · banking · Honduras · 0ec883e8
Synthetic material from banking (Colombia), banking (Costa Rica), banking (Honduras), banking (Mexico), banking (Panama), banking (Peru), cooperatives (Ecuador), mining (Ecuador), mining (Argentina), mining (Brazil), mining (Chile), mining (Guatemala), mining (Peru), retail (Colombia), retail (Argentina), retail (Brazil), retail (Chile), retail (Costa Rica), retail (Guatemala), retail (Honduras), retail (Mexico), retail (Panama), plus 11 control entities with no defects at all: 33 entities with their September close and their budget for the year, and a key the engine never sees.
284
signals planted on purpose, each with its key
31 of 31
family signals planted at least once
11
control entities, where any signal is a failure
The engine raises every expected signal and none extra, and the gate that checks it runs on every change to the repository. The agents’ extraction was tested in the rounds with the agent on every entity in the material: they are above, with their margin.
What comes next
A results page that only says what passed is advertising. What makes it auditable is what it says is not known yet.
Roadmap
Each increment is a version with its full test and its statistical analysis published, with the same metrics, so the evolution can be compared. Versions add up: the latest released one carries everything before it and the fixes for what its tests found.
StableIts evidence says so, not its number: in the latest run of each entity in its material, the lower bound of the 95% margin is 95% or more for signals and for data, and no control raised a signal. Each whole number has ten versions, from x.0 to x.9; then comes x+1.0.
0.8.0
ReleasedReleased on 2026-10-22
Built, with the engine tested and a first round with the agent
Test
The engine, against 4 industries and 2 control entities; the agent, on banking and the Colombian control
0.9.0
ReleasedReleased on 2026-10-23
The full round with the agent
Test
4 industries and 2 control entities, with the key the agent never sees
0.10.0
ReleasedReleased on 2026-10-26
Áurea, Peru and the formats of a real finance function
Test
Round 4, complete: the three agents on the nine entities of Colombia, Ecuador and Peru, with the defects their rounds found fixed and verified
0.11.0
ReleasedReleased on 2026-10-27
Chile
Test
Round 5: the three agents on the three Chilean entities, 26 of 26 signals, none extra and 24 of 24 data points
0.12.0
ReleasedReleased on 2026-10-27
Mexico
Test
Round 6: the three agents on the three Mexican entities, 27 of 27 signals, none extra and 24 of 24 data points
1.0.0
ReleasedReleased on 2026-10-29
Brazil
Test
Round 7 with the three agents in Brazil, with the documents in Portuguese: 24 of 24 signals, none extra, and 24 of 25 data points; the defect it found, in the key, with its fix
1.1.0
ReleasedReleased on 2026-10-30
Argentina, Panama, Guatemala and Costa Rica
Test
Rounds 8 to 11 with the three agents, one per country
Latest released
1.2.0
ReleasedReleased on 2026-10-30
Carries everything before it, with its fixes
Honduras
Test
Round 12 with the three agents
The same roadmap lives in the repository, in families/criterio-cfo/hoja-de-ruta.json.
How they work
Five steps and one boundary. The language model (LLM) extracts what only a written document carries; the code computes everything else. It is generative AI plus a deterministic engine, applied to the close and the budget.
Your documents
The trial balance, the ledger, the subledgers, the statements in Excel or PDF, the DIAN, SRI and SUNAT invoices, the budget, the treasury policy, the minutes and the emails. However they are, wherever they are.
It does not need the folder to be tidy.
The model extractsText and tables
The engine processes the tables directly; written documents are turned into text: Word, Excel, PowerPoint, PDF and email. Whatever it cannot process, it declares, with the reason.
Only what changed is processed again.
The model extractsThe record
One for the close per entity and period, and one for the budget per area and year. Every data point with a citation to the document it came from and its date. Declared and evidenced go in separate fields.
"Not found" is a valid answer.
The model extractsThe engine
Tie-outs, reconciliations, every invoice against its entry, checklist progress, actuals against approved, forecasts and every transfer against its minutes.
Deterministic and tested.
The code computesSignals
Only what crossed a threshold: what does not tie out, what has no support and what is reported differently from what the documents say. If nothing crossed one, nothing is said.
Silence is the feature.
The code computesNo number in a report comes from an estimate. And what is stated nowhere is declared, not filled in.
Why this boundary matters →Seven invariants that hold them up
The agents never talk to each other
They talk through their records. Tomás takes actuals from the same books Clara closes, and Áurea the statements she reconciles, without copying them.
Rostrum does not write
The portal publishes what the engine already wrote and says so with its date. It recalculates nothing.
Each document has one place
The period's books live in one folder, and both take them from there.
Declared and evidenced never merge
What somebody declares and what the documents support live in separate fields. The gap is usually the most valuable finding.
The model extracts, the code computes
Every figure in a report comes from the engine, with all its digits. If the engine does not give it, it is not written.
No agent declares the status
The close's is declared by the controller; each area's, by its owner. It is a restriction on the write path.
One writer per file
The agent writes the record and the engine the results; neither writes the other's.
The detail
The commands with their input, process and report; the signals the code calculates; the folder structure; the sources, and the links to the repository.
In order of importance. The first one sets up the configuration the others need.
finance-setupThe configuration, the folder inventory and the first close record
close-scanThe close record up to date, with what changed and the new signals
close-statusThe close status: declared against evidenced, task by task
00-referencia/checklist-cierre.xlsx, 40-soportes/ and the recordbank-reconcileEach bank account reconciled, with its open items by age
20-bancos/: statement and ledger, with date, description, reference, amount and balanceaccount-reconcileEach account reconciled against its sub-ledger
10-contabilidad/: the general ledger and auxiliares/ for receivables, payables, inventory, fixed assets and intercompanybank-reconcile: the general-ledger balance against the subledger balance of each account, and open items with their ageledger-checkThe trial balance and ledger tie-out, account by account
10-contabilidad/: trial balance and general ledger; the chart of accounts in 00-referencia/einvoice-checkEvery e-invoice in the period against the books, not a sample
30-facturacion/ and the accounting entries of the accounts the configuration links to sales and purchasesaudit-packThe auditor's package index, with the status of every request
50-auditoria/ and the recordfinance-wakeWhat the close needs today; silent when nothing does
share-findingsA summary with no data to share, only if you say yes
.criterio/corridas/In order of importance. The first one sets up the configuration the others need.
budget-setupThe configuration, the inventory and each area's first budget record
00-referencia/), the variance thresholds and, if the organisation uses the PMO family, where its records are10-aprobado/ to 40-actas/ and of the periods with 10-contabilidad/; identifies the approved version by its minutes; compares the folder with the recommended structure; creates, moves or renames nothingbudget-scanThe budget records up to date, with what changed and the new signals
presupuesto-<AAAA>/ and 10-contabilidad/ for each period of the year00-referencia/; updates each record with the citation of every data pointvariance-reportApproved, actual, committed, available and variance by area and account
forecastThe year-end forecast, with its stated assumption
20-compromisos/ and each area's forecast in 30-proyecciones/transfer-logEvery transfer with its approval minutes, and those without
10-aprobado/ and the minutes in 40-actas/budget-committee-packThe budget committee material as a decision pack
variance-report, forecast and transfer-log at cut-off, and the previous committee's minutes in 40-actas/budget-wakeWhat the budget needs today; silent when nothing does
10-contabilidad/, before each committee and once a week for commitmentsshare-findingsA summary with no data to share, only if you say yes
.criterio/corridas/In order of importance. The first one sets up the configuration the others need.
treasury-setupThe configuration, the inventory and the first cash position
20-bancos, whether there is a payment schedule and a projection in 60-tesoreria, and whether 00-referencia holds the policy, the signing-authority matrix, the debt register and the covenants; creates, moves or renames nothingtreasury-scanTreasury up to date, with what changed and the new signals
20-bancos, the payment schedule and projection in 60-tesoreria, the policy, matrix, debt register and covenants in 00-referencia, and the trial balance in 10-contabilidadcash-positionEach account's cash against its minimum and projection, and the currency exposure
payment-checkEach scheduled payment against who may approve it
debt-watchDebt against its maturity and what its contract requires
treasury-wakeWhat treasury needs today; silent when nothing does
share-findingsA summary with no data to share, only if you say yes
.criterio/corridas/31 signals. Each one is raised with its figure, its owner and the document citation; thresholds are each organisation’s configuration.
Clara · 15
close_task_overdueA checklist task is past its date and has no evidence
close_task_done_without_evidenceA task is marked done and no document supports it
trial_balance_unbalancedDebits and credits in the trial balance do not add up to the same amount
ledger_vs_trial_balanceAn account's ledger balance differs from the trial balance
bank_unreconciledThere are statement movements with no entry, or entries with no movement
reconciling_item_agedA reconciling item is older than the configured days
reconciliation_staleAn account's reconciliation was not updated in the period
account_unreconciledAn account's ledger balance differs from its sub-ledger (receivables, payables, inventory, fixed assets, intercompany)
einvoice_not_recordedAn issued or received e-invoice has no accounting entry
recorded_without_einvoiceAn entry that needs an e-invoice has none to support it
einvoice_amount_mismatchThe XML amount or tax differs from the entry
einvoice_duplicateThe same CUFE or access key is recorded twice
invoice_outside_authorizationA received Honduran invoice falls outside its authorized range or was issued after its deadline: it does not support the sales-tax credit
audit_request_unansweredAn auditor request has no supported answer
declared_close_vs_evidenceThe close is reported as closed and there are open signals that status does not explain
Tomás · 9
variance_over_thresholdActual spend at the cut-off departs from the budget by more than the configured percentage
committed_near_approvedActual plus committed approaches the approved amount with no headroom
forecast_over_approvedThe year-end forecast exceeds the approved amount
forecast_staleThe area's forecast was not updated within the configured days
transfer_without_approvalA transfer or change has no minutes approving it
budget_version_mismatchThe report uses a budget version other than the approved one
spend_without_budget_lineThere is spend in an account or cost centre with no budget line
declared_vs_evidenceThe area reports itself within budget and the numbers do not support it
project_budget_mismatchA project's budget in its record differs from what the area has assigned
Áurea · 7
cash_below_minimumThe balance of an account or of consolidated cash falls below the minimum the policy sets
cash_vs_forecastAn account's actual balance deviates from its projection by more than the threshold
fx_exposure_over_limitThe position in another currency, converted at the policy's rate, exceeds its limit
payment_without_approvalA scheduled payment lacks the approvals the policy requires for its amount
signatory_without_authorityWhoever approves a payment lacks the authority in the signing-authority matrix, or is not in it
covenant_at_riskA debt-contract ratio, calculated from the trial balance Clara closes, crosses its limit or comes within the margin of it
maturity_nearA debt obligation or an investment matures within the configured days
Recommended, not required: the agents process the folder as it is. The setup commands say which file is out of place and where it would go, without creating, moving or renaming anything. Setup searches for the entity’s root folder, offers it with the reason and, if you say yes, marks it with a visible file, _CRITERIO_FINANZAS.txt: the only thing it writes among your documents. Every document has one place: Clara closes the period’s books and Tomás takes actual spend from there.
One folder per entity, with its tax id at the start of the name: 900123456-entity-name. Inside it, what the organisation provides once, one folder per accounting period and one per budget year.
finanzas/
└── <entidad>/
├── 00-referencia/
├── <AAAA-MM>/
│ ├── 10-contabilidad/
│ ├── 20-bancos/
│ ├── 30-facturacion/
│ ├── 40-soportes/
│ ├── 50-auditoria/
│ └── 60-tesoreria/
└── presupuesto-<AAAA>/
├── 10-aprobado/
├── 20-compromisos/
├── 30-proyecciones/
└── 40-actas/
estado-finanzas/<entidad>/ · What the organisation provides once
| Folder | What goes in it | Agent |
|---|---|---|
00-referencia/ | The chart of accounts with each account's nature, checklist-cierre.xlsx in the defined model, and the mapping of accounts to cost centres and budget lines; for Áurea, the treasury policy, the signing-authority matrix, the debt register and the covenants | Clara, Tomás, Áurea |
<AAAA-MM>/ · One accounting period, numbered in the order the close is worked
| Folder | What goes in it | Agent |
|---|---|---|
10-contabilidad/ | Trial balance and general ledger exported from the ERP, and auxiliares/ with one file per account; budget execution comes from here too | Clara, Tomás |
20-bancos/ | One folder per account, <bank>-<last 4 digits>, with the statement and the book ledger | Clara, Áurea |
30-facturacion/ | emitidas/ and recibidas/, with the DIAN (F-01), SRI (F-04), SUNAT (F-13), SII (F-16) or SAT (F-19) XML | Clara |
40-soportes/ | The evidence for each checklist task —minutes, emails, signed reconciliations—, with the task id at the start of the name | Clara |
50-auditoria/ | The auditor's requerimientos/ (requests) and respuestas/ (answers) | Clara |
60-tesoreria/ | The payment schedule with who approved each payment, and the cash flow projected to period end | Áurea |
presupuesto-<AAAA>/ · One budget year
| Folder | What goes in it | Agent |
|---|---|---|
10-aprobado/ | The approved budget and every version, with its date in the name | Tomás |
20-compromisos/ | Purchase orders and commitments exported from the ERP, with the cut-off date in the name | Tomás |
30-proyecciones/ | Each area's forecast, one per area and date | Tomás |
40-actas/ | Minutes of the budget committee, of approvals and of transfers | Tomás |
estado-finanzas/ · What Clara, Tomás and Áurea write: the configuration, the records, the reports and the indexes. No person edits it, and no agent writes anywhere else.
Formats are processed from their official technical source and verified field by field. No regulatory rule goes in without being cited to its issuer, and nothing is built on a source still to be verified.
DIAN · Anexo técnico de la factura electrónica de venta
Version 1.9 · dian.gov.co ↗
DIAN · Resolución 000165 de 2023 (sistema de facturación electrónica)
DIAN · Resolución 000008 de 2024 (fija el 1 de mayo de 2024 para adoptar la versión 1.9) y Concepto 1531 de 2024
SRI · Ficha técnica de comprobantes electrónicos, esquema offline
Version 2.34 (27 de julio de 2026) · sri.gob.ec ↗
Colombia · Ley 1314 de 2009 (13 de julio de 2009) y Decreto Único Reglamentario 2420 de 2015 (14 de diciembre de 2015), con los grupos 1, 2 y 3 de información financiera
Con sus modificaciones; el anexo 1 lo modificó el Decreto 1432 de 2020 · Ley 1314 ↗ · Decreto 2420 ↗
Ecuador · Superintendencia de Compañías, Resolución 08.G.DSC.010 de 20 de noviembre de 2008 (Registro Oficial 498, 31 de diciembre de 2008): adopción obligatoria de las NIIF en tres grupos, 2010 a 2012
DIAN · Resolución 227 de 2025, Resolución Única en materia tributaria, aduanera y cambiaria (23 de septiembre de 2025, Diario Oficial 53.254)
Ecuador · Superintendencia de Compañías, Valores y Seguros, Resolución SCVS-INC-DNCDN-2019-0009 (Registro Oficial 39, 13 de septiembre de 2019): instructivo para aplicar las NIIF completas y la NIIF para las Pymes; su antecedente es la Resolución SC.INPA.UA.G-10.005 de 5 de noviembre de 2010
Cámara de Comercio de Quito, texto de la resolución ↗ · Ferrere ↗ · Superintendencia, antecedente de 2010 ↗
SRI · Ficha técnica de comprobantes electrónicos, esquema offline, con el formato XML de la factura
Version 2.09 (septiembre de 2017) · sri.gob.ec ↗
SRI · Resolución NAC-DGERCGC26-00000027 (27 de julio de 2026): registro de proveedores de sistemas de facturación electrónica y el RUC del proveedor en la información adicional del comprobante
O*NET · 11-3031.01 Treasurers and Controllers
O*NET · 13-2031.00 Budget Analysts
SUNAT · Guía de elaboración de documentos electrónicos XML UBL 2.1, factura electrónica
Version 1.0 (mayo de 2017) · cpe.sunat.gob.pe ↗
SUNAT · Cartilla 7, El IGV (portal de cultura tributaria)
Version 2025 · cultura.sunat.gob.pe ↗
Perú · Consejo Normativo de Contabilidad (MEF), Resolución N° 002-2024-EF/30: la versión 2024 de las NIIF
Version 2024 · mef.gob.pe ↗
SII · Formato Documentos Tributarios Electrónicos
Version 2.5 (febrero de 2026) · sii.cl ↗
SII · Preguntas frecuentes: ¿Cuál es la tasa del Impuesto al Valor Agregado (IVA)?
revisada el 10 de junio de 2025 · sii.cl ↗
IFRS Foundation · perfil de jurisdicción de Chile
actualizado el 16 de junio de 2016 · ifrs.org ↗
SAT · Anexo 20, guía de llenado de los comprobantes fiscales digitales por Internet, CFDI versión 4.0; y el Anexo 20 de la Resolución Miscelánea Fiscal para 2022 en el Diario Oficial de la Federación
CFDI 4.0 (guía de 123 páginas; DOF del 13 de enero de 2022) · sat.gob.mx ↗ · dof.gob.mx ↗
IFRS Foundation · perfil de jurisdicción de México
actualizado el 16 de junio de 2016 · ifrs.org ↗
ENCAT y CONFAZ · Manual de Orientação do Contribuinte, Anexo I: Leiaute e Regras de Validação da NF-e e da NFC-e
MOC 7.0, noviembre de 2020 (publicado por el Ato COTEPE/ICMS 69/2020) · confaz.fazenda.gov.br ↗
Secretaria da Fazenda e Planejamento de São Paulo · RICMS/SP (Decreto 45.490/2000), artículo 52, inciso I
Redacción del caput por el Decreto 61.838 del 18 de febrero de 2016, con los incisos mantenidos · legislacao.fazenda.sp.gov.br ↗
IFRS Foundation · perfil de jurisdicción de Brasil
actualizado el 7 de mayo de 2026 · ifrs.org ↗
ARCA · Manual para el desarrollador · Facturación, RG 4291 (WSFEv1)
Proyecto FE v4.8; el historial de modificaciones anota la versión 4.8 con fecha 01/12/2026 · afip.gob.ar ↗
Argentina · Decreto 2312/2002, sobre el artículo 28 de la Ley de Impuesto al Valor Agregado
El texto publicado en argentina.gob.ar · argentina.gob.ar ↗
IFRS Foundation · perfil de jurisdicción de Argentina
actualizado el 27 de diciembre de 2023 · ifrs.org ↗
Ministerio de Economía y Finanzas de Panamá, DGI · Ficha Técnica de la Factura Electrónica para los Proveedores de Autorización Calificados
Versión 1.00, abril de 2025 · dgi.mef.gob.pa ↗
DGI de Panamá · ITBMS, generalidades
La página consultada el 30 de octubre de 2026 · dgi.mef.gob.pa ↗
IFRS Foundation · perfil de jurisdicción de Panamá
actualizado el 13 de septiembre de 2023 · ifrs.org ↗
SAT de Guatemala · FEL, esquema GT_Documento 0.2.1
El esquema publicado en el repositorio «Catalogo-FEL» de la cuenta notificacioneselectfel en GitHub («Esquema y catálogos - FEL»), con el espacio de nombres http://www.sat.gob.gt/dte/fel/0.2.0; actualizado el 14 de octubre de 2026 · github.com ↗
SAT de Guatemala · FEL, Reglas y validaciones
Versión 2.1, octubre de 2026 · sat.gob.gt ↗
Guatemala · Decreto 27-92, Ley del Impuesto al Valor Agregado, artículo 10
El texto con sus reformas que trajo José Francisco Ñáñez · sat.gob.gt ↗
IFRS Foundation · perfil de jurisdicción de Guatemala
actualizado el 16 de junio de 2016 · ifrs.org ↗
Ministerio de Hacienda de Costa Rica · Anexos y Estructuras para la Emisión de Comprobantes Electrónicos
Versión 4.4, Dirección General de Tributación, noviembre de 2024 · hacienda.go.cr ↗
Costa Rica · Ley 9635, Fortalecimiento de las Finanzas Públicas, título I, Ley del Impuesto sobre el Valor Agregado, artículo 10
El texto que trajo José Francisco Ñáñez · hacienda.go.cr ↗
IFRS Foundation · perfil de jurisdicción de Costa Rica
actualizado el 8 de febrero de 2017 · ifrs.org ↗
Honduras · Acuerdo 481-2017 de la Secretaría de Finanzas, Reglamento del Régimen de Facturación, Otros Documentos Fiscales y Registro Fiscal de Imprentas, artículos 3, 10 y 11
El texto original publicado en La Gaceta n.º 34,413 del 10 de agosto de 2017, el PDF que trajo José Francisco Ñáñez · sar.gob.hn ↗
Honduras · Ley del Impuesto Sobre Ventas, artículo 6
El texto consolidado al 10 de junio de 2016 que trajo José Francisco Ñáñez · sar.gob.hn ↗
IFRS Foundation · perfil de jurisdicción de Honduras
actualizado el 21 de febrero de 2017 · ifrs.org ↗
Installation, setup and terms
Three steps, and none of them asks you to edit a file. You install only the agent for the role you have; if you install several, they find each other through the entity’s state: there is nothing to connect.
To receive every new version, turn on auto-update once: in /plugin, Marketplaces → criterio → Enable auto-update. Without it, the installed version does not change on its own.
What it needs from you
Each agent comes with its own setup command. It looks at your folders, asks a few questions and shows you a first result on your own documents.
/criterio-finance:finance-setup
How it asks
None of them schedules itself. Each comes with the command a clock calls (finance-wake, budget-wake, treasury-wake), and someone sets it once as a scheduled task. If your organisation does not want unattended runs, they are run by hand.
Nobody reads a disclaimer in a repository. So the warning reaches the person who runs the agent and the person who later receives the document, in four layers that every agent implements.
One acceptance per version
Every version of the family is accepted again and leaves on your machine a receipt in Markdown and PDF, with the SHA-256 fingerprint of the terms and of the receipt itself. Until the one for the installed version is recorded, the agent answers questions but produces no full analysis. It never assumes it or infers it from you continuing to talk.
On every report
Every report carries a footer saying it is a draft, based on which documents, how many fields had no data and how many contradictions remain open. The document travels by email and reaches a committee: the warning travels with it.
At the start of every run
Before the first finding it says which records it loaded, when they were refreshed, and whether any is stale or missing.
In the legal notice
The full terms, the legal notice and the version register —what changed in each version, which terms govern it and their fingerprint— are published on this site, and every receipt points to them.
What you agree to, in plain words
Terms version 1.3, of 2026-10-28, for version 1.2.0 of the family. Every new version of the family asks for acceptance again.
Legal notice and version register →Apache 2.0
The method, the record schema, the code that computes and the acceptance criteria, in full and with no conditions. Use it inside your organisation without asking, adapt it, and build the capability you are missing: the agent for a function should be written by someone who knows the work.
What it does not do
Frequently asked questions
What it is
They process what the finance function already has. Clara, the controller, prepares the monthly close with its checklist and evidence, the bank and account reconciliations, every e-invoice against its entry and the auditor's package. Tomás, FP&A, puts the approved budget next to actual and committed spend, forecasts the year-end and prepares the budget committee's material.
No. They prepare the work and check it against all of its evidence: what does not tie out, what has no support and what is reported differently from what the documents say. The status of the close is declared by the controller, and that of the budget by the head of the area.
They do not post or correct entries, file returns or regulatory reports, sign, or declare the status of the close or the budget. They give no opinion on deductibility, rates or IFRS treatments, and they never state a rate, a deadline or the value of a tax unit from memory.
With the accounting framework each country adopted —IFRS in Colombia, Ecuador, Peru and Chile; in Mexico, IFRS or NIF depending on the entity—, and with the DIAN, SRI, SUNAT, SII and SAT electronic invoice processed from its official technical source. Every source is in the repository with its version, its link and the date it was consulted.
How it is used
The ones the finance function already produces, as they are: the trial balance and general ledger exported from the ERP, bank ledgers and statements, e-invoices in XML, the close checklist, the auditor's requests, the approved budget and its versions, purchase orders and the budget committee's minutes.
No. They process the Excel or CSV exports the ERP already produces. Neither of them connects to the ERP or writes to it.
As it is: the agents process it that way. When starting from scratch, the family recommends one folder per entity and, inside it, one per period —books, banks, invoicing, supporting documents and audit— and one per budget year —approved, commitments, forecasts and minutes—. Setup searches for the entity's root folder, offers it and, if you say yes, marks it with a visible file, _CRITERIO_FINANZAS.txt. It is the only thing it writes among your documents.
In the first fifteen minutes, finance-setup shows the status of the period's close: every checklist task with or without its evidence, and the signals the engine raised in the tie-out, the banks, the accounts and the invoices.
In each command's report and in Rostrum, the portal for every family. It shows the latest each engine wrote, what falls due with a date and the full path of the folder each agent works in.
How it is tested
On synthetic material from five countries —Colombia, Ecuador, Peru, Chile and Mexico—: four industries and one control entity per country, with no defects at all, where any signal is a failure. Invoices are generated with each country's official structure, and every family signal is planted at least once.
The material carries a key with what was planted, and the engine never sees it. The test compares every signal by its name and its key: an extra one counts the same as a missing one. The gate that checks it runs on every change to the repository.
The engine is, and the three agents ran on all fifteen entities in the material: round 4 on the nine of Colombia, Ecuador and Peru —80 of 80 signals with none extra and 74 of 74 record data points—, round 5 on Chile —26 of 26 and 24 of 24— and round 6 on Mexico —27 of 27 and 24 of 24—. The family is declared tested; nothing has run yet on an organisation's documents.
Data and privacy
They are processed on the AI platform where the agent runs, like any conversation with it. The plugins do not connect to the internet or send us anything.
On your machine: the close and budget records, the reports, the log of each run and the receipt for accepting the terms, which every version of the family asks for again.
The same answers live in the repository, in families/criterio-cfo/PREGUNTAS.md.
Support the work
Criterio remains open source. A voluntary contribution helps fund testing, documentation and the next capabilities without changing access to the software.
This is a voluntary contribution. It does not unlock features, purchase consulting services or create an advisory relationship.
Support Criterio
Choose an amount and how you want to contribute.
Choose your country to see the payment methods available to you.
dLocal Go currently covers Latin America, Indonesia, Malaysia, Kenya and Nigeria. Global coverage will be added separately.
The point
The supporting documents were always there. Nobody had put them next to the books.
An agent that processes your close will not hand you a control you never built. It will show you, in an afternoon, exactly where it is missing, and that is the only honest place to start.
Principles
José Ñáñez