← Agents

Criterio CCO

The commercial function

Evidence before the decision

Every forecast that is committed, backed by its evidence

Augusto sets the CRM pipeline next to its evidence and the forecast next to what backs it. Valeria follows every sale to its contract and its invoice, and every discount and commission against its policy. They process the exports, not the CRM. They do not set targets, approve discounts or rate whoever sells.

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.

Augusto and Valeria are Criterio’s CCO 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 15 entities of the material, in 5 countries: 10 industry entities —4 industries— and 5 control entities. The engine, also, on every change to the repository. On the map, each country with its evolution.

5 countries tested, in the order they came in · signals and fields from each entity’s latest run

Round 1ColombiaRetail, Technology, Control entityRound 141 of 41 signals · 15 of 15 fields
Round 1MexicoManufacturing, Professional services, Control entityRound 139 of 39 signals · 15 of 15 fields
Round 2EcuadorRetail, Technology, Control entityRound 238 of 38 signals · 15 of 15 fields
Round 2PeruManufacturing, Professional services, Control entityRound 240 of 40 signals · 15 of 15 fields
Round 2ChileRetail, Technology, Control entityRound 239 of 39 signals · 15 of 15 fields

The progress map

5 countries tested

Map of Latin America. Tested: Colombia, Mexico, Ecuador, Peru, Chile. Next: . The other countries are not in yet.

Borders: Natural Earth, public domain.

Chiletested since round 2

What was tested here

Identification and currency

The RUT of the entity and of each customer, in its country’s form · CLP

The CRM exports are processed from their verified source, field by field. No regulation of the country enters the calculation: the country sets the identification and the currency.

Latest round: 2

  • Technology20 of 20 signals · 5 of 5 data items

    42 documents · 5 defects seeded on purpose

  • Retail19 of 19 signals · 5 of 5 data items

    44 documents · 5 defects seeded on purpose

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

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

Evolution

  1. Round 2 · first time · Technology, Retail, Control entity · 39 of 39 signalsno defects
See the evidence, round by round →

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

Criterio · CCO family

Two agents for the commercial function

They process the CRM exports, the quotes and the commission settlement, and tell you which forecast has no backing and which sale never reached the invoice.

CRITERIO · CCOREADY
AUGUSTO
The forecast
VALERIA
From sale to invoice
ROSTRUM
The portal
THE ENTITY’S RECORDSThe only contract. Augusto and Valeria never talk to each other: they talk through their records, and with Fidel and Clara through theirs.
PRINTER · CRITERIOSHEET 1

CRITERIO · CCO FAMILY

Where the family stands: not yet launched, in its version 0.3.0. The engine, with its deterministic test on synthetic material from Colombia, Mexico, Ecuador, Peru and Chile, and the Salesforce, HubSpot, Dynamics 365 and Zoho exports; both agents passed their two rounds with a key they never see.

Where each name comes from

Augusto
· from the Latin augur, the one who reads the signs before they happen: the forecast against what backs it
Valeria
· from the Latin valere, to be worth: what a sale is worth once it is signed and invoiced
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 two, 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 other. The screenshots are Rostrum, the portal for every family, publishing what the engine calculated on the test material of a retail chain in Colombia, before the round with the agents.

criterio-sales

From the Latin augur, the one who reads the signs before they happen: the forecast against what backs it.

Processes the CRM exports, their field history, each opportunity’s evidence and the sales committee’s minutes: the pipeline against its evidence, the forecast against what backs it and the target against what closed. You commit the forecast.

What only he does

Checks every opportunity against the document its stage requires and counts how many times each close date slipped. Adds up what closed and what is weighted with evidence, and sets it next to what was committed in the committee.

What he answers

  • Which opportunity sits in a stage without the document that stage requires
  • Which open opportunity has no activity within the configured days
  • Which close date slipped more times than configured
  • Whether what was committed exceeds what backs it, beyond the tolerance
  • Whether what closed so far drifts from the target, prorated by the days of the period

Never

Writes to the CRM, contacts a customer, sets the target, commits the forecast or rates whoever sells.

Rostrum · Entidad comercial de prueba
The retail chain in October with 3 open signals: what was committed in the committee, 525 million, against 350 million that back it; an opportunity at «Compromiso» without its purchase order, and a close date that slipped three times.
The retail chain in October with 3 open signals: what was committed in the committee, 525 million, against 350 million that back it; an opportunity at «Compromiso» without its purchase order, and a close date that slipped three times.Screenshot of Rostrum on the retail chain’s test material, October 2026 period. The engine ran with the correct extraction, taken from the material’s key, before the round with the agents. It is material written by the repository; it belongs to no organisation.
Extends
Whoever builds the forecast
Instances
One per entity
Setup
15 min · 6 questions
Cadence
With each new export and before the period closes; if nothing is due, it stays quiet
Needs from you
The CRM exports and the committee’s minutes saved in his folder
Set up with/criterio-sales:sales-setup

