← Agents

Criterio CFO

The finance function

Evidence before the decision

Every figure the CFO signs, backed by its evidence

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

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

Where the family is tested, and what comes next

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

Round 1ColombiaBanking, Retail, Control entityRounds 1–428 of 28 signals · 24 of 24 fields
Round 2EcuadorCooperatives, Mining, Control entityRounds 2, 428 of 28 signals · 25 of 25 fields
Round 3PeruBanking, Mining, Control entityRounds 3–424 of 24 signals · 25 of 25 fields
Round 5ChileRetail, Mining, Control entityRound 526 of 26 signals · 24 of 24 fields
Round 6MexicoBanking, Retail, Control entityRound 627 of 27 signals · 24 of 24 fields
Round 7BrazilRetail, Mining, Control entityRound 724 of 24 signals · 24 of 25 fields
Round 8ArgentinaRetail, Mining, Control entityRound 824 of 24 signals · 25 of 25 fields
Round 9PanamaBanking, Retail, Control entityRound 927 of 27 signals · 24 of 24 fields
Round 10GuatemalaRetail, Mining, Control entityRound 1024 of 24 signals · 25 of 25 fields
Round 11Costa RicaBanking, Retail, Control entityRound 1125 of 25 signals · 25 of 25 fields
Round 12HondurasBanking, Retail, Control entityRound 1227 of 27 signals · 625 of 625 fields

The progress map

11 countries tested

Map of Latin America. Tested: Colombia, Ecuador, Peru, Chile, Mexico, Brazil, Argentina, Panama, Guatemala, Costa Rica, Honduras. Next: . The other countries are not in yet.

Borders: Natural Earth, public domain.

Hondurastested since round 12

What was tested here

Tax

ISV at 15%, against what the books record

Identification and currency

The entity’s RTN · HNL

See the 23 situations seeded in its entities

Clara · 11

  • A task is marked done and no document supports it
  • Debits and credits in the trial balance do not add up to the same amount
  • An account's ledger balance differs from the trial balance
  • There are statement movements with no entry, or entries with no movement
  • A reconciling item is older than the configured days
  • An issued or received e-invoice has no accounting entry
  • An entry that needs an e-invoice has none to support it
  • The XML amount or tax differs from the entry
  • A received Honduran invoice falls outside its authorized range or was issued after its deadline: it does not support the sales-tax credit
  • An auditor request has no supported answer
  • The close is reported as closed and there are open signals that status does not explain

Tomás · 6

  • Actual spend at the cut-off departs from the budget by more than the configured percentage
  • Actual plus committed approaches the approved amount with no headroom
  • The area's forecast was not updated within the configured days
  • A transfer or change has no minutes approving it
  • There is spend in an account or cost centre with no budget line
  • The area reports itself within budget and the numbers do not support it

Áurea · 6

  • The balance of an account or of consolidated cash falls below the minimum the policy sets
  • The position in another currency, converted at the policy's rate, exceeds its limit
  • A scheduled payment lacks the approvals the policy requires for its amount
  • Whoever approves a payment lacks the authority in the signing-authority matrix, or is not in it
  • A debt-contract ratio, calculated from the trial balance Clara closes, crosses its limit or comes within the margin of it
  • A debt obligation or an investment matures within the configured days

Latest round: 12

  • Banking14 of 14 signals · 213 of 213 data items

    67 documents · 12 defects seeded on purpose

  • Retail13 of 13 signals · 200 of 200 data items

    65 documents · 12 defects seeded on purpose

  • Control entityno signal at all, as it should be · 212 of 212 data items

    67 documents and no defects: any signal would be a failure

Evolution

  1. Round 12 · first time · Banking, Retail, Control entity · 27 of 27 signals1 defect found and fixed: CFO-12
See the evidence, round by round →

The entities and their defects are written in the repository, in tests/criterio-cfo/generar.py.

Criterio · CFO family

The CFO's office, with more capacity

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 · CFOREADY
CLARA
The close
TOMÁS
The budget
ÁUREA
Treasury
ROSTRUM
The portal
THE ENTITY’S RECORDSThe only contract. Clara, Tomás and Áurea never talk to each other: they talk through their records.
PRINTER · CRITERIOSHEET 1

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

Clara
· from the Latin clarus, “clear”: the books say what the supporting documents say
Tomás
· from the Aramaic t’oma, “the twin”: puts the budget next to its twin, actual spend
Áurea
· from the Latin aureus, “golden”: the cash
Rostrum
· from the Latin rostrum, the speakers’ platform of the Roman forum: it holds up what is already written, where others can read it

The four, one at a time

What each one does, what it never does and what its work looks like

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

  • Which checklist task is marked done and no document supports it
  • What is past its date without evidence, and which task blocks another
  • What does not reconcile in each bank account, and how many days each item has been open
  • Which ledger account does not tie to the trial balance or to its sub-ledger
  • Which e-invoice has no entry, which entry has no invoice and which amount or tax does not match
  • Which auditor request still has no supported answer

Never

Posts entries, signs or declares the close status.

Rostrum · Entidad financiera de prueba
The September close with 8 open signals: a ledger account that differs from the trial balance, a trial balance 5,000.00 out and a bank reconciliation marked done without its support. Each signal says where it comes from.
The September close with 8 open signals: a ledger account that differs from the trial balance, a trial balance 5,000.00 out and a bank reconciliation marked done without its support. Each signal says where it comes from.Screenshot of Rostrum on the banking test data of the first round with the agent, cut on 6 October 2026. It is test material written by the repository; it belongs to no organisation.
Extends
The controller and their team
Instances
One per entity
Setup
15 min · 5 questions
Cadence
Daily during the close window; weekly outside it
Needs from you
Supporting documents filed in their folder: without support, the task is not done
Set up with/criterio-finance:finance-setup

