Capitolato Queue
What this mockup is modeling
Maurizio's EuroComponents_flussocommerciale_AI.pdf — 4 steps Capitolato → Descrittivo → Preventivo → Offerta. v1 system replaces Steps 1 + 2 only; Steps 3 + 4 stay manual (see Phase 3 + 4 screens off Handoff).
| Fit | Code | Project | Customer | Country / Lang | Docs · Pages | Units / Typ. | Received | Effort |
|---|---|---|---|---|---|---|---|---|
| / | ||||||||
| No capitolati match these filters. | ||||||||
Click a row to open. Esc closes any modal. placeholder keyboard navigation not wired.
Source documents
AI triage summary
Units check 15 per typology · 50 minimum total
| Typology | Units | Rule |
|---|---|---|
| ≥ 15 < 15 · drop? | ||
| Total | ≥ 50 no offer |
Rule is undocumented but sacred (call-notes.md:82–85). EUR 6K design cost per typology = uncompetitive below 15.
Country regulation profile
- ·
Rule tables maintained by Maurizio's ufficio tecnico. System applies; does not research.
Language flow
DeepL Pro hard-locked (round-trips Excel/Word with format preserved). Brand/model/SKU codes untranslated.
How to read this screen
Confidence per row
Caveat — this mockup: the green / yellow / red chips on each row are hand-authored in the demo data to illustrate the UX. The real rule for what tips a field from green to yellow to red has not been defined yet — open architecture question for v1 build (likely Riccardo + Maurizio joint call).
Source linking
Each row carries a ⓘ DOC N · p.X chip pointing back to the document and page where the value was extracted. Clicking opens the source preview pane on the right. Per-typology quantity cells have their own chip when the count was read from a drawing.
DOC numbers are decoded in the legend banner under the classification strip (collapsible — click "Source documents").
Field grounding (where each value comes from)
- cited — value was extracted from a specific document + page (most row-level fields)
- inferred — value derived from context, no direct citation. Lower confidence by definition.
- default applied — EC internal standard used because the spec was silent (e.g. scarico, adduzione). UI affordance for this is not yet built; would render as a third state, neither flagged-missing nor fully cited.
Known unknowns — open decisions
Decisions we haven't locked. Each affects the v1 architecture. Most need Maurizio (commercial / process signal); some also need Raffaello (eng sign-off).
- Preventivista's role in v1 (Maurizio + Raffaello) — today the mockup says v1 stops at descrittivo handoff and preventivista does ALL pricing manually in Excel. Open question: should v1 extend a step further into Phase 3 by catalog-matching each descrittivo line against supplier DBs (Grohe, Rifin, EC internal), auto-filling rough prices, and asking preventivista to only confirm / source items without a match? Maurizio's Call 4 framing: "il matching è abbastanza facile" once the catalog DB exists. Scope expansion affects pricing PR #87 + V2 anchor.
- Confidence rule — what concretely tips green → yellow → red? Today the chips are authored, not computed.
- Posa detection — only Lucens has a source-cited posa value. The other 4 packages' orizzontale/verticale labels were assumed when the field was added; no extraction rule defined.
- Structure detection — CLS / Lamierino is well-cited in the materiale rows. Open question: is that the rule (read material rows then back-fill the header), or is structure decided upstream by humans before AI runs?
- Brand vs Model split — when capitolato says "lavabo Valdama," is Valdama brand or model? Ambiguity rule not defined.
- Per-typology quantity rule — count from drawings, derive from BoQ, or apply "1 fixture per bathroom × N bathrooms"? Three different code paths.
- Section auto-assignment — AI maps each extracted line into one of the 76 template rows. Mapping rule (vocabulary? semantic match?) not specified.
- Cross-document conflict resolution — when Accommodation Schedule says one thing and a pod drawing says another, which wins?
- Language normalization — capitolati can be IT / DE / FR / EN / SV / NO. Today mockup is all-Italian; real flow needs a rule (extract-then-translate vs translate-then-extract).
- Revision diff — when client sends 26-25/01, does AI diff against 26-25/00 or re-extract from scratch?
- Capitolato vs drawing mismatches — item listed in one but not the other. Today no UI to surface the conflict.
- Default-applied state — EC standard fields (scarico, adduzione) need their own UI affordance, not the missing-field flag.
This list lives in the mockup itself so it's visible during pressure-test reviews instead of buried in call notes. Update as questions get answered.
| L. | Fit | Action | Materiale (IT) | Cheaper alt. (EC) | Reg. | Note Aggiuntive | ||
|---|---|---|---|---|---|---|---|---|
|
|
default applied
|
—
|
Propose alt.
|
— |
Descrittivo ready for preventivista
| Output file | 40 cols × 76 rows · 3 typology columns |
| Cells confirmed | green · yellow (preventivista review) · red (flagged) |
| Language | Italian (preventivista working language) |
| Cheaper alternatives | proposed (Maurizio's "alternativa simile più economica") |
| Regulation profile | |
| Downstream | → Preventivista (Phase 3 split + 34% ricarico) → Commerciale (Phase 4 +Margine k) — out of v1 scope |
Capacity note
1 preventivista is the explicit bottleneck (call-notes.md:299). Today's pace: 2 / 4 descrittivi shipped to preventivista. Faster Phase 1+2 → more full quotes vs budget estimates → conversion lift.
⚑ rows flagged from Phase 2
Read each BO note, then Resolve the row — confirm AI's brand+model, pick a substitute, or add a missing line. All flagged rows must be cleared before pricing the split. Pings to BO / Ufficio Tecnico / Maurizio happen out-of-band; the preventivista owns resolution either way.
Resolve options: confirm AI's brand/model, pick a substitute, or add a missing line. Per Maurizio's Call 4 feedback (2026-05-19), there's no separate "escalate" path in the system — the preventivista owns the decision and pings BO / Ufficio Tecnico / commerciale out-of-band when needed.
Preventivo split — 11 sections
Today: ~3 hr per project · preventivista works in Excel template, saves as locked PDF
| # | Section | Price source | Cost |
|---|---|---|---|
| Σ | Cost basis (somma sezioni) | — | |
| +R | Ricarico standard +34% (preventivista margin · per flussocommerciale_AI.pdf) | Fixed | |
| = | Preventivo subtotal (to Backoffice + Commerciale for Phase 4) | Locked PDF |
What's manual here (and stays manual in v1):
- · Preventivista fills lighting / mirrors / faucets / sanitary brand+SKU by hand.
- · Scocca + struttura priced from EC's internal factory costs.
- · Database lookups for supplier prices (valid if updated within last 6 months).
- · If price stale → request supplier preventivo, type in manually.
- · Locks the file as PDF on save to prevent mid-pipeline edits.
Commercial discretion. "Carica il 3% / 5%" (call-notes.md). Stacked on top of preventivista's +34% ricarico. Final = cost × 1.34 × (1 + k/100). Direzione approves above 5%.
Mocked equivalent (what the v1 system would produce — Phase 4 manual)
| Tipologia | Unità | €/unità | Totale |
|---|---|---|---|
| Totale offerta | — |
Prezzo cost basis (somma sezioni preventivo): €
Ricarico preventivista (+34%): × 1,34
Margine commerciale (+%): ×
Cost × 1,34 × =
What's manual here (and stays manual in v1):
- · Commerciale picks Margine k (3–5% usual, 6%+ requires direzione approval).
- · Backoffice translates IT offerta back to client's original language with DeepL Pro.
- · Build final Word file → export as locked PDF.
- · Send to client via email (or via HubSpot, the existing flow).
- · Commerciale runs negotiation.
v1 stopping line is at Handoff.
Phases 3 and 4 above remain manual. v2 surfaces (Phase 3 split automation + Phase 4 final-offer generation) are scoped separately and not part of the v1 commercial agreement.
History
| Status | Code | Project | Customer | Country | Units | Last update | Reviewed by |
|---|---|---|---|---|---|---|---|
| No history matches. | |||||||
Real EC archive: ~240 RFQs / year, 3–4% conversion baseline, 40% fall back to "budget estimates". placeholder drill-down not wired.