29. maj 2026
Študija primera: kako bi zgradili AI agenta za ponudbe
Referenčna izvedba za podjetje po meri: Claude Desktop opiše posel, MCP strežnik deterministično izračuna ceno in vrne PDF ponudbo. Arhitektura, cenovni model, orodja in primer poteka.
To je referenčna izvedba (ne dokončan projekt): kako bi za tipično podjetje po meri — recimo mizarstvo z okni in vrati — zgradili AI agenta, ki sestavlja ponudbe. Cilj: lastnik v Claude Desktop opiše posel, nazaj dobi ošteviljčeno PDF ponudbo. Ključno načelo iz prejšnjega članka velja: ceno izračuna orodje, ne model.
Arhitektura
Claude Desktop ──MCP/HTTP──▶ MCP strežnik (Cloudflare Worker)
├─ cenovna pravila (deterministično)
├─ podatki: D1 ALI Intrix CRM (prek API)
└─ PDF generator (+ R2 shramba)
Agent samo zbere parametre in kliče orodja; vsa logika in podatki ostanejo na strežniku, pod nadzorom.
Korak 1 — cenovni model
Najprej cenik prelijemo v pravila. Za okno npr.:
povrsina_m2 = (sirina_mm * visina_mm) / 1_000_000
cena = povrsina_m2 * cena_m2[material] // les, ALU-les …
+ zasteklitev[tip] // enojna/dvojna/trojna
+ okovje
+ (montaza ? montaza_m2 * povrsina_m2 : 0)
Cenovne tabele (cena_m2, zasteklitev, montaza_m2) so podatki, ki jih je mogoče urejati brez posega v kodo. Tu je 80 % vrednosti projekta.
Korak 2 — MCP orodja
Strežnik izpostavi nekaj orodij prek MCP. calculate_quote z jasno shemo:
{
"name": "calculate_quote",
"inputSchema": {
"type": "object",
"properties": {
"items": { "type": "array", "items": {
"type": "object",
"properties": {
"tip": { "enum": ["okno", "vrata", "protipozarna_vrata"] },
"sirina_mm": { "type": "integer" },
"visina_mm": { "type": "integer" },
"material": { "enum": ["les", "alu-les"] },
"zasteklitev": { "enum": ["enojna", "dvojna", "trojna"] },
"kolicina": { "type": "integer" },
"montaza": { "type": "boolean" }
}, "required": ["tip", "sirina_mm", "visina_mm", "kolicina"]
}}
}, "required": ["items"]
}
}
Vrne postavke s cenami in skupno vrednostjo (z DDV in brez). Drugo orodje create_quote shrani ponudbo, dodeli številko in vrne PDF.
Korak 3 — shramba in PDF
V D1 preprosta tabela:
CREATE TABLE quotes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
number TEXT UNIQUE, customer TEXT,
items TEXT, -- JSON
total_net REAL, total_gross REAL,
created_at TEXT DEFAULT (datetime('now'))
);
PDF sestavimo iz predloge z njihovim logotipom, pogoji in veljavnostjo; shranimo v R2 in vrnemo povezavo.
Korak 4 — povezava s Claude Desktop
Brez lokalnega strežnika — Claude Desktop se poveže prek HTTP z bearer tokenom (ali enako v Claude Code):
claude mcp add --transport http ponudbe https://primer.si/mcp \
--header "Authorization: Bearer <TOKEN>"
Možnost: povezava z Intrix (obstoječi ERP)
Če podjetje že uporablja Intrix (CRM s potjo povpraševanje → ponudba → posel), agentu ni treba graditi ločenega imenika strank. MCP strežnik se poveže z Intrix prek njegovega API-ja:
najdi_stranko— bere stranke iz Intrix CRM (brez podvajanja podatkov).create_quote— ponudbo zapiše nazaj v Intrix kot ponudbo, vezano na stranko, da ostane v obstoječem prodajnem lijaku.
Cenovni izračun ostane v MCP strežniku (deterministična pravila), saj cene po meri pogosto niso del ERP-ja. Tako dobite en vir resnice — prodajni proces v Intrixu se ne spremeni, AI le skrajša korak od opisa do ponudbe. Obseg integracije je odvisen od Intrix API/integracijskih možnosti, kar uskladimo s ponudnikom (Intera).
Primer poteka
Lastnik: Ponudba za Novak — 3 lesena okna 1200×1400 dvojna zasteklitev z montažo, 1 protipožarna vrata 900×2100.
- Claude pokliče
calculate_quotes tremi postavkami → dobi cene in skupno. - Claude pokliče
create_quote→ ponudba 2026-041, PDF povezava (in zapis v Intrix, če je povezan). - Lastnik PDF pregleda, potrdi in pošlje. Skupaj minuta.
Varnost in faze
- Deny-by-default bearer token; agent dobi le orodja za ponudbe.
- Podatki strank v EU (GDPR).
- Faze: (1) zajem cenika, (2)
calculate_quote+create_quote+ PDF, (3) Claude Desktop in uvajanje, (4) CRM/e-pošta.
Rezultat je dosleden, ošteviljčen in shranjen postopek — osnutek, ki ga potrdi človek. Točno to je naša storitev AI integracije.