Its commands, by group

Start and rhythm2 commands+
finance-setupfinance-wake
The close2 commands+
close-scanclose-status
Reconciliations and tie-out3 commands+
bank-reconcileaccount-reconcileledger-check
Invoices and audit2 commands+
einvoice-checkaudit-pack

9 commands · 7 skills

In Rostrum

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

  1. Clara runs /criterio-finance:finance-setup, leaves its configuration in .criterio/finanzas/<entity or case>/ and marks its root folder with _CRITERIO_FINANZAS.txt.
  2. Tomás runs /criterio-budget:budget-setup, leaves its configuration in .criterio/presupuesto/<entity or case>/ and marks its root folder with _CRITERIO_FINANZAS.txt.
  3. Áurea runs /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

Home
The Criterio CFO card, with Clara, Tomás and Áurea and their open signals.
The family
The latest from each engine —the close of a month, the budget of a year—, its signals in words and its reports as the engine left them.
What falls due
Close tasks and auditor requests with a date, next to the other families’ due dates.
A case
A budget signal on a project shows up on that project’s PMO page.
Where it works
The full path of the root folder, of the entity’s documents with their marker, of the state and of each configuration.
Ask
A written question for Clara, Tomás or Áurea, taken on their next run.
The Criterio CFO page in Rostrum
The Criterio CFO page in Rostrum, on the test data of a financial entity: the latest from Clara’s engine, its signals and its reports. The portal is in Spanish. It is test material written by the repository; it belongs to no organisation.
Rostrum: install, configure and use it with every family →

What it costs you today

The work Clara, Tomás and Áurea prepare, priced with your own numbers

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.

I work in

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

Controller’s team and accounting
Loaded monthly cost per personFully loaded: salary, benefits and overhead.
USD

Hours per week on each task

Building the close status against the checklist and its support/close-status · /close-scan
h
Reconciling the bank accounts/bank-reconcile
h
Reconciling the ledger against the sub-ledgers/account-reconcile
h
Tying out the trial balance and the ledger/ledger-check
h
Matching e-invoices against the books/einvoice-check
h
Putting together the answers to the auditor’s requests/audit-pack
h

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

Annual cost of the work the three prepare—
Hours a year3,634 h
Annual cost of the people included—
Share of that cost—

Write the monthly cost of each group to see what it costs.

Rostrum, the server, adds no hours here. It publishes what Clara, Tomás and Áurea wrote where the team sees it and answers people who never open a folder. Its effect is fewer “how is the close going?” emails, and we do not measure that yet.

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

This is what is already measured, with what sample and what margin.

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.

Clara, Tomás and Áurea process the entity’s documentation

Rounds 4, 5, 6, 7, 8, 9, 10, 11 and 12 · 33 entities · each one’s latest run

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.

banking · Colombiabanking · Costa Ricabanking · Hondurasbanking · Mexicobanking · Panamabanking · Perucooperatives · Ecuadorretail · Colombiaretail · Argentinaretail · Brazilretail · Chileretail · Costa Ricaretail · Guatemalaretail · Hondurasretail · Mexicoretail · Panamamining · Ecuadormining · Argentinamining · Brazilmining · Chilemining · Guatemalamining · Perucontrol entity · Colombiacontrol entity · Ecuadorcontrol entity · Perucontrol entity · Chilecontrol entity · Mexicocontrol entity · Brazilcontrol entity · Argentinacontrol entity · Panamacontrol entity · Guatemalacontrol entity · Costa Ricacontrol entity · Honduras

Round 11

Round 22

Round 33

Round 44

Round 55

Round 66

Round 77

Round 88

Round 99

Round 1010

Round 1111

Round 1212

  1. 1 · Round 1: Clara, Tomás and Áurea on banking · Colombia and control entity · Colombia.
  2. 2 · Round 2: Clara, Tomás and Áurea on banking · Colombia, control entity · Colombia, control entity · Ecuador, cooperatives · Ecuador, mining · Ecuador and retail · Colombia.
  3. 3 · Round 3: Clara, Tomás and Áurea on banking · Colombia, banking · Peru, control entity · Peru and mining · Peru.
  4. 4 · Round 4: Clara, Tomás and Áurea on banking · Colombia, banking · Peru, control entity · Colombia, control entity · Ecuador, control entity · Peru, cooperatives · Ecuador, mining · Ecuador, mining · Peru and retail · Colombia.
  5. 5 · Round 5: Clara, Tomás and Áurea on control entity · Chile, mining · Chile and retail · Chile.
  6. 6 · Round 6: Clara, Tomás and Áurea on banking · Mexico, control entity · Mexico and retail · Mexico.
  7. 7 · Round 7: Clara, Tomás and Áurea on control entity · Brazil, mining · Brazil and retail · Brazil.
  8. 8 · Round 8: Clara, Tomás and Áurea on control entity · Argentina, mining · Argentina and retail · Argentina.
  9. 9 · Round 9: Clara, Tomás and Áurea on banking · Panama, control entity · Panama and retail · Panama.
  10. 10 · Round 10: Clara, Tomás and Áurea on control entity · Guatemala, mining · Guatemala and retail · Guatemala.
  11. 11 · Round 11: Clara, Tomás and Áurea on banking · Costa Rica, control entity · Costa Rica and retail · Costa Rica.
  12. 12 · Round 12: Clara, Tomás and Áurea on banking · Honduras, control entity · Honduras and retail · Honduras.

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.

