Eurocomponents — Buildability Assessment

Stage: Proposal sent → Zanoni intro (June 8-9)  |  Updated: 2026-06-08
Proposal (9 Giugno): adapttoai-eurocomponents.pages.dev/pre-proposal-external-v3
UI Mockup: eurocomponents-rfq-mockup.pages.dev/index-live.html  |  GitHub: Adapt-to-AI-B2B/eurocomponents-rfq-mockup

Updated Jun 8 — Delta since Call 3


1. TL;DR

EC's workflow today — 4 phases, all manual

Phase Who What happens Time today Scope
1 — Capitolato triage Back-office Receive raw project bundle (1–150pp PDFs + drawings + specs, IT/DE/FR/EN). Filter for bathroom-relevant content. Identify pod typologies + quantities. 30 min – 3 hrs v1 ✅
2 — Descrittivo Back-office Build the structured Excel per typology: 40+ columns, every material line, EC shell standards applied (CLS type, orientation, dimensions). Italian throughout. 10 min – 4 hrs v1 ✅
3 — Split / Preventivo Preventivista Price every line: supplier catalog − (50%+10%) = base cost, +34% spese generali, +K markup. Per-typology subtotals. Swiss projects: +2.5% withholding. ~3 hrs v2 🔲
4 — Offerta Back-office + Commerciale Format final client offer in input language (Word→PDF), add commercial margin, send. ~12-13pp per project. 1–2 hrs v2 🔲

What the system does

TODAY (all manual, ~6-12 hr per project, throughput-limited)
─────────────────────────────────────────────────────────────────

  RFQ ──► [BO triage]──►[BO descrittivo]──►[Preventivista]──►[BO+Comm offer]──► Client
         30 min-3 hr     10 min-4 hr          ~3 hr              1-2 hr


v1 (AI replaces phases 1+2)
─────────────────────────────────────────────────────────────────

  RFQ ──► [AI: triage + extract + standardize + translate + apply reg rules]
                               │
                               ▼
                      [Human-in-loop QA UI]        ← back-office confirms,
                      (flags linked to source PDF)   every flag → exact page
                               │
                               ▼
                    Clean descrittivo Excel
                               │
                               ▼ (HubSpot notification → preventivista)
                               │
              [Preventivista split + pricing] ──► [BO+Comm offer] ──► Client
                   unchanged ~3 hr                  unchanged 1-2 hr