Its commands, by group

Start and rhythm2 commands+
sales-setupsales-wake
The forecast4 commands+
pipeline-scanpipeline-checkforecast-checktarget-check

6 commands · 4 skills

In Rostrum

Rostrum publishes what Augusto and Valeria already wrote, with the date they wrote it. The commissions Valeria reviews do not appear there unless her configuration says so: they are a person’s pay.

How it enters the portal

  1. Augusto runs /criterio-sales:sales-setup, leaves its configuration in .criterio/comercial/<entity>/ and marks its root folder with _CRITERIO_COMERCIAL.txt.
  2. Valeria runs /criterio-revenue:revenue-setup, leaves its configuration in .criterio/ingresos/<entity>/ and marks its root folder with _CRITERIO_COMERCIAL.txt.

Rostrum adds it to the map and raises the portal; commissions stay out unless Valeria’s configuration says they are published:

/plugin install criterio-server@criterio
/criterio-server:server-setup
/criterio-server:server-start

What it has in Rostrum

Home
The Criterio CCO card, with Augusto, Valeria and their open signals.
The family
The latest from its engine, its signals in words and its reports as they left them.
What is due
The pipeline’s close dates, next to the other families’ deadlines.
Where it works
The full path of the sales folder with its mark, of the state and of the configuration.
Ask
A written question for Augusto or Valeria, who takes it on their next run.
The Criterio CCO page in Rostrum
The Criterio CCO page in Rostrum, on the test material of a retail chain in Colombia: what Augusto and Valeria left in their round, with a key they never see.
Rostrum: install, configure and use it with every family →

What it costs you today

The work Augusto and Valeria prepare, priced with your own numbers

Augusto extends whoever builds the forecast; Valeria, whoever follows the sale through to the invoice. Enter how many people do each job, 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

Whoever builds the forecast
Loaded monthly cost per personFully loaded: salary, benefits and overhead.
USD

Hours per week on each task

Consolidating the CRM exports and seeing what changed in the pipeline/pipeline-scan
h
Checking each opportunity against the document its stage requires/pipeline-check
h
Backing the committed forecast, opportunity by opportunity/forecast-check
h
Comparing what closed against the period’s target/target-check
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

Augusto

Whoever builds the forecast · 12 h a week each (30% of the week)

1,104 ha year

—a year

Valeria

Whoever follows the sale through to the invoice · 10 h a week each (25% of the week)

920 ha year

—a year

Annual cost of the work Augusto and Valeria prepare—
Hours a year2,024 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. If the configuration says so, Rostrum puts their reports where the sales committee sees them; commissions do not appear there unless the configuration says so. Its effect is fewer “where does this forecast come from?” questions before the committee; we do not measure that yet.

What this number is and what it is not

It is the cost of the hours the commercial function spends today on tasks Augusto and Valeria prepare: checking the pipeline against its evidence, backing the forecast, reviewing discounts, chasing each won sale’s contract and invoice, reviewing commissions. It is not a saving. The person still reviews and decides: the forecast, the discount and the target are theirs.

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 5 controls

The engine, on all of them. The agents, so far on all 15 entities of the material, in 5 countries. The control entities carry no defects at all: any signal is a failure.

4 commands per entity

Augusto and Valeria 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.

567 documents

What the material of the measured entities holds, in text, PDF, CSV, JSON, Excel and Word. The key is not counted: the agents do not have it.

61.3 million tokens

The work of the language model (LLM) in each entity’s latest run —rounds 1 and 2—, with its verifications. No command was repeated.

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.

Augusto and Valeria process the entity’s documentation

Rounds 1 and 2 · 15 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

95.1% or higher

Measured: 100%. The headline is the floor of the 95% confidence margin: what the test supports.

75 of 75 data points extracted from the written documents match the key.

Measured

Verification of CCO-2: Augusto, Valeria on professional services · Mexico, 5 of 5 data points.

Verification of : Augusto, Valeria on technology · Colombia, 5 of 5 data points.

Verification of CCO-3: Augusto, Valeria on control entity · Mexico, 5 of 5 data points.

Verification of CCO-4: Augusto, Valeria on control entity · Peru, 5 of 5 data points.

95% confidence margin (Wilson): 95.1–100%

Signals found

98% or higher

Measured: 100%. The headline is the floor of the 95% confidence margin: what the test supports.

197 of 197 signals the key expected.

Measured

95% confidence margin (Wilson): 98–100%

Correct signals

98% or higher

