4 in 5
sales and finance leaders missed at least one quarterly sales forecast in the past year; 52% of sales leaders say their forecast is off by 10% or more
80 of every 100 leaders
Criterio CCO
The commercial function
Evidence before the decision
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
4 in 5
sales and finance leaders missed at least one quarterly sales forecast in the past year; 52% of sales leaders say their forecast is off by 10% or more
80 of every 100 leaders
28%
of their week is what a seller spends selling; 72% goes to other tasks, above all managing deals and entering data
28 of every 100 hours
84%
of sales leaders say sales analytics had less influence on performance than expected; 44% point to poor data quality
84 of every 100 leaders
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
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
| Since | Country | Material entities | Its rounds | Signals · fields |
|---|---|---|---|---|
| Round 1 | Colombia | Retail, Technology, Control entity | Round 1 | 41 of 41 signals · 15 of 15 fields |
| Round 1 | Mexico | Manufacturing, Professional services, Control entity | Round 1 | 39 of 39 signals · 15 of 15 fields |
| Round 2 | Ecuador | Retail, Technology, Control entity | Round 2 | 38 of 38 signals · 15 of 15 fields |
| Round 2 | Peru | Manufacturing, Professional services, Control entity | Round 2 | 40 of 40 signals · 15 of 15 fields |
| Round 2 | Chile | Retail, Technology, Control entity | Round 2 | 39 of 39 signals · 15 of 15 fields |
The progress map
5 countries tested
Borders: Natural Earth, public domain.
What was tested here
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
42 documents · 5 defects seeded on purpose
44 documents · 5 defects seeded on purpose
28 documents and no defects: any signal would be a failure
Evolution
The entities and their defects are written in the repository, in tests/criterio-cco/generar.py.
Criterio · CCO family
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 · 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
The two, one at a time
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
Never
Writes to the CRM, contacts a customer, sets the target, commits the forecast or rates whoever sells.

Its commands, by group
sales-setupsales-wakepipeline-scanpipeline-checkforecast-checktarget-check6 commands · 4 skills
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
/criterio-sales:sales-setup, leaves its configuration in .criterio/comercial/<entity>/ and marks its root folder with _CRITERIO_COMERCIAL.txt./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