v2 (extends the platform)
─────────────────────────────────────────────────────────────────

  + Phase 3: split pricing engine (supplier lookup + formula automation)
  + Article code resolution: capitolato → supplier lists (two-stage lookup)
  + Swiss withholding tax (2.5%) handling
  + Auto-photo pickup from supplier sites (Maurizio's #1 ask)
  + NO/SE input parsing + additional country coverage

v1 outcome


Research Artifacts

What to look at

ArtifactLinkWhat it shows
Live proposal (9 Giugno) adapttoai-eurocomponents.pages.dev/… What Maurizio + Zanoni see: scope, milestones, pricing
Clickable UI mockup (v0.6) eurocomponents-rfq-mockup.pages.dev/index-live.html Back-office flow, fully clickable. RFQ upload → triage → human review → descrittivo export. Alpine.js + Tailwind.
Mockup source code github.com/Adapt-to-AI-B2B/eurocomponents-rfq-mockup Annotated HTML — reference for UI flows, component breakdown, and QA review screens

Real client files — how to access them

These files are currently on Giuseppe's Mac only. Giuseppe needs to share the folder before you can open them. Ask him to send via iCloud Drive / Google Drive / WeTransfer — the folder is ~/Downloads/Mauri & Giuse/ (~50MB total, 4 complete projects).

Once you have the folder, here is exactly what's inside and what each file is for:

Mauri & Giuse/
│
├── EuroComponents_flussocommerciale_AI.pdf          ← START HERE
│     Maurizio's own 4-phase workflow diagram. The spec for what we're building.
│
├── 025-26 Residenziale Hardess Yard - Brixton (UK)/ ← PRIMARY TEST CASE (read this end-to-end)
│   ├── 00_DISEGNI E SPECIFICHE/
│   │   └── 00_DOCUMENTI CLIENTE/
│   │       ├── ...-34000-Typical Bathroom Pod.pdf         ← CAD drawing, typology 01
│   │       ├── ...-34001-Accessible Shower Pod.pdf        ← CAD drawing, typology accessible
│   │       ├── ...-34002-Adaptable Shower Pod.pdf         ← CAD drawing
│   │       ├── ...-34003-Typical Bathroom Pod Type 2.pdf  ← CAD drawing, typology 02
│   │       └── ...-18000-Accommodation Schedule.pdf       ← SOURCE of typology counts (75/213/32)
│   ├── 01_DESCRITTIVO OFFERTA/
│   │   └── 025-26 Rev 00 Descrittivo.xlsx                ← THE CANONICAL SCHEMA (40 cols × 76 rows)
│   │         This is what we output. Open this first.
│   ├── 02_SPLIT/
│   │   ├── Split 25-26 tip 01.pdf                        ← Cost-build per pod, typology 01 (~€7,953/pod)
│   │   ├── Split 25-26 tip 02.pdf                        ← Same for typology 02
│   │   └── Split 25-26 tip 03.pdf                        ← Same for typology 03
│   └── 03_OFFERTA/
│       ├── 025-26 Rev. 00 Hardess Yard ... Brixton.pdf   ← FINAL OFFER (12pp, what the client sees)
│       ├── 025-26 Calcolo prezzo_08-04-2026.xlsx         ← Sell-price calculator (K=5% applied)
│       └── FILE K 025-26 08-04.xlsx                      ← K-floor worksheet (cost floor, K=0 baseline)
│
├── 060-25 Resid.+Hotel Schwarzwaldtrio - Karlsruhe (D)/  ← HARDEST DOCUMENT (German LV, 144pp)
│   └── 060-25/
│       ├── Documenti cliente/
│       │   └── Capitolato cliente/
│       │       └── 2025-06-18_SWT_ LV Fertignasszellen.pdf  ← THE 144pp GERMAN LV
│       │             pp11-13: DGNB ENV1.2/QNG compliance matrix — 30+ DIN/EN norms.
│       │             This is the worst-case input. Read pp1-15 to understand the challenge.
│       ├── Descrittivo Tiziano/
│       │   └── 060-25 Descrittivo offerta.xlsx             ← Karlsruhe descrittivo (41c × 104r)
│       ├── Split/  (4 split PDFs by typology)
│       └── Offerta/
│           └── EC_Rev00_060-25 ... Angebot FNZ.pdf         ← German final offer
│
├── 068-26/                                                  ← THIRD PROJECT (partial — no offerta)
│   ├── 068-26 Rev 00 Descrittivo.xlsx                      ← Another descrittivo (38c × 77r)
│   └── 26005-CRA-XX-00-DR-A-11100.pdf                     ← Client CAD drawing
│
├── 126-25 Residenziale Lucens (CH)/                        ← SWISS PROJECT (French input)
│   ├── 00_DOCUMENTI CLIENTE/  (3 French PDFs)
│   ├── 01_DESCRITTIVO OFFERTA/126-25 Rev 00 Descrittivo offerta.xlsx
│   ├── 02_SPLIT/  (6 split PDFs)
│   └── 03_OFFERTA/
│       ├── 126-25 REV00 Offre sdb préfa - Resid. Lucens.pdf  ← French final offer
│       └── 126-25 Tabella costi e PV.xlsx                    ← Pricing table (IT internal)
│
└── 127-25 Co-living Crissier (CH)/                         ← SWISS CO-LIVING (French input)
    ├── 00_DISEGNI E SPECIFICHE/
    │   └── VD_ARBORA-B11_CFC 259_SOUMISSION_Prefabricated pods.xlsx  ← Client spec in Excel
    ├── 01_DESCRITTIVO OFFERTA/127-25 REV00 Descrittivo offerta.xlsx
    ├── 02_SPLIT/  (2 split PDFs)
    └── 03_OFFERTA/

Suggested reading order for Riccardo:

  1. EuroComponents_flussocommerciale_AI.pdf — understand the 4 phases (5 min)
  2. 025-26/01_DESCRITTIVO OFFERTA/025-26 Rev 00 Descrittivo.xlsx — open the canonical schema, understand the 40 columns (10 min)
  3. 025-26/02_SPLIT/Split 25-26 tip 01.pdf — see what the preventivista does with it (5 min)
  4. 025-26/03_OFFERTA/025-26 Rev. 00 ... Brixton.pdf — see the final output (5 min)
  5. 060-25/.../LV Fertignasszellen.pdf pp1-15 — understand the worst-case input document (10 min)

2. Engineering Surface Decomposition

# Surface What it does Classification Source for reuse Notes / risks
1 Inbound capture Receive incoming RFQ from client. Today: emails + Dropbox links + multi-file folder uploads. EXTEND aronlight-build/quote-gen/flows/inbound-email.ts (signatures + handoffToBackOffice gate) Aronlight's inbound expects a single email + structured attachments. EC's inbound is messier: link to a shared folder containing 20+ PDFs + drawings + a 100-page LV. Adaptation needed for folder-walk + filtering. ~2-3 days dev.
2 Document triage / filtering Filter bathroom-relevant docs out of the full project capitolato bundle. Apply 15-unit-rule per typology. NEW None — Aronlight inbound assumes already-filtered email. EC needs an LLM-driven classifier to find bathroom-relevant pages in 100-page LVs. Real risk: getting it wrong skips the bathroom spec entirely. Needs per-language keyword priors (DE: "Fertignasszellen / Bad / Sanitär"; EN: "bathroom / pod / shower"; FR: "salle de bain / douche / sanitaire"). Estimated 1-2 weeks dev. Highest-risk new surface.
3 Multi-language input parsing OCR + structured extraction across IT/DE/FR/EN/Norwegian/Swedish PDFs (capitolati) + DOCX + XLSX. EXTEND aronlight-build/quote-gen/prompts/classify-email-type.md (LLM extraction patterns) Aronlight's prompts are IT/EN. Extending to 6 languages = prompt engineering + per-language test fixtures. ~1 week dev. PDF OCR for scanned PDFs is a separate concern.
4 Domain extraction (LLM + rules → canonical record per typology) Map raw inputs to the 40-column × 76-row descrittivo schema. Per-typology side-by-side material lines. EXTEND aronlight-build/quote-gen/flows/email-classifier.ts + flows/product-matcher.ts Aronlight matches inbound email items against an Odoo catalog. EC has NO catalog — instead extracts free-form spec into a structured template. Different problem shape: spec → schema, not item → item. ~2 weeks dev.
5 EC standards library / pod-shell defaults When client doesn't specify dimensions or shell type, fill from EC's master library (concrete vs sheet-metal vs lightweight-fibre, standard wall thicknesses, etc.). NEW None. Master spec docs confirmed exist (Call 3 Q7). ~1 week dev once docs received.
6 Format-preserving multi-language translation Round-trip Italian (preventivista's working lang) ↔ input language for the descrittivo + final offer. Preserve Excel/Word format on round-trip. NEW None. Aronlight's pipeline is single-language. Strategy: wrap DeepL Pro (Canta's chosen tool — preserves format) rather than rebuild. ~3-5 days dev. DeepL business plan ~€60-80/mo.
7 Country-regulation rule engine Apply per-country regulation: UK Building Regs Part M, DE DGNB ENV1.2/DIN/VDI, IT UNI, CH SIA. NEW None. Scope contained via Maurizio's commitment to write rule tables (Call 3 Q6). System ingests structured rules + applies them as filters. ~2 weeks dev for constrained version.
8 Pricing engine — split builder Build the 11-section split. Lookups for internal prices + supplier prices. EXTEND Aronlight pricing per-line-item from Odoo, not section-aggregated. Phase 1 OUT — pricing stays manual in v1.
9 K markup + sell-price calculator Apply commercial K markup. Compute sell price + £/€ FX. REUSE Aronlight's pricing finalizer. Phase 1 OUT — pricing stays manual in v1.
10 Document generation — final offer (.docx + .pdf) Generate the 12-13 page final offer in client's language. EXTEND Aronlight has the concept but different layout. Phase 1 OUT — final offer stays manual in v1.
11 Auto-photo pickup from supplier sites Given brand + model + SKU + colour, pull product image. NEW None. Defer to v2. Maurizio's #1 emotional ask but technically highest-risk surface after regulation engine.
12 Approval / human-in-loop UI Surface the canonical record for back-office review before handoff to preventivista. EXTEND Aronlight's approval gate (flows/inbound-email.ts ends at handoffToBackOffice()). ~1.5 weeks dev.
13 Integration adapter — HubSpot Notification when descrittivo is ready → preventivista. NEW None. AdapttoAI has Lamosa SAP B1 + Aronlight Odoo + Sophie WAHA + MAGG NetSuite, no HubSpot. Read-only sufficient for v1. ~1 week dev.

Summary

Honest read: this is not a low-reuse engagement. ~46% of surfaces are NEW. We have pattern carry-over from Aronlight (same email-to-structured-output + human-in-loop architecture) but the underlying problem inverts (catalog matching → schema extraction).

Highest-risk surface: Country-regulation rule engine (#7)

Why: Karlsruhe LV alone references 30+ DIN/EN/VDI norms with material-category-specific compliance requirements (DGNB ENV1.2 / QNG, EMICODE EC1, GISCODE classes, SCCPs/MCCPs/LCCPs Chlorparaffine ≤ 0.1%, Formaldehyde ≤ 0.10 ppm, etc.). UK Building Regs Part M is implicit in the drawings. CH SIA + IT UNI not yet represented in samples but exist. If we attempt to "build the regulation knowledge" ourselves we are building an entire compliance product, not a feature.

De-risk path (confirmed Call 3 Q6): make the engine a structured rule importer, NOT a regulation-knowledge product. Maurizio writes the rules + supplies legislation files (committed). System ingests them as a structured table and applies them as filters during extraction. Scope: "rule library editor + per-country profile selector + apply rules during standardization step". ~2 weeks of dev for the constrained version.

What the country-regulation rule engine actually is (concrete)

Skip if you've worked with this kind of system before.

A subsystem that, during the extraction + standardization step (Phase 1), applies country-specific compliance requirements as filters and validators on every material line in the descrittivo, then either prevents non-compliant choices, recommends compliant alternatives, or flags them for human review.

Real examples from the materials in hand:

At runtime, for a Karlsruhe descrittivo:

"Project is German, DGNB Silver target. Proposed tile is Refin Feel. Does Refin Feel have an EMICODE EC1 declaration on file? Does its adhesive meet GISCODE D1? If yes → cleared. If no → surface a substitution recommendation OR flag for human override."

Three sub-components:

Sub-component What it does Where the data lives
Rule importer Accepts Maurizio's structured rule tables + legislation PDFs as supplementary One-time per-country input, refreshed on regulation updates
Rule library Stores rules per (country, project type, material category), versions them Database table: (country, project_type, material_category, rule_id, requirement, source_norm)
Rule applicator Validates each material line against the active profile, surfaces compliance check / flagged exceptions / suggested alternatives Runs inside the extraction pipeline, before handoff to preventivista

Constrained scope (the version we propose): rule applicator, not regulation expert. Client owns the rules + legislation updates. We own the system that applies them.

This is the difference between 2 weeks of dev (constrained) and 2 months + ongoing (unconstrained). The pre-condition "Maurizio commits to writing rule tables" was load-bearing — now resolved (Call 3 Q6).


3. Costs

Build cost — one-time

Bottoms-up by phase. Riccardo = primary builder. Giuseppe + Raffaello = architecture alignment + milestone review only.

Phase Dev hours (Riccardo) Partner hours (G+R oversight) Dev cost (€55/hr) Partner cost (€200/hr)
Kickoff + architecture alignment 5 hrs €1,000
M1: Schema + canonical record + DeepL wrap 60 hrs 3 hrs €3,300 €600
M2: Document triage + extraction + standardization 100 hrs 3 hrs €5,500 €600
Country-reg rule engine (constrained) 60 hrs €3,300
Human-in-loop QA UI + HubSpot integration 80 hrs €4,400
Handover + billing setup 5 hrs €1,000
Tooling (Claude Code + API, 4 active build months × €800/mo) €3,200
DeepL Pro during build (4 months × €70/mo) €280
Total build 300 hrs 16 hrs €16,500 €3,200
Total build cost (all-in) ~€23,200

Photo-pickup (v2): ~40 hrs dev + €2,000 tooling if feasibility lands. Not in v1 scope.
Discovery + scoping (already done, not in the above): ~20 hrs partner.

Operating cost — monthly

Once live at 240 RFQs/yr pace (~20/mo):

Line item Monthly cost Notes
Claude API (extraction + translation per RFQ) ~€200 ~€10/RFQ × 20 RFQs/mo. Scales linearly with volume.
DeepL Pro Business ~€70 Format-preserving translation. Fixed subscription.
Hosting + infrastructure ~€20 CF Pages/Workers or equivalent.
Dev maintenance (Riccardo) ~€275 ~5 hrs/mo × €55. Bug fixes, edge cases, schema updates.
Partner availability (G+R) ~€400 ~2 hrs/mo × €200. Check-ins, client escalations, product decisions.
Total monthly cost (AdapttoAI) ~€965/mo
Quota Mensile (charged to client) €1,300/mo
Monthly margin ~€335/mo (26%) At 240 RFQ/yr pace. Margin grows if volume stays flat (fixed API cost doesn't scale with our overhead).

Technical clarifications from Calls 4-6 (addendum Jun 8)

These requirements were confirmed after the surface decomposition above. They affect Surface 4 (domain extraction), Surface 6 (translation), and Surface 9 (human-in-loop UI) specifically.

Requirement Detail Surface impact
CLS / Lamierino field Required first-screen field on every descrittivo header — distinguishes pod shell type (CLS = concrete-lightweight-steel vs Lamierino = sheet metal). Must be captured from capitolato or entered manually before extraction proceeds. Surface 4 — add mandatory header field to canonical record schema
Posa orizzontale / verticale Required header field — orientation of tile/cladding installation. Affects material quantities. Must appear on descrittivo before preventivista uses it. Surface 4 — second mandatory header field
Flag-to-source linking Every AI-extracted value that is flagged for human review must link back to the exact page + paragraph in the source PDF where the value was found. Click → source is mandatory for preventivista trust. Surface 2 (triage) + Surface 4 (extraction) — source-citation must be stored per-extraction
Output languages locked: IT / EN / FR / DE only System outputs are always one of these four. Swedish or Norwegian INPUT is parsed and understood, but the descrittivo and offer are produced in IT (working language) + the corresponding output language (EN/FR/DE). No Swedish/Norwegian output in v1. Surface 6 — scope reduction: 4 output languages, not 6
Supplier pricing formula Confirmed Call 5: catalog price − (50% + 10%) = base cost. Applied uniformly across all suppliers in the split calculation. The 34% spese generali is added on top of base cost, then K markup. Surface 10 (split pricing) — formula locked; no per-supplier exception logic in v1
Swiss withholding tax (2.5%) CH projects carry a 2.5% withholding applied to Phase 2 pricing math. Must be flagged when project country = CH. Surface 10 — country-flag conditional in pricing engine
Cost formula Phase 2 base cost + waste% → +34% spese generali → +K markup (project-specific, entered by commerciale). K cell is editable, not auto-computed. Surface 10 — formula confirmed; K is human input, not AI output
Article code search phase Phase 1 extracts article codes from the capitolato. Phase 2 searches the supplier lists. These are distinct lookups with different sources — they must not be merged into one step. Surface 4 (Phase 1) + Surface 10 (Phase 2) — two-stage article code resolution

Net impact on build estimate: The CLS/Posa fields and flag-to-source linking add ~3-5 days dev to Surface 4 (extraction UI + schema). Output language reduction from 6→4 saves ~3 days. Net: roughly neutral on the €18K build estimate.

Pricing model — milestone-based (sent 9 Giugno 2026)

Note: options A/B/C/D explored during internal scoping (May 2026) are superseded. Maurizio requested zero large upfront impl fee (Call 4); pricing restructured as milestone payments tied to deliverables.

Milestone Trigger Amount
Fee di avvio Alla firma del contratto €1,000
Phase 1 completata Pipeline gira su RFQ reale, preventivista accetta il descrittivo senza rilavorazione €1,750
Phase 2 completata v2 in produzione con split pricing + HubSpot wired €3,900
Quota Mensile (da Mese 7) Ricorrente mensile da quando il sistema è live €1,300/mo

Year 1 total: €1,000 + €1,750 + €3,900 + (5 × €1,300) = ~€13,150
Year 2+ ARR: €1,300 × 12 = €15,600/yr

Margin & breakeven (milestone structure)

Pricing rationale

Why milestone-based: - Maurizio explicitly pushed back on large upfront impl fee (Call 4). Zero advance payment was his constraint. - Milestone gating de-risks the client — they only pay when the system demonstrably works. - Net effect: AdapttoAI absorbs €18K build cost, recovers it via subscription over ~14 months post-delivery. Acceptable given strategic value (Italian beachhead, construction vertical, Zanoni cash position ~€2M). - Floor check: €15,600/yr ARR well above €10K/yr floor.


4. ICP Fit

Reading b2b/docs/icp.md V3 (Apr 16, 2026). Score each condition 0-3.

ICP condition Score Evidence
C1: ERP invested but underused 1 EC uses HubSpot as workflow tracker (CRM, not ERP). SPI di EDM for procurement (confirmed Call 3 Q9). Less than the typical AdapttoAI ICP win — we don't have an ERP to live between.
C2: Back-office processing complexity 3 Complex pricing (split + K markup + commercial extra-margin + per-country sell-price + £/€ FX). Multi-format inputs. 30+ supplier brand-SKUs per project. "Request a quote" model. Dedicated back-office + preventivista + commercial roles. Strong match.
C3: High-volume manual workflows 2 (was 1, upgraded Call 3) 240 RFQs/year pace in 2026 (up from 150 historic). With +60 RFQs/year currently falling to "budget" that we can convert to real offers, transaction count is meaningful. Still inverse of typical AdapttoAI ICP (high value per transaction vs high count), but throughput pressure is real.
C4: Multi-party coordination 3 Back office + commerciale + preventivista + general manager + commercial agents + suppliers (30+ brands) + general contractors + end clients. Strong match.
Total 9 / 12

Minimum ICP fit threshold per icp.md: 7+ "worth pursuing", 10+ "strong fit". EC scores 9 → strong-fit-adjacent.

Pipeline-state context

Decision contributions per references/buildability-rubric.md


5. Recommendation

Net score (per buildability-rubric § "GO / PASS / PIVOT decision matrix")

Signal Weight Applies?
≥ 1 NEW surface that is also high-risk -3 YES (regulation rule engine, photo pickup) — but de-risk path now confirmed via Call 3 Q6, effective weight closer to -2
≥ 50% surfaces are REUSE +2 NO (only 1 of 13 = 8%)
Strong direct competitor with public pricing < ½ our anchor -2 NO (none identified)
No direct competitors found, adjacent inadequate +2 YES (but with caveat that scan was time-bounded)
Year-1 ARR < floor (€10K) -1 NO (Y1 revenue €13,150 — above €10K floor)
Year-1 LTV ≥ 2× build cost +2 NO (Y1 €13,150 vs build cost €18K — Y2+ subscription recovers by Mes 20)
ICP score 75%+ +1 YES (9/12 = 75%, refreshed Call 3)
ICP score < 50% -2 NO
Capacity stretched (2+ active builds) -1 YES (Aronlight in active build)
Strategic value high +2 YES
Revenue urgency HIGH +1 YES (refreshed Call 3)
Client decision-authority real +1 YES

Net score: −2 + 2 + 1 + 2 − 1 + 2 + 1 = +5

Threshold: 0 to +3 → PIVOT. 4+ → GO. EC at +5 → GO (smaller shape).

Auto-PASS red flag check

No auto-PASS triggers. Verdict stands.

Verdict: PIVOT → GO (smaller shape)

2026-05-07 verdict was PIVOT. Upgraded to GO (smaller shape) on 2026-05-12 after Call 3 resolved 3 of 4 pre-conditions including the load-bearing regulation engine de-risk. Same scope as the PIVOT recommendation; pre-conditions now mostly checked.

Reasoning (5 bullets, citing earlier sections)

  1. Regulation engine de-risked — Section 2 surface #7 was the highest-risk NEW surface. Call 3 Q6 confirmed Opzione A: Maurizio writes the rules in our format. This converts the surface from "build a compliance product" to "ingest a structured rule table" (~2 weeks dev instead of ~2 months). The biggest single risk on the engagement is now contained.
  2. Volume + urgency upgrade strengthens the economics — Section 3 originally used 150 RFQ/year baseline. Call 3 Q4+Q5 revealed 240/year pace with 40% being "budget" estimates Maurizio wants to eliminate. Higher real RFQ volume + explicit production gap means win-rate uplift is the real lever; labor-cost is the floor.
  3. ICP fit upgrades from 8/12 to 9/12 — Section 4 C3 (high-volume) was scored 1 based on 150/year. With 240/year pace, C3 is closer to 2. Pushes ICP into the 75% threshold.
  4. Capacity constraint is real but timeline still works — Aronlight build active. EC kickoff scheduled post-Aronlight Mes 3 (July-Aug 2026). Pre-condition #2 (Aronlight clean) is the only unresolved one — independent and on track.
  5. Strategic value confirmed — Italian beachhead, Maurizio's top-down decision authority validated, marquee construction-vertical reference. Milestone pricing (€1K avvio + €1.75K Phase 1 + €3.9K Phase 2 + €1.3K/mo) sent June 9 — economics meet the conservative case acceptability bar at Mes 20 breakeven.

GO — smaller shape that works

Smaller shape: - v1 ONLY = document triage + canonical record + standardization (descrittivo Excel render) + multi-language IT-middle automation + constrained country-regulation rule engine. - v1 OUT: photo-pickup (defer to v2 with separate billing), final offer document generation, pricing split engine end-to-end automation, supplier-quote sub-flow. - Smaller country footprint at launch: UK + DE + IT only. Add CH + Norwegian + Swedish in v2 once UK/DE/IT live. - Tighter regulation engine: ingest Maurizio's rule tables, do NOT independently research norms.

Pricing on the smaller shape (sent 9 Giugno 2026): - Fee di avvio (alla firma): €1,000 - Phase 1 completata: €1,750 - Phase 2 completata: €3,900 - Quota Mensile (da Mese 7): €1,300/mo - Year-1 total: ~€13,150 - Year-2 ARR: €15,600/yr - Breakeven: ~Mes 20

Timeline (updated Jun 8): - 2026-05-12 — DONE: Q&A recap sent to Maurizio. - 2026-05-26 — DONE: internal pre-proposal aligned (Giuseppe + Raffaello). - 2026-06-09 — DONE: proposal "9 Giugno" sent to Maurizio. Zanoni intro meeting June 8-9 (NDA likely required before Zanoni sees pricing). - Kickoff: July 2026 (after Aronlight Mes 3 + Zanoni sign-off). - Phase 1 delivery: ~August 2026 (pipeline live on real RFQ, preventivista accepts descrittivo). - Phase 2 delivery: ~September-October 2026 (split pricing + HubSpot wired, handover). - Quota Mensile starts: Mese 7 (~January 2027).

What's cut from original ask: - Auto-photo pickup (Maurizio's #1 emotional ask) — deferred to v2, billed separately, framed as feasibility prototype during M3 delivery. - End-to-end automation (Maurizio knows we're not doing this — explicitly de-prioritized in Call 1). - 6-language coverage at launch — limited to UK/DE/IT in v1. - Final offer document generation — manual continues.

Pre-conditions (must be true before kickoff) — UPDATED 2026-06-08

Net status: 4 of 5 pre-conditions resolved. Zanoni sign-off is the remaining gate.


Appendix A — Materials Read (Gate)

Every artifact below was actually opened. Generic auto-summaries from the inventory script have been replaced with reads-confirmed descriptions.

Read in full / sufficient depth

# Artifact Type What's in it (read-confirmed)
1 EuroComponents_flussocommerciale_AI.pdf PDF 1pp Canta's 4-column workflow diagram. Step 1 Capitolato (BackOffice + Commerciale): file unico vs multi-file, building-wide vs bathroom-specific, IT/DE/FR/EN/Swedish/Norwegian. Step 2 Descrittivo (BackOffice): per-typology, EC standards on shell/structure, alternativa più economica, Italian only. Step 3 Preventivo (Preventivista): internal prices for shell, supplier prices if database is <6mo old, request quotes from external suppliers, +34% markup. Step 4 Offerta (BackOffice + Commerciale): standardize, add extra margine k, translate to input language.
2 Brixton/00_DISEGNI E SPECIFICHE/00_DOCUMENTI CLIENTE/HAL-HYL-...-34000-Typical Bathroom Pod.pdf PDF 1pp CAD drawing: typical bathroom pod plan + sections + numbered component key. Plasterboard faces 892, internal 2055, drainage offsets, external dimensions. Mostly geometry, very limited extractable text.
3 Brixton/00_DISEGNI E SPECIFICHE/00_DOCUMENTI CLIENTE/...-34001-Accessible Shower Pod.pdf PDF 1pp Accessible shower pod CAD. Component key with "Part M Vol 2" compliance legend, drainage SVP/RWP icons, dimensions. UK-specific accessibility regulation reference.
4 Brixton/00_DISEGNI E SPECIFICHE/00_DOCUMENTI CLIENTE/...-34002-Adaptable Shower Pod.pdf PDF 1pp Adaptable shower variant. "8 CLEAR OPENING - DOES NOT COMPLY" — flagged design issue noted in margins. Same component-key pattern.
5 Brixton/00_DISEGNI E SPECIFICHE/00_DOCUMENTI CLIENTE/...-34003-Typical Bathroom Pod Type 2.pdf PDF 1pp Type 02 variant of typical pod. CAD geometry only, ~9 dimensional callouts.
6 Brixton/00_DISEGNI E SPECIFICHE/00_DOCUMENTI CLIENTE/...-18000-Accommodation Schedule.pdf PDF 1pp Accommodation schedule with unit numbers + GIA. This is the source of the typology counts (75 / 213 / 32). 1-page table, partly cut off in extracted text.
7 Brixton/01_DESCRITTIVO OFFERTA/025-26 Rev 00 Descrittivo.xlsx Excel Canonical record schema. Foglio1 has 40 columns × 76 rows. Header rows 1-13 = project metadata (rev, project name, project type, location/address, drawings yes/no, capitolato yes/no, contacts, delivery date, install type, total qty, typology breakdown). Row 16 = column headers ("N." + "Materiale" + one column per typology + "Note Aggiuntive"). Rows 17-76 = structured material lines with side-by-side typology costing. Foglio2 + Foglio3 are 1×1 stubs (unused).
8 Brixton/02_SPLIT/Split 25-26 tip 01.pdf PDF 3pp Cost-build per pod for typology 01 (75 units). 11 numbered sections: Scocca, Imp. Elettrico, Imp. Idraulico, Imp. Areazione, Imp. Riscaldamento, Rivestimento, Tinteggiatura, Arredo, Carpenteria, Chiusura, Trasporto. Each line = quantity × material unit + labor unit + altro = totale. Final per-pod cost €7,953.47, footer says "aggiungere K". Real brand+SKU lines (Heritage Brass XBK,150,BK / ASTRO Taro 1240026 / Gewiss GW44208 / GROHE 38422 / IDEAL STANDARD I.LIFE T517801 / HANSGROHE Logis 41710000 / TOWELRADS 130013 / Refin Feel / Waterstone Nova / DULUX Sterishield).
9 Brixton/03_OFFERTA/025-26 Rev. 00 Hardess Yard Residential Project, Brixton (UK).pdf PDF 12pp Final external offer. Cover (McAleer & Rushe contractor name, "MONOLITE SMART" pod product). Summary TOC. Introduction (Javier Maanon Export Manager + Carin Höglund Sales). Certifications page (ISO 9001/14001, TUV fire 45min + sound 40dB, Lloyd's 10yr liability, SINTEF). Tech specs page. Bathroom Types & Measures: Type 01 75pz / Type 02 213pz / Type 03 32pz, dimensions in cm, weight, CLS density. Bathroom Equipment Specification: same SKU list as the split, presented as text spec rather than cost-line. Quotation: Type 01 €8,350/pod × 75 = €626,250; Type 02 €8,340 × 213 = €1,776,420; Type 03 €13,190 × 32 = €422,080. Total €2,824,750 / £2,457,177 (FX 0.87 09-04-2026). ExWorks Bedizzole. Sales terms: 30-day validity, 20% advance + 80% L/C, 4-phase production timeline (mock-up design 3-4w + production 6-8w + first delivery 8w after mock-up approval). 11 included items + 9 excluded items + 11 general sales conditions + Environmental Responsibility (BREEAM, Minergie, LEED) + Privacy Report (GDPR boilerplate).
10 Brixton/03_OFFERTA/025-26 Calcolo prezzo_08-04-2026.xlsx Excel Sell-price calculator. 11 cols × 12 rows. Columns: Bathroom Pod Typology / Qty / SPLIT prices / K = 5% / Rounded up/down Unit price / Sell price (£) / Rounded up/down Unit price (£) / Total price / Total price (£). Type 01: SPLIT €7,953.47 → ×1.05 → €8,351.14 → rounded €8,350 → £7,265 → row total €626,250 / £544,875. Type 02: SPLIT €7,941.35 → €8,338 → €8,340 → £7,254. Type 03: SPLIT €12,562.10 → €13,190 → £11,475. Grand total €2,824,750 / £2,457,177. The K=5% cell is a single value applied uniformly to all typologies in this project.
11 Brixton/03_OFFERTA/FILE K 025-26 08-04.xlsx Excel MYSTERY FILE — answered. Sheet "calcolo K", 8 cols × 16 rows. Columns: TIPOLOGIE / QUANTITA' / COSTO K=0 (spese generali già incluse) / TOTALE k=0 / PREZZO DI VENDITA / TOTALE / MARGINE / K. Pre-populated with Type 01-03 cost rows where K=0 (no markup). MARGINE column = 0 in baseline. This is the cost-floor worksheet — used by the commerciale to know the floor below which margin goes negative. Different artifact from "Calcolo prezzo" which computes the sell price WITH K markup.
12 Karlsruhe/Documenti cliente/Capitolato cliente/2025-06-18_SWT_ LV Fertignasszellen.pdf PDF 144pp (read pp 1-30) The German LV chaos. Pages 1-3: cover + project intro (Schwarzwaldtrio Karlsruhe, 21-floor high-rise + mobility hub + heritage building, EFH 40 standard). Pages 4-10: BVB special contract conditions (safety, lean management daily 5-10 min standups, logistics, DGNB Silver certification + KfW BEG 40 + NH-Klasse). Pages 11-13: Anlage 1 DGNB ENV1.2/QNG materials matrix — for every product category (floor coverings, adhesives, sealants, primers, surface coatings, plastic products, wood materials), required compliance: VOC < 10 g/l for some, EMICODE EC1/EC1PLUS, GISCODE classes, SCCPs/MCCPs/LCCPs Chlorparaffine ≤ 0.1%, Formaldehyde < 0.10 ppm, etc. Pages 14-30: ZTV technical contract conditions. References 30+ DIN/EN/VDI norms.
13 Karlsruhe/Offerta/EC_Rev00_060-25 ... _Angebot FNZ.pdf PDF 13pp DE final offer (German). Same EC template structure as Brixton offer but in German. Recipient: Johann Bunte Bauunternehmung (the GC who issued the LV). Pricing: Typ S1/S2 122 × €12,125.84 = €1,479,351; S5/S6 11 × €13,453.07 = €147,983; W1/W2 180 × €9,612.39 = €1,730,229; W3 12 × €10,875.96 = €130,511. Gesamtsumme €3,488,076.61. Brand+SKU list COMPLETELY DIFFERENT from Brixton: BERKER / WEVER / LTS / GEBERIT / IDEAL STANDARD / LAUFEN / GROHE / DORNBRACHT / HEWI / ZEHNDER / KERMI / MIRAGE / CE.SI / V&B / FERMACELL / WEDI / SAINT GOBAIN / WÜRTH / BAULMANN / AERECO / ISO HAFNER / BOS. Per-market product mapping confirmed — same product family but every SKU re-mapped per country.
14 068-26/068-26 Rev 00 Descrittivo.xlsx Excel inventoried only Foglio1 38c × 77r. Confirmed Call 3 Q3: was the capitolato example, not abandoned. Schema dimensions match Brixton's 40c × 76r within rounding — confirms canonical descrittivo template is reused.
15 068-26/26005-CRA-XX-00-DR-A-11100.pdf PDF 1pp Inventory said "40x40mm box steel frame, Juton Pilot QD grey steel primer, 12.5mm Gyproc backed duplex moisture resistant board" — confirms bathroom drawing. UK or US client. Not opened in full.
16 068-26/D23004-EDC-ZZ-XX-SP-ME-0001.pdf PDF (size 363KB) Mechanical specification, not opened. Likely the ME-engineering spec document for the mechanicals.

Inventoried only (script auto-summary, not opened end-to-end)

Artifact Reason not opened
Karlsruhe LV pages 31-144 Time bound — first 30 pages were sufficient to confirm the "100-page general capitolato chaos" thesis.
Karlsruhe Tiziano descrittivo (060-25 Descrittivo offerta.xlsx, 41c × 104r) Not opened. Sheet dimensions match Brixton schema.
Karlsruhe split PDFs (4 files, 4pp each) Not opened. Same structure as Brixton split (read in full).
Lucens (CH) descrittivo + offer + 6 splits NOT opened. Swiss French project. Logged as gap. Call 3 Q3 confirmed this is 127-25, won.
Crissier (CH) descrittivo + offer + 2 splits NOT opened. Co-living project. Logged as gap.
Brixton .docx versions of offer + Karlsruhe .docx python-docx not installed; format-equivalent to the PDF versions which were read.

Materials NOT received but expected (from call notes)

Gate check — passed.

All artifacts in the "Read in full" section have non-stub summaries written from direct reads. Inventoried-only artifacts are listed with explicit reason for not opening. Critical sample (Brixton end-to-end + Karlsruhe LV preamble + Karlsruhe Angebot) is sufficient to support sections 2-5.


Appendix B — Open Questions

Resolved by Call 3

  1. Master pod-shell library — ✅ Call 3 Q7 — exists, Maurizio will share.
  2. K markup variability — ✅ Call 3 Q8 — 34% base + variable commerciale K (3-6%), direzione approves.
  3. Supplier database — ✅ Call 3 Q9 — SPI di EDM (https://edm.it/software-gestionale/).
  4. Country regulations commitment — ✅ Call 3 Q6 — Opzione A confirmed.
  5. Lost-deal anatomy — ✅ Call 3 Q4+Q10 — 38% prezzo, 30% bagni in opera, 28% appalto perso. 068-26 was the capitolato example, not abandoned. 127-25 (Lucens) won, 060-25 (Karlsruhe) lost.

Still open — to ask Maurizio

Sent in the updated questions-to-canta.html (Q11 added 2026-05-12).

  1. Descrittivo template canonicality — Brixton 40c × 76r. Karlsruhe 41c × 104r. 068-26 38c × 77r. Same template + project extensions or genuinely different? ⚠ PARTIAL — Call 3 Q3 suggests same canonical template. Resolve via inspection of master spec docs (pending).
  2. FILE K vs Calcolo Prezzo — Are both files always produced? Will infer from master spec docs once received.
  3. The "second client" Maurizio mentioned — Worth a 30-min intro call before EC proposal goes out.
  4. Norwegian + Swedish coverage — ASKED in questions-to-canta.html Q11. Awaiting his answer.
  5. Maurizio's Claude offer template — ASKED in questions-to-canta.html ASKS section. Awaiting his share.

Dropped from tracking (not real open questions)


Appendix C — What we did NOT do

Honest record of where this assessment fell short.