Measured: 100%. The headline is the floor of the 95% confidence margin: what the test supports.

197 of 197 signals raised were correct.

Measured

95% confidence margin (Wilson): 98–100%

Controls without false alarms

5 of 5

5 of 5 control entities without a single extra signal.

Measured

60 commands run on 15 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.

retail · Chileretail · Colombiaretail · Ecuadormanufacturing · Mexicomanufacturing · Peruprofessional services · Mexicoprofessional services · Perutechnology · Chiletechnology · Colombiatechnology · Ecuadorcontrol entity · Colombiacontrol entity · Ecuadorcontrol entity · Perucontrol entity · Chilecontrol entity · Mexico

Round 11

Round 1 · verification2

Round 23

Round 2 · verification4

  1. 1 · Round 1: Augusto and Valeria on control entity · Colombia, control entity · Mexico, manufacturing · Mexico, retail · Colombia, professional services · Mexico and technology · Colombia.
  2. 2 · Verification in round 1: Augusto, Valeria on control entity · Mexico, after fixing . Verification in round 1: Augusto, Valeria on control entity · Mexico, after fixing CCO-3. Verification in round 1: Augusto, Valeria on professional services · Mexico, after fixing CCO-2. Verification in round 1: Augusto, Valeria on technology · Colombia, after fixing .
  3. 3 · Round 2: Augusto and Valeria on control entity · Chile, control entity · Ecuador, control entity · Peru, manufacturing · Peru, retail · Chile, retail · Ecuador, professional services · Peru, technology · Chile and technology · Ecuador.
  4. 4 · Verification in round 2: Augusto, Valeria on control entity · Peru, after fixing CCO-4.

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
Colombia3115 of 15 · 100%95% CI 79.6–100%41 of 41 · 100%95% CI 91.4–100%41 of 41 · 100%95% CI 91.4–100%1 of 1
Ecuador3215 of 15 · 100%95% CI 79.6–100%38 of 38 · 100%95% CI 90.8–100%38 of 38 · 100%95% CI 90.8–100%1 of 1
Peru3215 of 15 · 100%95% CI 79.6–100%40 of 40 · 100%95% CI 91.2–100%40 of 40 · 100%95% CI 91.2–100%1 of 1
Chile3215 of 15 · 100%95% CI 79.6–100%39 of 39 · 100%95% CI 91–100%39 of 39 · 100%95% CI 91–100%1 of 1
Mexico3115 of 15 · 100%95% CI 79.6–100%39 of 39 · 100%95% CI 91–100%39 of 39 · 100%95% CI 91–100%1 of 1

Defects the rounds found · 4

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.

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

Where they came from

  • the test harness1
  • the test data1
  • the code1
  • the agent’s instructions1

For auditing

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

Every run in the round20 runs

Augusto and Valeria run their commands on each entity’s material, with a token cap set before starting. What they write is graded against the key they never see: every signal by its name, and every data point in the records against what the proposals, the minutes and the quotes carry.