CountryEntitiesRoundRecord dataSignals foundCorrect signalsControls without false alarms
Colombia3424 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
Ecuador3425 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
Peru3425 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
Chile3524 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
Mexico3624 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
Brazil3724 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
Argentina3825 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
Panama3924 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
Guatemala31025 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 Rica31125 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
Honduras312625 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.

  • 12 Fixed and verified
  • 0 Fixed, to verify
  • 0 Open

Where they came from

  • the agent’s instructions4
  • the test data3
  • the test harness2
  • the code2
  • the answer key1

For auditing

The full detail of every run. Each block opens on its own.

Every run in the round45 runs

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 materialAgents · commandsSignalsRecord dataTokens
bankingRound 1 · ColombiaClara, Tomás · 1613 / 138 / 88.8 M + 0.8 M repeated
control entityRound 1 · ColombiaClara, Tomás · 160 / 08 / 88.5 M
control entityRound 10 · GuatemalaÁurea, Clara, Tomás · 60 / 08 / 83.9 M
miningRound 10 · GuatemalaÁurea, Clara, Tomás · 612 / 129 / 94.3 M
retailRound 10 · GuatemalaÁurea, Clara, Tomás · 612 / 128 / 84.5 M
bankingRound 11 · Costa RicaÁurea, Clara, Tomás · 613 / 139 / 94 M
control entityRound 11 · Costa RicaÁurea, Clara, Tomás · 60 / 08 / 83.9 M
retailRound 11 · Costa RicaÁurea, Clara, Tomás · 612 / 128 / 83.9 M
bankingRound 12 · HondurasÁurea, Clara, Tomás · 614 / 14213 / 2134.5 M
control entityRound 12 · HondurasÁurea, Clara, Tomás · 60 / 0212 / 2125.5 M
retailRound 12 · HondurasÁurea, Clara, Tomás · 613 / 13200 / 2004.4 M
bankingRound 2 · ColombiaClara, Tomás · 1613 / 138 / 88.4 M
control entityRound 2 · ColombiaClara, Tomás · 160 / 08 / 88.4 M
control entityRound 2 · EcuadorClara, Tomás · 160 / 08 / 88.5 M
cooperativesRound 2 · EcuadorClara, Tomás · 1611 / 118 / 89.2 M
miningRound 2 · EcuadorClara, Tomás · 1611 / 118 / 99.7 M
retailRound 2 · ColombiaClara, Tomás · 1610 / 108 / 88.8 M
bankingRound 3 · ColombiaÁurea, Clara, Tomás · 616 / 168 / 83.8 M
bankingRound 3 · PeruÁurea, Clara, Tomás · 612 / 128 / 84.8 M + 4.4 M repeated
control entityRound 3 · PeruÁurea, Clara, Tomás · 60 / 08 / 83.9 M
miningRound 3 · PeruÁurea, Clara, Tomás · 612 / 129 / 94.7 M
bankingRound 4 · ColombiaÁurea, Clara, Tomás · 616 / 168 / 84.7 M
bankingRound 4 · PeruÁurea, Clara, Tomás · 612 / 128 / 84.2 M + 1.1 M repeated
control entityRound 4 · ColombiaÁurea, Clara, Tomás · 60 / 08 / 83.9 M
control entityRound 4 · EcuadorÁurea, Clara, Tomás · 60 / 08 / 83.8 M
control entityRound 4 · PeruÁurea, Clara, Tomás · 60 / 08 / 84.3 M
cooperativesRound 4 · EcuadorÁurea, Clara, Tomás · 614 / 148 / 84.2 M + 1.6 M repeated
miningRound 4 · EcuadorÁurea, Clara, Tomás · 614 / 149 / 94.6 M
miningRound 4 · PeruÁurea, Clara, Tomás · 612 / 129 / 94.1 M
retailRound 4 · ColombiaÁurea, Clara, Tomás · 612 / 128 / 84.3 M + 2.7 M repeated
control entityRound 5 · ChileÁurea, Clara, Tomás · 60 / 08 / 84.5 M
miningRound 5 · ChileÁurea, Clara, Tomás · 612 / 128 / 84 M
retailRound 5 · ChileÁurea, Clara, Tomás · 614 / 148 / 84.2 M
bankingRound 6 · MexicoÁurea, Clara, Tomás · 616 / 168 / 84.3 M
control entityRound 6 · MexicoÁurea, Clara, Tomás · 60 / 08 / 84.4 M
retailRound 6 · MexicoÁurea, Clara, Tomás · 611 / 118 / 84.5 M
control entityRound 7 · BrazilÁurea, Clara, Tomás · 60 / 07 / 84.3 M
miningRound 7 · BrazilÁurea, Clara, Tomás · 612 / 129 / 93.9 M
retailRound 7 · BrazilÁurea, Clara, Tomás · 612 / 128 / 83.8 M
control entityRound 8 · ArgentinaÁurea, Clara, Tomás · 60 / 08 / 83.8 M
miningRound 8 · ArgentinaÁurea, Clara, Tomás · 612 / 129 / 94.3 M
retailRound 8 · ArgentinaÁurea, Clara, Tomás · 612 / 128 / 84.1 M
bankingRound 9 · PanamaÁurea, Clara, Tomás · 616 / 168 / 83.8 M
control entityRound 9 · PanamaÁurea, Clara, Tomás · 60 / 08 / 84.7 M
retailRound 9 · PanamaÁurea, Clara, Tomás · 611 / 118 / 84.3 M
The defects, one by one12 defects
  • 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

