Skip to content
Servizi SovraniAgile Technology
IT

AgileDecide

the reflex (proposto)

Service status: ok read on 2026-10-26 18:34 UTC

AgileDecide runs on our own machine, inside our own perimeter, on CPUs only: no GPU and no metered model anywhere in the decision path.

The text you send does not leave the machine and does not enter any log: the service records a cryptographic fingerprint and a length, never the content.

Sheet for public bodies API contract Request a quote

What it is

AgileDecide answers one question, always the same way: given a text, which class is it, out of a closed list decided in advance.

It does not write prose, does not summarise and does not invent a new class. The answer is one word from the list, or ASTIENI (abstain).

The abstention is the point. A classifier that always answers fails silently. This one says “I do not know” and hands over, with a reason from a closed list: downstream you always know why it did not decide.

It is meant to sit before something bigger — a work queue, a language model, a person — and to sort quickly and cheaply whatever can be sorted.

Who it is for

Sovereignty

Data and engines are in Europe, on our own machines. Keys and licences are per customer.

One row per item, from the box audit. Where the audit does not reach it says “not measured yet”, not a reassurance.

ItemWhat it says
ControllerAgile Technology S.r.l. — Piazza di Campitelli 2, 00186 Roma, Italy — VAT and tax code 07776161213
A341 §3
Where engines and data runA machine dedicated to AgileDecide alone, provider Hetzner Online GmbH (Germany), 4 CPUs and 8 GB. The exact data-centre site has not been verified from this box: not measured yet.
regia, 19/10/2026
Weights and modelsIn the decision path, today, no downloaded weights: the rule level has none, and the small classifier retrains at startup on our own 150 examples. The quantised models used on the test benches do not serve traffic.
servizio/motore.py, servizio/registro.json
KeysKeys are minted and held by the control room in its own vault. This box, and its code, hold only the sha256 fingerprint of each key: the secret has never passed through here.
docs/F2-contratto.md §5
Sub-processorsOne: Hetzner Online GmbH (infrastructure). No model provider in the decision path. This is why this page does not claim to have no external providers: the infrastructure is a third party's, and that has to be said.
audit del box, 26/10/2026
Retention and deletionThe input text is not retained: the decision log records a fingerprint and a length. How long that log is kept, and how it is deleted at the end of a plan, is not measured yet.
docs/F2-contratto.md §0 e §6
Export at the end of the contractNot measured yet: there is no declared form yet in which the customer takes back their data.
—
Incident notificationNot measured yet: channel and deadline have not been set.
—
QualificationsACN: not certified. ISO 27001: not certified. Third-party penetration test: not performed. The service has passed the box's internal security review.
docs/F2b-referto.md
Who can call the service todayTwo callers only, inside the private network: the machine itself and the control-room server. The filter is twofold and independent — in the operating system and in the code — and if one fails the other holds. Since 26/10/2026 there is a public name: callers from outside talk to the proxy on the control-room server, which is one of the two admitted callers and forwards only the /v1/ path. The service has not gained a public port: the open surface is the proxy's.
docs/F2-contratto.md §0

The tasks

Four tasks, four schemas. Here is what each is for, what goes in and what comes out; the numbers are in “The measurements”. The examples are invented texts: there is no real data on this page.

t1 — Personal-data gate, before AgileLLM reads the text

A gate in front of a language model: text carrying personal data does not get in, or gets in pseudonymised.

PULITOPSEUDONIMIZZABLOCCA

Hello, I am Luisa Marchetti, born 02/03/1981, health card TS-00-998877. I am writing because the therapy prescribed by the Palmieri street clinic is not covered by the plan.

→ BLOCCA — a full name, a date of birth, a card number and a health reference: the text must not enter the study.

The text does NOT enter the study and goes to a human review queue. Abstaining is always the prudent road: it is not a mistake, it is a cost.

t2 — Routing to AgileLLM's specialties

Route a question to the right specialty instead of the generic queue.

NORMATIVAAIUTO_PRODOTTODI_SERIE