Test materialAgent · commandsSignalsRecord dataTokens
control entityRound 1 · ColombiaAugusto, Valeria · 40 / 05 / 53.2 M
control entityRound 1 · MexicoAugusto, Valeria · 40 / 0 · +25 / 52.9 M
control entityRound 1 · Mexico · verificationAugusto, Valeria · 40 / 05 / 52.9 M
control entityRound 1 · Mexico · verificationAugusto, Valeria · 40 / 05 / 52.9 M
manufacturingRound 1 · MexicoAugusto, Valeria · 420 / 205 / 53.1 M
retailRound 1 · ColombiaAugusto, Valeria · 421 / 215 / 52.8 M
professional servicesRound 1 · MexicoAugusto, Valeria · 415 / 195 / 53.2 M
professional servicesRound 1 · Mexico · verificationAugusto, Valeria · 419 / 195 / 53.3 M
technologyRound 1 · ColombiaAugusto, Valeria · 416 / 205 / 53.5 M
technologyRound 1 · Colombia · verificationAugusto, Valeria · 420 / 205 / 53.2 M
control entityRound 2 · ChileAugusto, Valeria · 40 / 05 / 52.6 M
control entityRound 2 · EcuadorAugusto, Valeria · 40 / 05 / 53.1 M
control entityRound 2 · PeruAugusto, Valeria · 40 / 0 · +15 / 52.9 M
control entityRound 2 · Peru · verificationAugusto, Valeria · 40 / 05 / 52.9 M
manufacturingRound 2 · PeruAugusto, Valeria · 420 / 205 / 53.2 M
retailRound 2 · ChileAugusto, Valeria · 419 / 195 / 53.2 M
retailRound 2 · EcuadorAugusto, Valeria · 418 / 185 / 53.2 M
professional servicesRound 2 · PeruAugusto, Valeria · 420 / 205 / 53.1 M
technologyRound 2 · ChileAugusto, Valeria · 420 / 205 / 53 M
technologyRound 2 · EcuadorAugusto, Valeria · 420 / 205 / 53.1 M
The defects, one by one4 defects
  • CCO-1Fixed and verified

    The harness graded the evidence in the sales record as wrong because Augusto wrote it in a different order: all nineteen proposals and purchase orders were there, with their amount, date and citation.

    A list of records in the record is graded without order: each record in the key against a different one in the record. Retail's first run was regraded under the new rule, with no commands repeated, and the other entities were graded with it.

    the test harness · retail · Colombia · 13b91ad2

  • CCO-2Fixed and verified

    In Mexican services and Colombian technology, the key expected a close date moved twice to be flagged, under a threshold of once that no document of the entity stated. Augusto took the default threshold, twice, and did not raise the four opportunities in each entity.

    Each entity carries its sales policy in 00-referencia/ with the two thresholds the setup asks for. Both agents' setup and processing were repeated on the two entities: 19 of 19 and 20 of 20 signals, none extra.

    the test data · professional services · Mexico · 30197756

  • CCO-3Fixed and verified

    In the Mexican control, with the HubSpot export, the configuration was left without the associated-company column. Without it Valeria did not match what was won against what was invoiced, the plan came out at zero and the two commission settlements came out as differences: two extra signals in a control. In Colombian technology, with the same HubSpot, she did map it.

    First the engine recognised the column by the name «Associated Company», and run control-mx-2 came out clean; but HubSpot's source (F-05) does not fix that name, and it was withdrawn. The fix that stays is in the configuration: with HubSpot, without the associated-company column the configuration does not pass, and the setup has to say which one it is. Both agents' setup and processing were repeated on the Mexican control: Augusto stated which column carries the associated company and there was no signal, as it should be.

    the code · control entity · Mexico · 5aefad59

  • CCO-4Fixed and verified

    In the Peruvian control, with the Zoho export, Augusto did not map the «Last Activity Time» column. Last activity is not a Zoho standard field (F-08), so the engine took stalling from the cuts: an opportunity that was being worked and did not change stage, amount or close date came out as stalled. That was one extra signal in a control. In Ecuador and Chile, with the same Zoho, he did not map it either, but there that opportunity was the seeded stalled one.

    When an export carries a column that looks like the last activity and is not mapped, `exportacion` asks about it with the column it proposes. The setup asks that question and, on a yes, records it in `crm.columns`. Both agents' setup and processing were repeated on the Peruvian control: Augusto recorded «Last Activity Time» as the last activity and there was no signal, as it should be.

    the agent’s instructions · control entity · Peru · ada6141f

How the engine was tested15 entities

Synthetic material from manufacturing (Mexico), manufacturing (Peru), retail (Chile), retail (Colombia), retail (Ecuador), professional services (Mexico), professional services (Peru), technology (Chile), technology (Colombia), technology (Ecuador), plus 5 control entities with no defects: 15 entities with their CRM exports, committee, quotes and commission settlement, and a key the engine never sees.

197

signals planted on purpose, each with its key

9 of 9

family signals planted at least once

5

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 material also tests the rules of real operation: six export formats —Salesforce by API and by report, HubSpot in CSV and in Excel, and any CRM in CSV and in Excel—, and that no record keeps a customer’s email or phone.

What comes next

  • Round 3 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.1.0

    Released

    Released on 2026-10-28

    Augusto and Valeria, built, with the engine tested

    • The commands, their skills and the engine, with the nine signals: Augusto's pipeline, forecast and target; Valeria's discount, contract, invoice and commission
    • Salesforce and HubSpot exports, and any CSV or Excel with its column mapping
    • What was won against Fidel's contracts and what was signed against Clara's invoices, through their records
    • Colombia and Mexico, with control entities

    Test

    The engine against the key of all the material: six entities from Colombia and Mexico, with their controls

  2. 0.2.0

    Released

    Released on 2026-10-29

    The full round with the agents

    • Augusto and Valeria run their commands on every entity in the material, with a key they never see
    • The material seeds at least 73 signals: what a 95% floor with no misses needs (decision 0020)
    • Every defect the round finds, with its fix and its verification

    Test

    Round 1 with both agents on the material's six entities: 72 of 80 seeded signals and 30 of 30 data points on the first run, with two extra signals in a control, and 80 of 80 with none extra after verifying the fixes; the three defects it found, with their fix and their verification

  3. Latest released

    0.3.0

    Released

    Released on 2026-10-29

    Carries everything before it, with its fixes

    Ecuador, Peru and Chile, and Microsoft Dynamics and Zoho

    • The three countries already in the country registry, with their material and their round
    • The Microsoft Dynamics and Zoho exports, each from its verified source

    Test

    Round 2 with both agents on the nine entities of Ecuador, Peru and Chile, three on Dynamics and three on Zoho: 117 of 117 seeded signals and 45 of 45 data items on the first run, with one extra signal in a control; the defect it found, in the instructions, with its fix and its verification