How the engine was tested33 entities

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

  • Round 13 with the agent, on all the material again.
  • The first use on a specific organisation’s documentation.
  • How many hours the agents give back is not measured yet. Until it is, we do not publish it.

A results page that only says what passed is advertising. What makes it auditable is what it says is not known yet.

Roadmap

The family grows in increments, each with its full test

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.

  1. 0.8.0

    Released

    Released on 2026-10-22

    Built, with the engine tested and a first round with the agent

    • Clara and Tomás’s commands, their skills and the calculation engine
    • DIAN and SRI electronic invoicing, processed from its official technical source
    • The root folder each agent searches for and, with permission, marks
    • The family in Rostrum, with what falls due and where each agent works
    • The first round with the agent: Clara and Tomás on banking and the Colombian control, with the defects it found fixed

    Test

    The engine, against 4 industries and 2 control entities; the agent, on banking and the Colombian control

  2. 0.9.0

    Released

    Released on 2026-10-23

    The full round with the agent

    • Clara and Tomás run their commands on the material of the four industries, as the PMO does in every round
    • What only minutes, emails and auditor letters carry, extracted and graded against the key
    • With a full round, the family is declared tested

    Test

    4 industries and 2 control entities, with the key the agent never sees

  3. 0.10.0

    Released

    Released on 2026-10-26

    Áurea, Peru and the formats of a real finance function

    • Áurea, the third agent: cash, payments and debt against their policy
    • Peru, with the SUNAT e-invoice reader built from its official guide
    • The test material in Excel, Word and PDF, as a finance function holds it, and the bank statement in PDF processed by the engine

    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

  4. 0.11.0

    Released

    Released on 2026-10-27

    Chile

    • The reader for Chile's electronic invoice, the SII DTE (F-16), with the RUT and its check digit
    • The 19% VAT (F-17) and the IFRS adopted by the Colegio de Contadores (F-18)
    • Material for retail, mining and a control entity in Chile

    Test

    Round 5: the three agents on the three Chilean entities, 26 of 26 signals, none extra and 24 of 24 data points

  5. 0.12.0

    Released

    Released on 2026-10-27

    Mexico

    • The reader for the SAT's CFDI 4.0, from its filling guide (F-19), with the RFC
    • The 16% VAT from the guide's catalogue and each entity's IFRS or NIF framework (F-20)
    • Material for banking, retail and a control entity in Mexico

    Test

    Round 6: the three agents on the three Mexican entities, 27 of 27 signals, none extra and 24 of 24 data points

  6. 1.0.0

    Released

    Released on 2026-10-29

    Brazil

    • Its entry in the country registry, the reader for its electronic invoice and its verified sources
    • Documents in Portuguese: the engine processes them like those of the other countries

    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

  7. 1.1.0

    Released

    Released on 2026-10-30

    Argentina, Panama, Guatemala and Costa Rica

    • Their entry in the country registry, with their verified sources
    • The readers for their electronic invoices: the ARCA voucher with its CAE, the DGI invoice with its CUFE, the SAT FEL with its authorization number and the Hacienda 4.4 voucher with its key
    • Three test entities per country, one of them a control with no seeded defects

    Test

    Rounds 8 to 11 with the three agents, one per country

  8. Latest released

    1.2.0

    Released

    Released on 2026-10-30

    Carries everything before it, with its fixes

    Honduras

    • Its entry in the country registry, with its verified sources
    • The invoice as a document, with no XML: the agent extracts the CAI, the authorized range, the issue deadline and the sequential number, and the engine validates them (decision 0024)
    • A new signal: the received invoice outside its authorized range or issued after its deadline
    • Three test entities, one of them a control with no seeded defects

    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.

  1. 01

    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 extracts
  2. 02

    Text 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 extracts
  3. 03

    The 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 extracts
  4. 04

    The 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 computes
  5. 05

    Signals

    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 computes

No 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

01

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.

02

Rostrum does not write

The portal publishes what the engine already wrote and says so with its date. It recalculates nothing.

03

Each document has one place

The period's books live in one folder, and both take them from there.

04

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.

05

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.

06

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.

07

One writer per file

The agent writes the record and the engine the results; neither writes the other's.

The detail

For whoever wants to review all of it

The commands with their input, process and report; the signals the code calculates; the folder structure; the sources, and the links to the repository.

Clara’s commands10 commands