The September invoice does not show the withholding tax required by the framework contract: does it have to be reissued before the deadline?

→ NORMATIVA — the question is about a contractual and tax obligation, not about using the product.

In both cases the request takes the standard road — alias `agilellm`, no `pacchetto` field — that is, the path the traffic already follows.

t3 — AgileChannels' Postman inbox — what is arriving in the product's mailbox

Tell what is arriving in a product's inbox, and what has to jump the queue.

PRATICA_COMMERCIALEPRATICA_ASSISTENZAPRATICA_URGENTEPRATICA_AMMINISTRATIVANOTIFICA_AUTOMATICAINDESIDERATAALTRO

Subject: issuing blocked. Since this morning the system does not issue documents and we have a delivery tomorrow morning.

→ PRATICA_URGENTE — an operational block with a near deadline: it goes before the others.

ASTIENI = HAND IT TO A PERSON. The Postman does not open the case and does not file it: it puts the mail in a human review queue and alerts whoever watches it.

t4 — Conversational aspects — the digital persona's next move

Decide a digital persona's next move: answer, ask, stay silent, or hand over to a human.

RISPONDI_ORACHIEDI_CHIARIMENTOTACIPASSA_A_PERSONACHIUDI_CORTESE

— This is not the first time I ask and nobody answers. I want to speak to a manager.

→ PASSA_A_PERSONA — the person explicitly asks for a human: the machine steps aside.

Today's behaviour: the hand passes to a person. The orchestrator does not let the digital persona speak and hands the conversation to a human operator.

API

An HTTP and JSON endpoint. Two routes: GET /v1/compiti to see what is there, and POST /v1/systemone to decide.

You authenticate with an Authorization: Bearer key, which has a scope: it is valid for the tasks it was granted and for no others. Past the quota, the answer is 429 with a named error.

The response shape is fixed and versioned: a client can rely on the same keys, always.

The public address of the API is open: https://api.agiledecide.agile.software. In front of the service sits an nginx proxy run by the control room, which forwards only the /v1/ path: every other route, /healthz included, gets a 404 from the proxy and does not exist from outside. GET /v1/systemone answers 405: the verb is POST. In front of the per-key quota there is a per-address cap, and it belongs to the proxy: without a key 10 calls per minute (burst 5), on every call 5 per second (burst 20); past the cap, 429 with tetto_indirizzo. The public surface is only 80 and 443. Configuration and certificates belong to the control room: this page does not promise to manage them.

The full contract, with every error and example: docs/GUIDA-API.md

The measurements

One table per task. Above each table: the machine, the date and the schema version. The hosted reference (the “leader”) is a column, not a challenge: where it is ahead, the number is published all the same.

t1 — Personal-data gate, before AgileLLM reads the text

Machine: cx33 — 4 processori, 8 GB, solo CPU · Date: 2026-10-26 · Schema version: 2.3

How to read it: these are the numbers of the best configuration we have measured, and for several constraints that configuration is a metered model outside our perimeter — it is not what the service runs. On this task, today, the service does not decide.

The measurementsthresholdmeasuredwith which configurationsource
richiamo (sicurezza) su BLOCCA≥ 0.981.0unione dei due maestri ospitati (claude-opus + gpt-sol) col CANALE DELLE REGOLE aperto (prompt pieno, 62 regole di taglio consegnate), «blocca se almeno uno blocca» — braccio primario di F1v2 rigirato in F1v5docs/F1v5-referto.md:112

The limit, in one sentence: On our own CPUs the gate stops a little over seven texts out of ten among those it should stop: too few for a safety gate. The number that meets the promise comes from metered models outside our perimeter, and on this task they cannot be used — t1's input is exactly the text that must not leave. source: servizio/registro.json

How the bench registry puts it