The same roadmap lives in the repository, in families/criterio-cco/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 calculates everything else. It is generative AI plus a deterministic engine, applied to the commercial function.

  1. 01

    Your exports

    The CRM exports with their date, their field history, each opportunity’s evidence, the committee’s minutes, the quotes and the commission settlement. As they are, where they are.

    It does not connect to the CRM.

    The model extracts
  2. 02

    The pipeline

    The engine processes each export from its format —Salesforce, HubSpot or any CRM in CSV or Excel— and compares one cut with the previous one. What it cannot process it declares, with the reason.

    A column it does not recognise is asked about, not guessed.

    The model extracts
  3. 03

    The record

    One per entity and period for each agent: each opportunity’s evidence, the forecast committed in the minutes and each quote with its discount and approval, every data point with its citation.

    “Not found” is a valid answer.

    The model extracts
  4. 04

    The engine

    Each stage against its evidence, the days without activity, the close dates that slip, what was committed against what is weighted with evidence, the prorated target, each discount against its level, what was won against its contract and invoice, and the commission against the plan.

    Deterministic and tested.

    The code calculates
  5. 05

    Signals

    Only what crossed a threshold: what has no evidence, what stalled, what slipped and what never reached the invoice. If nothing crossed one, it says nothing.

    Silence is the feature.

    The code calculates

No amount, percentage, day or count in a report comes from an estimate. And what is said 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, and with Fidel and Clara through theirs. Valeria does not process a contract or an invoice again.

02

Rostrum does not write

It serves what the engine already wrote, with its date, and recalculates nothing. Commissions do not appear there unless the configuration says so.

03

Exports, never systems

No agent connects to the CRM, and none writes to it.

04

Committed and backed are never merged

What the committee commits goes in the record; what backs it is calculated by the engine, and the difference is the signal.

05

The model extracts, the code calculates

Every amount, percentage, day or count in a report comes from the engine. If the engine does not give it, it is not written.

06

No agent decides

The forecast, the discount, the target and the commission belong to a person.

07

It does not rate people, and keeps no contact data

The signal belongs to the opportunity, not to whoever owns it, and the record keeps the account, not anyone’s email or phone.

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.

Augusto’s commands7 commands

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

  1. 0sales-setup

    The configuration, the inventory and the format of each CRM export

    Input
    The root folder. Questions: entity and its tax ID, country, the period, which CRM the export in 10-crm/ comes from —Salesforce, HubSpot, Dynamics 365, Zoho or another, in CSV or Excel— and, if another, which column carries each field, the stage table in 00-referencia/ with the document each stage requires and its probability, how many days without activity stall an opportunity and how many times a close date may slip
    Process (calculated by the code)
    Inventory of what is there; recognises each export's format by its columns (F-02, F-04); compares the folder with the recommended structure; creates, moves or renames nothing
    Report
    Configuration saved; inventory by folder; each export with its format, its date and its opportunities; the missing columns; the period's first record
  2. 1pipeline-scan

    The period record up to date, with what changed in the pipeline and the new signals

    Input
    The whole 10-crm/, 20-comite/ and 30-evidencia/
    Process (calculated by the code)
    The code processes each export with its date and compares every opportunity with the previous export: stage, amount and close date; the agent takes to the period record every document in 30-evidencia/ —the proposal, the purchase order, the acceptance record— with its opportunity, type, amount and date, and the committed forecast from the committee minutes, every data point with its citation; the engine validates the record
    Report
    What changed between the previous export and the latest; new, won and lost opportunities; the new signals; what could not be processed and why
  3. 2pipeline-check

    Every opportunity against its evidence: the one without it, the stalled one and the one whose close date slips

    Input
    The latest export in 10-crm/, the earlier ones, the stage table in 00-referencia/ and the period record
    Process (calculated by the code)
    Every open opportunity against the document its stage requires; the days since its last activity; the times its close date slipped from one export to the next, or in the field history if it arrives
    Report
    The opportunities without their stage's document, the stalled ones and the ones whose close date slipped, each with its citation; without rating whoever owns it
  4. 3forecast-check

    The committed forecast against what backs it, opportunity by opportunity

    Input
    The committed forecast in the record, the latest export in 10-crm/ and the stage table in 00-referencia/
    Process (calculated by the code)
    What closed in the period plus the open opportunities closing in it with their stage's evidence, each at its amount and its stage's probability, against what was committed; the difference against the configured tolerance
    Report
    What was committed, what closed, what is weighted with evidence and what is weighted without it; the difference; the opportunities that back it and those that do not
  5. 4target-check

    The period's target against what closed at the cut-off, by line

    Input
    The targets in 00-referencia/ and the latest export in 10-crm/
    Process (calculated by the code)
    What was won with a close date in the period up to the cut-off date against the period's target prorated by the days elapsed, by line if the target has one; the difference against the configured threshold
    Report
    The target, what was expected at the cut-off, what closed and the difference by line; never by person
  6. 5sales-wake

    What is due today in the pipeline; if nothing is due, it stays quiet

    Input
    The configuration and the record
    Process (calculated by the code)
    Decides what is due: a new export in 10-crm/, new committee minutes, the period's end coming up and a weekly review
    Report
    What ran and what it found; if nothing is due, it stays quiet
  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