In order of importance. The first one sets up the configuration the others need.

  1. 0finance-setup

    The configuration, the folder inventory and the first close record

    Input
    The root folder. Questions: entity and NIT, RUC, RUT or RFC, country, IFRS group (F-05, F-06, F-15, F-18, F-20), ERP, currency, period, thresholds, who approves, chart of accounts
    Process (calculated by the code)
    Inventory of what is there; compares the folder with the recommended structure; creates, moves or renames nothing
    Report
    Configuration saved; inventory by folder (what is there, what is missing, what is out of place and where it would go); checklist loaded or recommended; the first close record
  2. 1close-scan

    The close record up to date, with what changed and the new signals

    Input
    The whole period
    Process (calculated by the code)
    Extracts each document's text with its fingerprint; only reprocesses what changed; updates the record with the citation of every data point
    Report
    What changed in the period; what was added to the record; the new signals; what could not be processed and why
  3. 2close-status

    The close status: declared against evidenced, task by task

    Input
    00-referencia/checklist-cierre.xlsx, 40-soportes/ and the record
    Process (calculated by the code)
    Matches each task with its evidence, its date and its dependencies; calculates evidenced progress weighted by criticality
    Report
    Declared status against evidenced status; task table ordered by criticality and due date: done with evidence, done without evidence, overdue, on time, blocked by another; the close's critical path
  4. 3bank-reconcile

    Each bank account reconciled, with its open items by age

    Input
    Each folder in 20-bancos/: statement and ledger, with date, description, reference, amount and balance
    Process (calculated by the code)
    Matches by exact reference, then by amount and date within the configured window, then by amount; classifies every open item
    Report
    Per account: balance per bank, deposits in transit, outstanding cheques, unrecorded bank notes and balance per books, with the unexplained difference (it must be zero); open items by age (0–30, 31–60, 61–90 and over 90 days)
  5. 4account-reconcile

    Each account reconciled against its sub-ledger

    Input
    10-contabilidad/: the general ledger and auxiliares/ for receivables, payables, inventory, fixed assets and intercompany
    Process (calculated by the code)
    The logic of bank-reconcile: the general-ledger balance against the subledger balance of each account, and open items with their age
    Report
    Per account: balance per general ledger, balance per subledger, the difference and the items that explain it by age; the accounts whose reconciliation was not updated in the period
  6. 5ledger-check

    The trial balance and ledger tie-out, account by account

    Input
    10-contabilidad/: trial balance and general ledger; the chart of accounts in 00-referencia/
    Process (calculated by the code)
    Debits against credits; opening balance plus movements against closing balance; ledger against trial balance, account by account; balances contrary to the nature declared by the organisation's chart of accounts
    Report
    The overall tie-out; differences by account with their amount; accounts with a balance contrary to their nature
  7. 6einvoice-check

    Every e-invoice in the period against the books, not a sample

    Input
    30-facturacion/ and the accounting entries of the accounts the configuration links to sales and purchases
    Process (calculated by the code)
    Processes each XML with its official structure (F-01, F-04, F-13, F-16, F-19); matches by number, NIT, RUC, RUT or RFC and amount, and finds duplicates by CUFE, access key, series and number or folio
    Report
    Invoices without an entry, entries without an invoice, differences in amount or tax, duplicates; no tax opinion: whatever is a tax judgement is left as a question for the person
  8. 7audit-pack

    The auditor's package index, with the status of every request

    Input
    50-auditoria/ and the record
    Process (calculated by the code)
    Matches each request with its answer and its supporting documents
    Report
    The package index: request, answer, cited support and status (answered with support, answered without support, unanswered, overdue); moves or copies no files
  9. 8finance-wake

    What the close needs today; silent when nothing does

    Input
    The configuration and the record
    Process (calculated by the code)
    Decides what is due by cadence: daily during the close window, weekly outside it
    Report
    What ran and what it found; if nothing is due, it stays silent
  10. 9share-findings

    A summary with no data to share, only if you say yes

    Input
    The local trail of this agent's runs, in .criterio/corridas/
    Process (calculated by the code)
    The code builds a summary with no data —the plugin and its version, each command with how many times it ran and its median duration, each signal by its code with how many times it came up— and always asks whether you want to share it; nothing is sent (decision 0025)
    Report
    The summary as is and, with a yes, the link to the repository's finding template, which the person opens
Tomás’s commands8 commands