What it costs you today
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.
Write the costs in the currency you choose. There is no conversion: changing the currency clears the costs, because an exchange rate written into a page is wrong within weeks.
The people
Hours per week on each task
Hours are per person, per week. The starting people and hours are examples: replace them with yours. The cost is yours to write: we do not print one we cannot source.
Your numbers · per year
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
Write the monthly cost of each group to see what it costs.
What this number is and what it is not
It is the cost of the hours 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
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.
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.
Round 11
Round 1 · verification2
Round 23
Round 2 · verification4
Results by country · each country’s latest run
Each country with its entities in their latest run with the agent. The margin is the 95% Wilson interval.
| Country | Entities | Round | Record data | Signals found | Correct signals | Controls without false alarms |
|---|---|---|---|---|---|---|
| Colombia | 3 | 1 | 15 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 |
| Ecuador | 3 | 2 | 15 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 |
| Peru | 3 | 2 | 15 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 |
| Chile | 3 | 2 | 15 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 |
| Mexico | 3 | 1 | 15 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.
Where they came from
For auditing
The full detail of every run. Each block opens on its own.
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 material | Agent · commands | Signals | Record data | Tokens |
|---|---|---|---|---|
| control entityRound 1 · Colombia | Augusto, Valeria · 4 | 0 / 0 | 5 / 5 | 3.2 M |
| control entityRound 1 · Mexico | Augusto, Valeria · 4 | 0 / 0 · +2 | 5 / 5 | 2.9 M |
| control entityRound 1 · Mexico · verification | Augusto, Valeria · 4 | 0 / 0 | 5 / 5 | 2.9 M |
| control entityRound 1 · Mexico · verification | Augusto, Valeria · 4 | 0 / 0 | 5 / 5 | 2.9 M |
| manufacturingRound 1 · Mexico | Augusto, Valeria · 4 | 20 / 20 | 5 / 5 | 3.1 M |
| retailRound 1 · Colombia | Augusto, Valeria · 4 | 21 / 21 | 5 / 5 | 2.8 M |
| professional servicesRound 1 · Mexico | Augusto, Valeria · 4 | 15 / 19 | 5 / 5 | 3.2 M |
| professional servicesRound 1 · Mexico · verification | Augusto, Valeria · 4 | 19 / 19 | 5 / 5 | 3.3 M |
| technologyRound 1 · Colombia | Augusto, Valeria · 4 | 16 / 20 | 5 / 5 | 3.5 M |
| technologyRound 1 · Colombia · verification | Augusto, Valeria · 4 | 20 / 20 | 5 / 5 | 3.2 M |
| control entityRound 2 · Chile | Augusto, Valeria · 4 | 0 / 0 | 5 / 5 | 2.6 M |
| control entityRound 2 · Ecuador | Augusto, Valeria · 4 | 0 / 0 | 5 / 5 | 3.1 M |
| control entityRound 2 · Peru | Augusto, Valeria · 4 | 0 / 0 · +1 | 5 / 5 | 2.9 M |
| control entityRound 2 · Peru · verification | Augusto, Valeria · 4 | 0 / 0 | 5 / 5 | 2.9 M |
| manufacturingRound 2 · Peru | Augusto, Valeria · 4 | 20 / 20 | 5 / 5 | 3.2 M |
| retailRound 2 · Chile | Augusto, Valeria · 4 | 19 / 19 | 5 / 5 | 3.2 M |
| retailRound 2 · Ecuador | Augusto, Valeria · 4 | 18 / 18 | 5 / 5 | 3.2 M |
| professional servicesRound 2 · Peru | Augusto, Valeria · 4 | 20 / 20 | 5 / 5 | 3.1 M |
| technologyRound 2 · Chile | Augusto, Valeria · 4 | 20 / 20 | 5 / 5 | 3 M |
| technologyRound 2 · Ecuador | Augusto, Valeria · 4 | 20 / 20 | 5 / 5 | 3.1 M |
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
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
A results page that only says what passed is advertising. What makes it auditable is what it says is not known yet.
Roadmap
Each increment is a version with its full test and its statistical analysis published, with the same metrics, so the evolution can be compared. Versions add up: the latest released one carries everything before it and the fixes for what its tests found.
StableIts evidence says so, not its number: in the latest run of each entity in its material, the lower bound of the 95% margin is 95% or more for signals and for data, and no control raised a signal. Each whole number has ten versions, from x.0 to x.9; then comes x+1.0.
0.1.0
ReleasedReleased on 2026-10-28
Augusto and Valeria, built, with the engine tested
Test
The engine against the key of all the material: six entities from Colombia and Mexico, with their controls
0.2.0
ReleasedReleased on 2026-10-29
The full round with the agents
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
Latest released
0.3.0
ReleasedReleased on 2026-10-29
Carries everything before it, with its fixes
Ecuador, Peru and Chile, and Microsoft Dynamics and Zoho
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.
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 extractsThe 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 extractsThe 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 extractsThe 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 calculatesSignals
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 calculatesNo 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
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.
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.
Exports, never systems
No agent connects to the CRM, and none writes to it.
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.
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.
No agent decides
The forecast, the discount, the target and the commission belong to a person.
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
The commands with their input, process and report; the signals the code calculates; the folder structure; the sources, and the links to the repository.
In order of importance. The first one sets up the configuration the others need.
sales-setupThe configuration, the inventory and the format of each CRM export
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 slippipeline-scanThe period record up to date, with what changed in the pipeline and the new signals
10-crm/, 20-comite/ and 30-evidencia/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 recordpipeline-checkEvery opportunity against its evidence: the one without it, the stalled one and the one whose close date slips
10-crm/, the earlier ones, the stage table in 00-referencia/ and the period recordforecast-checkThe committed forecast against what backs it, opportunity by opportunity
10-crm/ and the stage table in 00-referencia/target-checkThe period's target against what closed at the cut-off, by line
00-referencia/ and the latest export in 10-crm/sales-wakeWhat is due today in the pipeline; if nothing is due, it stays quiet
10-crm/, new committee minutes, the period's end coming up and a weekly reviewshare-findingsA summary with no data to share, only if you say yes
.criterio/corridas/In order of importance. The first one sets up the configuration the others need.
revenue-setupThe configuration, the inventory and the accounts still missing to cross with Fidel and Clara
00-referencia/, where Fidel's contract records and Clara's invoicing records are, and within how many days a signed contract is invoiceddeal-scanThe period record up to date, with the new quotes and the new signals
40-cotizaciones/ and the latest export in 10-crm/discount-checkEvery discount against its policy and its approval
00-referencia/ and the period recordwon-to-invoiceFrom won to signed to invoiced: what was left along the way
10-crm/, the accounts table in 00-referencia/, Fidel's contract records and Clara's invoicing recordscommission-checkEvery settled commission against the one the plan gives
00-referencia/, the period's settlement in 50-comisiones/, the latest export in 10-crm/ and Clara's invoicing recordsrevenue-wakeWhat is due today from sale to invoice; if nothing is due, it stays quiet
share-findingsA summary with no data to share, only if you say yes
.criterio/corridas/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_evidenceAn opportunity is in a stage and does not have the document that stage requires: the proposal sent, the purchase order
stalled_opportunityAn open opportunity has no recorded activity within the configured days
close_date_slippedAn opportunity's close date moved more times than configured
forecast_unsupportedWhat was committed exceeds what the opportunities with evidence add up to, weighted by their stage, by more than the configured tolerance
target_vs_closedWhat 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_policyA discount exceeds its level's cap without the approval the matrix asks for, or no level covers it
won_without_contractA won opportunity has no signed contract in Fidel's record
signed_without_invoiceA signed contract has no invoice in Clara's record within the invoicing period
commission_differs_from_planThe settled commission is not the one the plan gives on what was closed and invoiced
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
| Folder | What goes there | Agent |
|---|---|---|
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 id | Augusto, 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 it | Augusto, Valeria |
20-comite/ | The sales committee's minutes and packs, with the forecast committed for the period | Augusto |
30-evidencia/ | The proposals sent, the purchase orders and the acceptance records, with the opportunity id at the start of the name | Augusto |
40-cotizaciones/ | The quotes and orders with their price, discount and approval, with the quote id at the start of the name | Valeria |
50-comisiones/ | Each period's commission settlement, with the period in the name | Valeria |
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 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.
O*NET · 11-2022.00 Sales Managers
Datos de 2026 (O*NET OnLine) · onetonline.org ↗
Salesforce · Field Reference · Opportunity
La referencia publicada al 28 de octubre de 2026 · developer.salesforce.com ↗
Salesforce · Object Reference · OpportunityFieldHistory
La página de la versión 192.0 de la referencia · developer.salesforce.com ↗
HubSpot · HubSpot's default deal properties
Artículo actualizado el 29 de septiembre de 2026 · knowledge.hubspot.com ↗
HubSpot · Export records
Artículo actualizado el 2 de abril de 2026 · knowledge.hubspot.com ↗
Microsoft · Dynamics 365 · Opportunity table/entity reference
Página actualizada el 19 de septiembre de 2026 · learn.microsoft.com ↗
Microsoft · Power Apps · Export data to Excel
Página actualizada el 5 de agosto de 2025 · learn.microsoft.com ↗
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 ↗
Zoho CRM · Export CRM Data
La página publicada al 30 de octubre de 2026; no muestra fecha de actualización · help.zoho.com ↗
Installation, setup and 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.
To receive every new version, turn on auto-update once: in /plugin, Marketplaces → criterio → Enable auto-update. Without it, the installed version does not change on its own.
What it needs from you
Each agent comes with its own setup command. It looks at your folders, asks a few questions and shows you a first result on your own documents.
/criterio-sales:sales-setup
How it asks
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.
Nobody reads a disclaimer in a repository. So the warning reaches the person who runs the agent and the person who later receives the document, in four layers that every agent implements.
One acceptance per version
Every version of the family is accepted again and leaves on your machine a receipt in Markdown and PDF, with the SHA-256 fingerprint of the terms and of the receipt itself. Until the one for the installed version is recorded, the agent answers questions but produces no full analysis. It never assumes it or infers it from you continuing to talk.
On every report
Every report carries a footer saying it is a draft, based on which documents, how many fields had no data and how many contradictions remain open. The document travels by email and reaches a committee: the warning travels with it.
At the start of every run
Before the first finding it says which records it loaded, when they were refreshed, and whether any is stale or missing.
In the legal notice
The full terms, the legal notice and the version register —what changed in each version, which terms govern it and their fingerprint— are published on this site, and every receipt points to them.
What you agree to, in plain words
Terms version 1.3, of 2026-10-28, for version 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
Frequently asked questions
What it is
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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
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.
Not by default. They are the pay of identifiable people: the commission report does not appear in Rostrum unless Valeria's configuration says so.
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
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.
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
Criterio remains open source. A voluntary contribution helps fund testing, documentation and the next capabilities without changing access to the software.
This is a voluntary contribution. It does not unlock features, purchase consulting services or create an advisory relationship.
Support Criterio
Choose an amount and how you want to contribute.
Choose your country to see the payment methods available to you.
dLocal Go currently covers Latin America, Indonesia, Malaysia, Kenya and Nigeria. Global coverage will be added separately.
The 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
José Ñáñez