Valeria’s commands7 commands

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

  1. 0revenue-setup

    The configuration, the inventory and the accounts still missing to cross with Fidel and Clara

    Input
    The root folder. Questions: entity and its tax ID, country, the period, the discount matrix, the commission plan and the accounts table in 00-referencia/, where Fidel's contract records and Clara's invoicing records are, and within how many days a signed contract is invoiced
    Process (calculated by the code)
    Inventory of what is there; compares the folder with the recommended structure; checks that every won account has its tax id in the accounts table; creates, moves or renames nothing
    Report
    Configuration saved; inventory by folder; the accounts without a tax id; whether it found Fidel's and Clara's records; the period's first record
  2. 1deal-scan

    The period record up to date, with the new quotes and the new signals

    Input
    The whole 40-cotizaciones/ and the latest export in 10-crm/
    Process (calculated by the code)
    Only reprocesses what changed; the agent takes to the period record every quote or order with its opportunity, list price, discount and who approved it, in what role and on what date, every data point with its citation; the engine validates the record
    Report
    What changed; which quotes are new; the new signals; what could not be processed and why
  3. 2discount-check

    Every discount against its policy and its approval

    Input
    The discount matrix in 00-referencia/ and the period record
    Process (calculated by the code)
    Every discount against the level of the matrix that covers it and the approval that level asks for; a discount no level covers is always flagged
    Report
    Every quote with its discount, its level, the approval it asks for and the one it has; those outside the policy, with their citation
  4. 3won-to-invoice

    From won to signed to invoiced: what was left along the way

    Input
    The latest export in 10-crm/, the accounts table in 00-referencia/, Fidel's contract records and Clara's invoicing records
    Process (calculated by the code)
    Every won opportunity against a signed contract with its customer in Fidel's records; every contract signed with a customer against an invoice issued to that customer in Clara's records, within the invoicing period
    Report
    What was won without a contract and what was signed without an invoice, each with its citation in the CRM and in the other agent's record; contracts are not processed again
  5. 4commission-check

    Every settled commission against the one the plan gives

    Input
    The commission plan in 00-referencia/, the period's settlement in 50-comisiones/, the latest export in 10-crm/ and Clara's invoicing records
    Process (calculated by the code)
    What the plan gives on what was won in the period and already invoiced, by opportunity owner and by line, against what was settled; the difference against the configured tolerance
    Report
    By owner: what the plan gives, what was settled and the difference, with the opportunities that make up the base; not published in Rostrum unless the configuration says so
  6. 5revenue-wake

    What is due today from sale to invoice; if nothing is due, it stays quiet

    Input
    The configuration and the record
    Process (calculated by the code)
    Decides what is due: new quotes, a won opportunity without a contract or an invoice when its deadline arrives, the period's settlement when it arrives and a weekly review
    Report
    What ran and what it found; if nothing is due, it stays quiet
  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 calculates9 signals

9 signals. Each is raised with the opportunity, quote or commission that causes it, its amount and the citation of the document; the days, counts and tolerances are each entity’s configuration.

Augusto · 5

  • stage_without_evidence

    An opportunity is in a stage and does not have the document that stage requires: the proposal sent, the purchase order

  • stalled_opportunity

    An open opportunity has no recorded activity within the configured days

  • close_date_slipped

    An opportunity's close date moved more times than configured

  • forecast_unsupported

    What was committed exceeds what the opportunities with evidence add up to, weighted by their stage, by more than the configured tolerance

  • target_vs_closed

    What closed at the cut-off departs from the period's target, prorated by the days elapsed, by more than the threshold