In order of importance. The first one sets up the configuration the others need.

  1. 0budget-setup

    The configuration, the inventory and each area's first budget record

    Input
    The root folder. Questions: entity, budget year, areas or cost centres with their owner, the approved version and its minutes, the mapping of accounts to budget lines (in 00-referencia/), the variance thresholds and, if the organisation uses the PMO family, where its records are
    Process (calculated by the code)
    Inventory of 10-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 nothing
    Report
    Configuration saved; inventory by folder (what is there, what is missing, what is out of place and where it would go); the approved version it took and the minutes behind it; each area's first record
  2. 1budget-scan

    The budget records up to date, with what changed and the new signals

    Input
    The whole presupuesto-<AAAA>/ and 10-contabilidad/ for each period of the year
    Process (calculated by the code)
    Extracts each document with its fingerprint; only reprocesses what changed; takes actual and committed spend to its line with the mapping in 00-referencia/; updates each record with the citation of every data point
    Report
    What changed; what was added to each record; the new signals; what could not be processed and why, including spend with no line in the mapping
  3. 2variance-report

    Approved, actual, committed, available and variance by area and account

    Input
    The records at cut-off and the approved version in force; if the organisation uses the PMO family, each project's budget in its record
    Process (calculated by the code)
    By area, line and account: approved, actual, committed and available (approved minus actual minus committed); actual against approved accumulated to cut-off, with its monthly phasing if there is one, and saying so if there is not; each project's budget against the one assigned to the area
    Report
    The table by area ordered by variance; lines over the threshold; spend with no budget line; projects whose budget does not tie out with the area's; status declared by the area against evidenced status
  4. 3forecast

    The year-end forecast, with its stated assumption

    Input
    Actual at cut-off, 20-compromisos/ and each area's forecast in 30-proyecciones/
    Process (calculated by the code)
    Two calculated forecasts, each with its written assumption: at run rate (actual plus the greater of the monthly average times the remaining months and what is committed) and at plan (actual plus what is left of the approved budget by its monthly phasing); compares them with the forecast the area delivered
    Report
    By area: approved, the area's forecast and the two calculated ones, with the difference of each; areas whose forecast exceeds what was approved; forecasts not updated within the configured days
  5. 4transfer-log

    Every transfer with its approval minutes, and those without

    Input
    The versions in 10-aprobado/ and the minutes in 40-actas/
    Process (calculated by the code)
    Compares each version with the previous one, line by line: every change in amount is a transfer, an addition or a reduction; matches it with the minutes that approve it by date, amount and source and destination lines
    Report
    The log: date, source, destination, amount, minutes and status (with minutes, without minutes, minutes with no change applied); transfers leave the total unchanged, and additions and reductions are shown separately
  6. 5budget-committee-pack

    The budget committee material as a decision pack

    Input
    The records, variance-report, forecast and transfer-log at cut-off, and the previous committee's minutes in 40-actas/
    Process (calculated by the code)
    Builds the decision points: lines over the threshold, forecasts over what was approved, transfers without minutes and the previous committee's commitments with their evidence
    Report
    The pack in the common format: each decision with its figure, its citation and who makes it; the previous minutes' commitments with their status; it does not recommend the decision
  7. 6budget-wake

    What the budget needs today; silent when nothing does

    Input
    The configuration and the records
    Process (calculated by the code)
    Decides what is due by cadence: when a new period appears in 10-contabilidad/, before each committee and once a week for commitments
    Report
    What ran and what it found; if nothing is due, it stays silent
  8. 7share-findings

    A summary with no data to share, only if you say yes

    Input
    The local trail of this agent's runs, in .criterio/corridas/
    Process (calculated by the code)
    The code builds a summary with no data —the plugin and its version, each command with how many times it ran and its median duration, each signal by its code with how many times it came up— and always asks whether you want to share it; nothing is sent (decision 0025)
    Report
    The summary as is and, with a yes, the link to the repository's finding template, which the person opens
Áurea’s commands7 commands

In order of importance. The first one sets up the configuration the others need.

  1. 0treasury-setup

    The configuration, the inventory and the first cash position

    Input
    The root folder, the same as Clara's and Tomás's. Questions: entity and period, the accounts in another currency, the thresholds for deviation, maturity and covenant margin, where the state is kept and the terms
    Process (calculated by the code)
    Inventory of what is there: which accounts have a statement in 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 nothing
    Report
    Configuration saved; inventory by folder; the first cash position
  2. 1treasury-scan

    Treasury up to date, with what changed and the new signals

    Input
    The statements in 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-contabilidad
    Process (calculated by the code)
    Processes each table with its fingerprint; reprocesses only what changed; calculates the seven signals
    Report
    What changed; the new signals; what could not be processed and why
  3. 2cash-position

    Each account's cash against its minimum and projection, and the currency exposure

    Input
    The period's statements, the projection and the policy
    Process (calculated by the code)
    The last balance of each account against its minimum and its projection; consolidated cash; the position in other currencies converted at the policy's rate
    Report
    By account: balance, minimum, projected and deviation; consolidated cash; exposure by currency against its limit
  4. 3payment-check

    Each scheduled payment against who may approve it

    Input
    The payment schedule, the policy and the signing-authority matrix
    Process (calculated by the code)
    Each payment against the approvals the policy requires for its amount and against the authority of each approver
    Report
    By payment: amount, who approved and how many approvals it requires; those without them and who signed without authority
  5. 4debt-watch

    Debt against its maturity and what its contract requires

    Input
    The debt register, the covenants and the trial balance of the period Clara closes
    Process (calculated by the code)
    The days left on each obligation and investment; each covenant calculated from the trial balance, against its limit
    Report
    The covenants with their value, limit and status; the obligations by maturity
  6. 5treasury-wake

    What treasury needs today; silent when nothing does

    Input
    The configuration and the tables
    Process (calculated by the code)
    Decides what is due: payments in the next five days, obligations entering their maturity window and a weekly review
    Report
    What ran and what it found; if nothing is due, it stays silent
  7. 6share-findings

    A summary with no data to share, only if you say yes

    Input
    The local trail of this agent's runs, in .criterio/corridas/
    Process (calculated by the code)
    The code builds a summary with no data —the plugin and its version, each command with how many times it ran and its median duration, each signal by its code with how many times it came up— and always asks whether you want to share it; nothing is sent (decision 0025)
    Report
    The summary as is and, with a yes, the link to the repository's finding template, which the person opens
What the code calculates31 signals

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_overdue

    A checklist task is past its date and has no evidence

  • close_task_done_without_evidence

    A task is marked done and no document supports it

  • trial_balance_unbalanced

    Debits and credits in the trial balance do not add up to the same amount

  • ledger_vs_trial_balance

    An account's ledger balance differs from the trial balance

  • bank_unreconciled

    There are statement movements with no entry, or entries with no movement

  • reconciling_item_aged

    A reconciling item is older than the configured days

  • reconciliation_stale

    An account's reconciliation was not updated in the period

  • account_unreconciled

    An account's ledger balance differs from its sub-ledger (receivables, payables, inventory, fixed assets, intercompany)

  • einvoice_not_recorded

    An issued or received e-invoice has no accounting entry

  • recorded_without_einvoice

    An entry that needs an e-invoice has none to support it

  • einvoice_amount_mismatch

    The XML amount or tax differs from the entry

  • einvoice_duplicate

    The same CUFE or access key is recorded twice

  • invoice_outside_authorization

    A received Honduran invoice falls outside its authorized range or was issued after its deadline: it does not support the sales-tax credit

  • audit_request_unanswered

    An auditor request has no supported answer

  • declared_close_vs_evidence

    The close is reported as closed and there are open signals that status does not explain

