Zero Proof AI commited on
Commit
944cb62
·
verified ·
1 Parent(s): 4311c18

Strong v0 card: version table, comparison + per-intent tables, base-collapse, citation

Browse files
Files changed (1) hide show
  1. README.md +47 -86
README.md CHANGED
@@ -18,112 +18,73 @@ tags:
18
  - structured-output
19
  ---
20
 
21
- # ZeroProof Intent Model 0 — `v0`
22
 
23
- > **Status: v0 — first iteration, private preview.** A compact adapter over `gemma-3-1b`
24
- > that reads a payment/agent conversation and returns **one structured intent object**.
25
- > It is the model half of ZeroProof's behavioral-attestation stack: it decides *what the
26
- > user actually intended* so a downstream layer can verify an agent's action matches it.
27
 
28
- ![Model 0 evaluation](eval_report.png)
29
 
30
- Built by **[ZeroProof](https://www.zeroproofai.com/)** — a lab building the trust layer for
31
- AI agents. The data, the training, and the rubric are ours; that's the part that compounds.
32
 
33
- ---
34
-
35
- ## What it does
 
36
 
37
- **In:** a short user↔assistant conversation. **Out:** a single structured intent object —
38
- the detected intent, whether it's actionable, the salient details for that intent, and a
39
- confidence signal. Ground truth comes from the **user's** turns; assistant turns are context.
40
 
41
- It routes to one of **7 intents:** `spend` (buy from a merchant) · `send` (pay a
42
- person/wallet) · `exchange` (swap/convert an asset) · `recur` (subscription/renewal) ·
43
- `bill` (pay a specific bill) · `reverse` (refund/return/dispute) · `none` (no actionable
44
- intent — the safety class; a false positive here is a *false attestation*, the worst
45
- failure mode). This is **routing-then-extraction**, not one-word classification.
46
 
47
- *(The exact output schema and integration spec are part of the ZeroProof runtime and are
48
- not published here — reach out for access.)*
49
-
50
- ---
51
 
52
- ## How well did the fine-tuning work?
 
 
53
 
54
- Base and Model 0 scored in **one engine, on the identical 4,000 held-out conversations**
55
- (greedy decoding, de-duplicated so nothing leaks from training). Only the adapter differs.
56
 
57
- | Metric | Base `gemma-3-1b` | **Model 0** | Δ |
58
  |---|---|---|---|
59
- | Valid structured output | 87.5% | **99.8%** | +12.3 |
60
- | Intent detected (act vs. `none`) | 35.0% | **81.9%** | +46.9 |
61
- | **Intent routing — macro** | **14.4%** | **70.0%** | **+55.6** |
62
- | Detail extraction | 19.7% | **61.3%** | +41.6 |
63
 
64
- *Macro = equal weight per intent (the honest headline; the eval is 57% `none`, so a
65
- none-weighted average would flatter us — we don't report it as the headline).*
66
 
67
- ## Why this beats a base 1B — and why it isn't luck
68
 
69
- The base model **doesn't fail randomly. It collapses to one class.** Across all 4,000 eval
70
- conversations it predicted `spend` **80.7%** of the time — a refund request, a status
71
- question, a "yo what's up," all called `spend`. It can produce well-formed output but it
72
- **cannot route**: it latches onto one intent and marks nearly everything actionable.
 
 
 
73
 
74
- Fine-tuning teaches the two things the base lacks — **routing across all seven intents**
75
- and **the `none` boundary**:
76
 
77
- | Intent | n | Base | **Model 0** |
78
- |---|---|---|---|
79
- | none | 2286 | 0 | **90** |
80
- | reverse | 300 | 0 | **74** |
81
- | send | 300 | 10 | **72** |
82
- | exchange | 214 | 0 | **68** |
83
- | bill | 300 | 6 | **65** |
84
- | spend | 300 | 84 | 63 |
85
- | recur | 300 | 0 | **59** |
86
-
87
- `spend` is the *only* column where the base looks good — because it guesses `spend` for
88
- everything. Model 0 trades that false strength for real coverage of all seven.
89
-
90
- ## Why a fine-tuned 1B instead of calling the frontier model?
91
-
92
- This model runs in the **hot path of every agent transaction**. Against a frontier
93
- parent, the case is **economic and operational**, not "we're more accurate":
94
-
95
- - **Cost / latency / energy** — a self-hosted 1B is far cheaper and faster per call.
96
- Attestation only works if you can afford to run it on *every* action.
97
- - **Self-hostable & pinned** — a fixed version you control, no external dependency in the
98
- trust path.
99
- - **Accuracy vs. the parent** — that's the **next milestone (Model 1)**, measured on this
100
- exact eval. We do **not** claim to beat the parent on accuracy in v0; we claim to close
101
- enough of the gap to be worth running everywhere.
102
-
103
- ---
104
 
105
- ## What we noticed · what we're watching · where our rubric is weak
106
 
107
- *(We publish these because the thinking is the product.)*
108
 
109
- - **Noticed:** the base's failure is *structured* (collapse-to-`spend`) — which is exactly
110
- why teaching it to route moves the needle so much.
111
- - **Rubric weaknesses we own:** detail scoring is strict exact-match and under-credits
112
- near-right extractions; the confidence field isn't calibrated yet — treat it as a rough
113
- signal, not a probability.
114
- - **What we're watching next (attestation metrics, not accuracy bars):** how often the
115
- model catches a **human switching intent mid-conversation**, and how often it correctly
116
- flags **"this needs verification"** before an action fires. Those matter more for a trust
117
- layer than raw accuracy.
118
 
119
- ## Limitations
120
 
121
- v0, single base family. Weakest intents are `recur` (59) and `spend` (63) — the
122
- status-vs-action and purchase-vs-defer boundaries — which the next iteration targets. No
123
- frontier/peer or long-context comparison is claimed yet (Model 1).
124
 
125
- ## Links
126
 
127
- - **ZeroProof** — [zeroproofai.com](https://www.zeroproofai.com/) ·
128
- [huggingface.co/zero-proof-ai](https://huggingface.co/zero-proof-ai)
129
- - Technical report (v0): *Honest Evaluation for 1B-Scale Payment-Intent Detection* — coming soon.
 
 
 
 
 
 
18
  - structured-output
19
  ---
20
 
21
+ # ZeroProof Intent Model 0 (v0)
22
 
23
+ A QLoRA adapter over `gemma-3-1b` that reads a payment or ecommerce conversation and returns one structured intent object. It is the model side of ZeroProof's behavioral attestation stack: it decides what the user actually intended so a downstream layer can verify an agent's action against it. This is v0, our first release, evaluated against the frozen base on a de-duplicated, per-intent balanced held-out set.
 
 
 
24
 
25
+ ![evaluation](eval_report.png)
26
 
27
+ ## Model description
 
28
 
29
+ - Base: `gemma-3-1b` (frozen, pinned snapshot)
30
+ - Method: QLoRA supervised fine tuning, rank-16 adapter, response-only supervision, 2 epochs
31
+ - Task: route a conversation to one of 7 intents (`spend`, `send`, `exchange`, `recur`, `bill`, `reverse`, `none`) and extract the fields for that intent
32
+ - Language: English
33
 
34
+ Ground truth is taken from the user turns only. `none` is first class: in an attestation setting a false positive is a false attestation, so the model is trained and measured on getting the no-action boundary right.
 
 
35
 
36
+ The output schema and integration spec are part of the ZeroProof runtime and are not published here.
 
 
 
 
37
 
38
+ ## Model sources
 
 
 
39
 
40
+ - Org: [zero-proof-ai](https://huggingface.co/zero-proof-ai) · Collection: ZeroProof Intent Models
41
+ - Website: [zeroproofai.com](https://www.zeroproofai.com/)
42
+ - Paper: in progress
43
 
44
+ ## Versions
 
45
 
46
+ | Version | Base | Status | Notes |
47
  |---|---|---|---|
48
+ | **v0 (this)** | gemma-3-1b | released | first controlled base-vs-SFT result |
49
+ | v1 | TBD | planned | balanced trap-laden eval, frontier and peer comparison, long-context |
 
 
50
 
51
+ ## Performance
 
52
 
53
+ Base and the adapter are scored in one engine on the identical 4,000 held-out conversations, greedy decoding. Only the adapter differs. Core-type is reported macro (equal weight per intent) because the eval is 57% `none`; the micro number is shown for completeness only.
54
 
55
+ | Metric | Base gemma-3-1b | **Model 0** |
56
+ |---|---|---|
57
+ | Valid structured output | 87.5 | **99.8** |
58
+ | Intent detected (act vs none) | 35.0 | **81.9** |
59
+ | **Core-type routing, macro** | 14.4 | **70.0** |
60
+ | Core-type routing, micro | 7.6 | 79.8 |
61
+ | Detail extraction | 19.7 | **61.3** |
62
 
63
+ Per-intent core-type accuracy (n = held-out count):
 
64
 
65
+ | | none | reverse | send | exchange | bill | spend | recur |
66
+ |---|---|---|---|---|---|---|---|
67
+ | n | 2286 | 300 | 300 | 214 | 300 | 300 | 300 |
68
+ | base | 0 | 0 | 10 | 0 | 6 | 84 | 0 |
69
+ | **Model 0** | **90** | **74** | **72** | **68** | **65** | 63 | **59** |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
 
71
+ The base does not fail at random. It collapses to a single class, predicting `spend` on 80.7% of all inputs regardless of the true intent, so its only strong column is `spend`. The adapter trades that false strength for real coverage of all seven intents. Columns for a peer 1B (Llama) and a frontier parent are the v1 comparison, run on this same eval.
72
 
73
+ ## Training
74
 
75
+ QLoRA SFT on Modal, effective batch 16, 2 epochs, learning rate 2e-4, response-only masking on the frozen base. Trained on ZeroProof's proprietary conversation data: 6,000 train / 4,000 eval, human-realistic conversations across many people and situations, near-duplicates removed so eval gains are not memorized. How we build and label that data is proprietary.
 
 
 
 
 
 
 
 
76
 
77
+ ## Intended use and limitations
78
 
79
+ Intended for intent detection inside the ZeroProof attestation pipeline. v0, single base family, English. Weakest intents are `recur` (59) and `spend` (63), the status-vs-action and purchase-vs-defer boundaries, which the next data cycle targets. The confidence field is not yet calibrated; treat it as a rough signal. No frontier or peer comparison is claimed in v0.
 
 
80
 
81
+ ## Citation
82
 
83
+ ```bibtex
84
+ @misc{zeroproof2026intentmodel0,
85
+ title = {ZeroProof Intent Model 0},
86
+ author = {ZeroProof},
87
+ year = {2026},
88
+ howpublished = {\url{https://huggingface.co/zero-proof-ai/intent-model-0}}
89
+ }
90
+ ```