Valeria · 4

  • discount_outside_policy

    A discount exceeds its level's cap without the approval the matrix asks for, or no level covers it

  • won_without_contract

    A won opportunity has no signed contract in Fidel's record

  • signed_without_invoice

    A signed contract has no invoice in Clara's record within the invoicing period

  • commission_differs_from_plan

    The settled commission is not the one the plan gives on what was closed and invoiced

The folder structurecomercial/

Recommended, not mandatory: the agents process the folder as it is. Setup says which file is out of place and where it would go, without creating, moving or renaming anything. It looks for the entity’s sales folder, proposes it with its reason and, if you say yes, marks it with a visible file, _CRITERIO_COMERCIAL.txt. They write nothing else among your documents: what they find goes in their state, apart.

One folder per entity, with its tax id at the start of the name. Inside it, the commercial function's reference, the CRM exports with their date, the committee, each opportunity's evidence, the quotes and the commission settlements.

comercial/
└── <entidad>/
    ├── 00-referencia/
    ├── 10-crm/
    ├── 20-comite/
    ├── 30-evidencia/
    ├── 40-cotizaciones/
    └── 50-comisiones/
estado-comercial/

<entidad>/ · What the organisation keeps for the whole sales function

FolderWhat goes thereAgent
00-referencia/The stage table —the document each stage requires and its probability—, the year's targets, the discount matrix, the commission plan and the accounts table with each customer's tax idAugusto, Valeria
10-crm/The CRM's opportunity exports, in CSV or Excel, with the export date in the name, and the close-date history if the CRM exports itAugusto, Valeria
20-comite/The sales committee's minutes and packs, with the forecast committed for the periodAugusto
30-evidencia/The proposals sent, the purchase orders and the acceptance records, with the opportunity id at the start of the nameAugusto
40-cotizaciones/The quotes and orders with their price, discount and approval, with the quote id at the start of the nameValeria
50-comisiones/Each period's commission settlement, with the period in the nameValeria

estado-comercial/ · What Augusto and Valeria write: the configuration, each period's record, the reports and the indexes. No person edits it, and no agent writes anywhere else.

The sources9 of 9 verified

The role, from O*NET; each export, from Salesforce’s and HubSpot’s documentation, field by field. Nothing is built on a source still to be verified.

  • F-01

    O*NET · 11-2022.00 Sales Managers

    Datos de 2026 (O*NET OnLine) · onetonline.org ↗

    Verified
  • F-02

    Salesforce · Field Reference · Opportunity

    La referencia publicada al 28 de octubre de 2026 · developer.salesforce.com ↗

    Verified
  • F-03

    Salesforce · Object Reference · OpportunityFieldHistory

    La página de la versión 192.0 de la referencia · developer.salesforce.com ↗

    Verified
  • F-04

    HubSpot · HubSpot's default deal properties

    Artículo actualizado el 29 de septiembre de 2026 · knowledge.hubspot.com ↗

    Verified
  • F-05

    HubSpot · Export records

    Artículo actualizado el 2 de abril de 2026 · knowledge.hubspot.com ↗

    Verified
  • F-06

    Microsoft · Dynamics 365 · Opportunity table/entity reference

    Página actualizada el 19 de septiembre de 2026 · learn.microsoft.com ↗

    Verified
  • F-07

    Microsoft · Power Apps · Export data to Excel

    Página actualizada el 5 de agosto de 2025 · learn.microsoft.com ↗

    Verified
  • F-08

    Zoho CRM · Standard Fields in Deals

    La página publicada al 30 de octubre de 2026; no muestra fecha de actualización · help.zoho.com ↗

    Verified
  • F-09

    Zoho CRM · Export CRM Data

    La página publicada al 30 de octubre de 2026; no muestra fecha de actualización · help.zoho.com ↗

    Verified
In the repository7 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. Install only the agent for the role you have: Augusto works without Valeria and Valeria without Augusto. If you install both, they find each other through the entity’s state, and Valeria finds Fidel’s and Clara’s records: 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: Augusto (The forecast) or Valeria (From sale to invoice).

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 one.
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-sales:sales-setup

  1. 1Which of the folders it finds is the entity’s sales folder
  2. 2The entity, its country and the period
  3. 3Which CRM each export comes from, and which column carries each field if it is another one
  4. 4The stage table, with the document each stage requires
  5. 5How many days stall an opportunity and how many times a close date may slip
  6. 6The 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 (sales-wake, revenue-wake), and someone sets it once as a scheduled task. If your organisation does not want unattended runs, they are run by hand.