Tomás · 9

  • variance_over_threshold

    Actual spend at the cut-off departs from the budget by more than the configured percentage

  • committed_near_approved

    Actual plus committed approaches the approved amount with no headroom

  • forecast_over_approved

    The year-end forecast exceeds the approved amount

  • forecast_stale

    The area's forecast was not updated within the configured days

  • transfer_without_approval

    A transfer or change has no minutes approving it

  • budget_version_mismatch

    The report uses a budget version other than the approved one

  • spend_without_budget_line

    There is spend in an account or cost centre with no budget line

  • declared_vs_evidence

    The area reports itself within budget and the numbers do not support it

  • project_budget_mismatch

    A project's budget in its record differs from what the area has assigned

Áurea · 7

  • cash_below_minimum

    The balance of an account or of consolidated cash falls below the minimum the policy sets

  • cash_vs_forecast

    An account's actual balance deviates from its projection by more than the threshold

  • fx_exposure_over_limit

    The position in another currency, converted at the policy's rate, exceeds its limit

  • payment_without_approval

    A scheduled payment lacks the approvals the policy requires for its amount

  • signatory_without_authority

    Whoever approves a payment lacks the authority in the signing-authority matrix, or is not in it

  • covenant_at_risk

    A debt-contract ratio, calculated from the trial balance Clara closes, crosses its limit or comes within the margin of it

  • maturity_near

    A debt obligation or an investment matures within the configured days

The folder structurefinanzas/

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

FolderWhat goes in itAgent
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 covenantsClara, Tomás, Áurea

<AAAA-MM>/ · One accounting period, numbered in the order the close is worked

FolderWhat goes in itAgent
10-contabilidad/Trial balance and general ledger exported from the ERP, and auxiliares/ with one file per account; budget execution comes from here tooClara, Tomás
20-bancos/One folder per account, <bank>-<last 4 digits>, with the statement and the book ledgerClara, Áurea
30-facturacion/emitidas/ and recibidas/, with the DIAN (F-01), SRI (F-04), SUNAT (F-13), SII (F-16) or SAT (F-19) XMLClara
40-soportes/The evidence for each checklist task —minutes, emails, signed reconciliations—, with the task id at the start of the nameClara
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

FolderWhat goes in itAgent
10-aprobado/The approved budget and every version, with its date in the nameTomás
20-compromisos/Purchase orders and commitments exported from the ERP, with the cut-off date in the nameTomás
30-proyecciones/Each area's forecast, one per area and dateTomás
40-actas/Minutes of the budget committee, of approvals and of transfersTomá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.

The sources39 of 39 verified

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.

  • F-01

    DIAN · Anexo técnico de la factura electrónica de venta

    Version 1.9 · dian.gov.co ↗

    Verified
  • F-02

    DIAN · Resolución 000165 de 2023 (sistema de facturación electrónica)

    normograma ↗

    Verified
  • F-03

    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

    Resolución ↗ · Concepto ↗

    Verified
  • F-04

    SRI · Ficha técnica de comprobantes electrónicos, esquema offline

    Version 2.34 (27 de julio de 2026) · sri.gob.ec ↗

    Verified
  • F-05

    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 ↗

    Verified
  • F-06

    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

    Superintendencia ↗ · Texto en IAS Plus ↗

    Verified
  • F-07

    DIAN · Resolución 227 de 2025, Resolución Única en materia tributaria, aduanera y cambiaria (23 de septiembre de 2025, Diario Oficial 53.254)

    normograma ↗

    Verified
  • F-08

    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 ↗

    Verified
  • F-09

    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 ↗

    Verified
  • F-10

    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

    Nota de LEXIS (secundaria) ↗

    Verified
  • F-11

    O*NET · 11-3031.01 Treasurers and Controllers

    onetonline.org ↗

    Verified
  • F-12

    O*NET · 13-2031.00 Budget Analysts

    onetonline.org ↗

    Verified
  • F-13

    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 ↗

    Verified
  • F-14

    SUNAT · Cartilla 7, El IGV (portal de cultura tributaria)

    Version 2025 · cultura.sunat.gob.pe ↗

    Verified
  • F-15

    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 ↗

    Verified
  • F-16

    SII · Formato Documentos Tributarios Electrónicos

    Version 2.5 (febrero de 2026) · sii.cl ↗

    Verified
  • F-17

    SII · Preguntas frecuentes: ¿Cuál es la tasa del Impuesto al Valor Agregado (IVA)?

    revisada el 10 de junio de 2025 · sii.cl ↗

    Verified
  • F-18

    IFRS Foundation · perfil de jurisdicción de Chile

    actualizado el 16 de junio de 2016 · ifrs.org ↗

    Verified
  • F-19

    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 ↗

    Verified
  • F-20

    IFRS Foundation · perfil de jurisdicción de México

    actualizado el 16 de junio de 2016 · ifrs.org ↗

    Verified
  • F-21

    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 ↗

    Verified
  • F-22

    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 ↗

    Verified
  • F-23

    IFRS Foundation · perfil de jurisdicción de Brasil

    actualizado el 7 de mayo de 2026 · ifrs.org ↗

    Verified
  • F-24

    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 ↗

    Verified
  • F-25

    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 ↗

    Verified
  • F-26

    IFRS Foundation · perfil de jurisdicción de Argentina

    actualizado el 27 de diciembre de 2023 · ifrs.org ↗

    Verified
  • F-27

    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 ↗

    Verified
  • F-28

    DGI de Panamá · ITBMS, generalidades

    La página consultada el 30 de octubre de 2026 · dgi.mef.gob.pa ↗

    Verified
  • F-29

    IFRS Foundation · perfil de jurisdicción de Panamá

    actualizado el 13 de septiembre de 2023 · ifrs.org ↗

    Verified
  • F-30

    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 ↗

    Verified
  • F-31

    SAT de Guatemala · FEL, Reglas y validaciones

    Versión 2.1, octubre de 2026 · sat.gob.gt ↗

    Verified
  • F-32

    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 ↗

    Verified
  • F-33

    IFRS Foundation · perfil de jurisdicción de Guatemala

    actualizado el 16 de junio de 2016 · ifrs.org ↗

    Verified
  • F-34

    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 ↗

    Verified
  • F-35

    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 ↗

    Verified
  • F-36

    IFRS Foundation · perfil de jurisdicción de Costa Rica

    actualizado el 8 de febrero de 2017 · ifrs.org ↗

    Verified
  • F-37

    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 ↗

    Verified
  • F-38

    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 ↗

    Verified
  • F-39

    IFRS Foundation · perfil de jurisdicción de Honduras

    actualizado el 21 de febrero de 2017 · ifrs.org ↗

    Verified