F2d: il vincolo dello schema t1 (richiamo su BLOCCA >= 0.98) oggi E' TENUTO a registro, ma solo da una configurazione OSPITATA: l'unione dei due maestri col canale delle regole aperto (F1v5) fa sicurezza 1.0000, Wilson 0.9812 su 201 esposti, 0 falsi lasciapassare. Non puo' servire: t1 setaccia i dati personali, e il suo ingresso e' esattamente il testo che non esce dal box (regola 1). Sui nostri processori il meglio a registro resta lontano: il modello di casa istruito col maestro (F1w) fa sicurezza 0.7729 (Wilson 0.7269) con 82 falsi lasciapassare su 361 esposti, e la valvola incrociata di un'altra famiglia (F1x3) scende a 3 fughe ma su un massimo di griglia che fuori campione ne fa 8 su 221. Il servizio risponde sempre ASTIENI e lo dichiara (contratto §2).

t2 — Routing to AgileLLM's specialties

Machine: cx33 — 4 processori, 8 GB, solo CPU · Date: 2026-10-26 · Schema version: 2.3

How to read it: these are the numbers of the best configuration we have measured, and for several constraints that configuration is a metered model outside our perimeter — it is not what the service runs. On this task, today, the service does not decide.

The measurementsthresholdmeasuredwith which configurationsource
precisione su NORMATIVA≥ 0.91.0A — L0 @0.70 (solo lessico, la riga esatta di servizio/registro.json: e' il servizio di oggi)docs/F1o-referto.md:47
precisione di famiglia≥ 0.851.0A — L0 @0.70 (solo lessico, la riga esatta di servizio/registro.json: e' il servizio di oggi)docs/F1o-referto.md:48
astensione di livello 1≤ 0.150.0E — JEV economico ospitato (prompt corto, soglia 0.0)docs/F1o-referto.md:104

The limit, in one sentence: The rule level decides well, but only on part of the traffic and abstains on the rest; on the regulatory class there are still not enough examples to prove the promised precision — the point estimate meets it, the interval does not. source: docs/F1o-referto.md

How the bench registry puts it

F2d: dei tre vincoli di t2 nessuna configurazione sola li tiene tutti. Precisione di famiglia >= 0.85: tenuta (A - L0 @0.70, 1.000 su 56 decisioni, Wilson 0.936, F1o). Astensione di livello 1 <= 0.15: tenuta (E - ospitato economico, 0.000, Wilson superiore 0.048 su 87, F1o). Precisione su NORMATIVA >= 0.90: NON tenuta da nessuno - 1.000 su 22 decisioni e' il punto piu' alto a registro ma Wilson si ferma a 0.851, e lo stesso braccio sul banco nuovo di F1o fa 0.364; il tetto ospitato di punta sta a 0.800. Le configurazioni col canale delle regole (F1v5) non entrano nel quadro: misurano copertura e accuratezza, non le tre grandezze che lo schema vincola. Il servizio risponde sempre ASTIENI e lo dichiara (contratto §2).

t3 — AgileChannels' Postman inbox — what is arriving in the product's mailbox

Machine: cx33 — 4 processori, 8 GB, solo CPU · Date: 2026-10-26 · Schema version: 2.2

How to read it: these are the numbers of the best configuration we have measured, and for several constraints that configuration is a metered model outside our perimeter — it is not what the service runs. On this task, today, the service does not decide.

The measurementsthresholdmeasuredwith which configurationsource
richiamo su PRATICA_URGENTE≥ 0.981.0E - JEV-opus (riferimento ospitato, modello di punta)docs/F1n-referto.md:72
precisione su INDESIDERATA≥ 0.981.0D - JEV-sol (riferimento ospitato economico)docs/F1n-referto.md:71
nessun errore dalla classe NOTIFICA_AUTOMATICA su richieste vere≥ 1.00E - JEV-opus (riferimento ospitato, modello di punta)docs/F1n-referto.md:72

The limit, in one sentence: On urgent mail the small level recognises fewer than three out of ten, against the nearly ten out of ten the schema asks for, and it never declares junk mail: it sends to the slow queue instead of guessing, but a slow queue on an urgent case is the same damage. source: docs/F2-contratto.md

How the bench registry puts it

F2d: nessuno dei tre vincoli di t3 e' dimostrato. Richiamo su PRATICA_URGENTE >= 0.98: il punto migliore a registro e' 1.0 (JEV-opus ospitato, 92 passanti, F1n) ma Wilson si ferma a 0.918 - servono ~150 urgenti senza un errore. Precisione su INDESIDERATA >= 0.98: 1.0 su 10 decisioni sole (JEV-sol, F1n), che il referto stesso chiama «non dimostrato». Zero errori dalla classe NOTIFICA_AUTOMATICA su richieste vere: MANCATO, 0 su 6 (F1n). Il 7B di casa (F1y) non lo tiene nemmeno: nel grezzo propone NOTIFICA_AUTOMATICA 11 volte su mail con una richiesta dentro, 2 delle quali urgenti. Il servizio si astiene sull'intero compito e lo dichiara (contratto §2).

t4 — Conversational aspects — the digital persona's next move

Machine: cx33 — 4 processori, 8 GB, solo CPU · Date: 2026-10-26 · Schema version: 1.9

How to read it: these are the numbers of the best configuration we have measured, and for several constraints that configuration is a metered model outside our perimeter — it is not what the service runs. On this task, today, the service does not decide.

The measurementsthresholdmeasuredwith which configurationsource
richiamo su PASSA_A_PERSONA≥ 0.980.9919B6 - quorum L0 AND L1 + i due veti (nessun fornitore ospitato)docs/F1m-referto.md:80
derived: 244/246, exact arithmetic on “2 missed out of 246 protected”. The cited line carries the Wilson table, not this ratio. docs/F2d-referto.md
segnale (d) sul sottoinsieme dichiarato≥ 1.01.0B8 - L1 @0.6209 + i due veti (nessun fornitore ospitato)docs/F1m-referto.md:37
precisione su RISPONDI_ORA≥ 0.91.0JEV-sol ospitato, a soglia (astensione attiva, copertura 0.675)docs/F1j-referto.md:108

The limit, in one sentence: None of the measured levels understands often enough when to hand over to a human. And there is a written ban: this task is not to be switched on with a keyword mechanism, not even behind a high threshold, because on the cases that must go to a human it speaks for itself almost nine times out of ten. source: docs/F2-contratto.md

How the bench registry puts it

F2d: nessuno dei tre vincoli di t4 e' dimostrato, e il motivo e' sempre lo stesso: i referti non dichiarano quante righe quella configurazione abbia DECISO, quindi non si puo' distinguere un braccio bravo da un braccio che si astiene. Richiamo su PASSA_A_PERSONA >= 0.98: il punto migliore e' 244/246 (quorum L0 AND L1 + i due veti, F1m) ma il Wilson di 2 mancati su 246 e' 0.9708, sotto la soglia - su questo banco il vincolo vuole ZERO mancati, e l'unico braccio a zero mancati e' l'astensione totale, che decide nulla. Segnale (d): 1.0 su 23 (F1m), e un vincolo a 1.00 esatto non e' dimostrabile su campione finito, mai. Precisione su RISPONDI_ORA >= 0.90: 1.000 (JEV-sol ospitato a soglia, F1j), senza passanti dichiarati. Il braccio migliore decide meno dell'8% del traffico. Il servizio si astiene sull'intero compito e lo dichiara (contratto §2).

Plans

Three plans, the same across the sovereign services. The price is not on the page, in any language: you ask for it.

DurationQuotaPer-minute limitPrice
Trial30 days60 / 60 minnot measured yeton request
Standardnot measured yetnot measured yetnot measured yeton request
Enterprisenot measured yetnot measured yetnot measured yeton request

Request a licence

The contact address for the sovereign services is not decided yet and the test from a customer's mailbox has not been done: until the control room declares it successful, this page writes no address and the form does not send. Requests reach the control room today, which answers within two working days.

Servizi Sovrani Agile Technology

One service, one organ. The service of this page is not clickable; those without a page yet are “coming”.

What this page does not say yet