/criterio-sales:sales-setupWhat Augusto’s setup looks like
AugustoI am Augusto, Criterio’s forecast. I put the pipeline next to its evidence and say which forecast has no backing; I do not rate whoever sells or set the target. I found a folder that looks like an entity’s sales folder: comercial/901234567-almacenes-del-valle, with three CRM exports, from 1 and 16 October and 3 November. Is that the one?
An illustrative walk-through on the family’s test material, before its round with the agents: a test retail chain in Colombia, with three Salesforce exports, its field history and the sales committee’s minutes. 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 0.3.1 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.
  • Both were tested with the engine and with the agents on 15 entities in Colombia, Mexico, Chile, Ecuador and Peru; the latest round is round 2. 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 Augusto and Valeria do?

Augusto puts the CRM pipeline next to its evidence and the forecast next to what backs it: which opportunity lacks the document its stage requires, which one is stalled, which one keeps slipping its close date, how much of what was committed has backing and how what closed is doing against the target. Valeria puts every sale next to its policy, its contract and its invoice: the discount against its approval level, what was won against Fidel's contracts, what was signed against Clara's invoices and the commission against the plan.

Do they replace the head of sales?

No. They process and contrast. The forecast that is committed, the discount that is approved, the target and the commission are always decided by a person.

Do they rate the sellers?

No. The signal belongs to the opportunity, not to whoever owns it. No report ranks or compares the people on the team, and if someone asks for the forecast or the target by seller, the agent says so and does not build it.

What do they never do?

They do not write or change anything in the CRM, do not contact a customer, do not approve a discount or a price exception, do not set a target and do not settle or correct a commission.

How it is used

Do they connect to my CRM?

No. They process what the CRM exports, in CSV or Excel, with the export date in the name. A direct connection would be a different decision, with its own security review.

Which CRM works?

Salesforce and HubSpot, each with its reader verified against the documentation it publishes: Salesforce's opportunity fields and HubSpot's deal properties. Any other CRM works with its CSV or Excel export and the column mapping the setup leaves. Microsoft Dynamics and Zoho, with their own reader, are on the roadmap.

How does it know an opportunity has no evidence?

From the organisation's stage table: each stage says which document it requires —the proposal sent, the purchase order— and a stage also requires what the earlier ones do. The agent takes to the record every document in the evidence folder with its opportunity and type, and the engine crosses them.

How does it know a close date slipped?

By comparing each export with the previous one: every time an open opportunity's close date moves to a later one, it counts. If the CRM exports the field history, as Salesforce does, it counts from the history.

Where does the committed forecast come from?

From the sales committee's minutes or pack: the agent takes to the record the value committed for the period, with its citation. If the minutes commit no value, the report says it is missing and does not invent it.

Do I need Fidel and Clara?

For crossing what was won with what was signed and invoiced, yes: Valeria takes the contract from Fidel's records and the invoice from Clara's, and never processes them again. The rest —the pipeline, the forecast, the target, the discount— works without them.

How long until the first result?

Within the first fifteen minutes, sales-setup recognises each CRM export and shows the pipeline against its evidence, and revenue-setup shows what was won against what was signed and invoiced.

Which countries does it serve?

The first version is tested in Colombia and Mexico. Ecuador, Peru and Chile, already in the other families' country registry, are on the roadmap.

The data

Do they keep my customers' contact data?

No. The record keeps the account and the opportunity, not a person's email or phone, and the engine flags a record that carries them as a problem.

Are commissions published?

Not by default. They are the pay of identifiable people: the commission report does not appear in Rostrum unless Valeria's configuration says so.

Where are my documents processed?

On the AI platform's infrastructure, not only on your machine. Confirm it is admissible under your policies before pointing it at confidential material.

Status

Is it ready to use?

Yes: it can be installed, in its version 0.3.0, and it has not been launched yet. The engine passes its deterministic test on synthetic material from Colombia, Mexico, Ecuador, Peru and Chile. Both agents passed their two rounds with a key they never see.

Is it stable?

Yes, since 0.3.0, because its evidence says so (decision 0020): with both rounds, the floor of the 95% confidence margin is 98.0% for signals and 95.1% for data, over each entity's most recent run in the material, and no control raises a signal. The code calculates it from the rounds; the version number does not say it.

The same answers live in the repository, in families/criterio-cco/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 idea

What the sales committee committed was always written down. Nobody had set it next to what backs it.

Two agents that process the pipeline and the quotes do not hand you a control you never built. They show you, every week, which forecast has no backing, which discount lacks its approval and which sale never reached the invoice, and they leave the decision where it was: with a person.

Principles

Approach
Exports, never systems.
Commitment
Generating, sharing and preserving knowledge is a professional obligation.
What it is not
It does not replace the head of sales or their team, and does not decide for them: it does not set targets, approve discounts, settle commissions, contact customers or rate whoever sells.
Licence
Apache 2.0.
What comes next
Its launch. What follows is in its roadmap.
Legal notice and version register →

José Ñáñez