In the repository8 links

Installation, setup and terms

It installs in minutes. Before the first analysis, you accept the 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.

Step 1

Install

  1. 01Customize → Browse plugins → Personal.
  2. 02Press + → Add marketplace from GitHub.
  3. 03Enter josenanez/criterio.
  4. 04Install the agent for your role: Clara (Controller), Tomás (FP&A) or Áurea (Treasury).

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

  • A folder with the documentation, as it is. A messy folder is the normal case.
  • A paid Claude plan, and the desktop app if the documents live on your machine.
  • Fifteen minutes for each.
Step 2

Set up

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

  1. 1Which of the folders it finds is the entity’s finance folder
  2. 2The entity, its NIT or RUC and its country
  3. 3The period you are closing
  4. 4Who approves the close
  5. 5The terms

How it asks

  • One question at a time. Never a form.
  • Every question comes with a suggested answer, and “I don’t know” is a valid answer.
  • It does not ask what it can find out by looking at the folder.
  • It does not ask you to type a path: it searches for the folder, offers it with the reason and, if you say yes, marks it with a visible file so you recognise it at a glance.
  • Nobody edits the configuration by hand: if you want to change something, you say so in the conversation.

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.

/criterio-finance:finance-setupWhat Clara’s setup looks like
ClaraI am Clara, Criterio’s controller. I process the books and their supporting documents and say what does not tie out. I searched your working folder and found one that looks like an entity’s finance folder: 900123456-entidad-de-prueba, with nine periods and the 2026 budget. Is that the one?
An illustrative walk-through on the family’s banking test material: a test financial entity, 57 files. Nothing leaves your browser.
Step 3

The terms

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.

  1. 1

    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.

  2. 2

    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.

  3. 3

    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.

  4. 4

    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

  • You get working drafts ready for review, and every version arrives tested: its evidence is public.
  • Every data point carries its citation: whoever decides checks it in the original document in seconds.
  • It works with what is written; what was agreed outside the documents comes from your team.
  • Your documents are processed on the AI platform where you run it; your organisation decides which folders go in.
  • Warranty and liability: those of the Apache 2.0 licence.
  • Every version is accepted again and leaves a receipt in Markdown and PDF. If anyone modifies it, its SHA-256 fingerprint stops matching and it is void.

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

  • It produces working drafts, not decisions.
  • It knows what was written, not what was said outside the documents.
  • All three were tested with the engine and with the agents on 33 entities in Colombia, Guatemala, Costa Rica, Honduras, Ecuador, Peru, Chile, Mexico, Brazil, Argentina and Panama; the latest round is round 12. Their first use on a specific organisation’s documentation is the next step.
See the repository ↗

Frequently asked questions

What people usually ask when they reach the family

What it is

What do Clara and Tomás do?

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.

Do they replace the controller or the budget team?

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.

What do they never do?

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.

Which accounting framework do they cover?

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

Which documents do they process?

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.

Do I need to change my ERP?

No. They process the Excel or CSV exports the ERP already produces. Neither of them connects to the ERP or writes to it.

How do I organise the folder?

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.

How long until the first result?

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.

Where do I see what they found?

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

What data was it tested on?

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.

How do you know the engine got it right?

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.

Is the whole family tested yet?

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

Do my documents leave my organisation?

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.

What is stored, and where?

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

If Criterio created value for you, help keep it moving.

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 an amount

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

Approach
Control and reporting.
Commitment
Generating, sharing and preserving knowledge is a professional obligation.
What it is not
It does not replace the controller or the financial planning team, and does not decide for them: it processes what the function already has and says what does not tie out.
Licence
Apache 2.0.
What comes next
Brazil, with its round, in 1.0.
Legal notice and version register →

José Ñáñez