Dove interviene l'AI

AppaltIntel usa AI generativa (Claude di Anthropic) in sette punti precisi del prodotto. Questa pagina elenca ognuno: cosa fa, su quali dati lavora, quali sono i vincoli linguistici imposti nel prompt, quale modello viene chiamato, quanto costa, come funziona la cache, per chi è disponibile. Niente "scatola nera": ogni feature AI è documentata qui in modo trasparente.

Principio guida

Tutto il testo AI generato è opt-in via click (mai auto-load) e rigorosamente descrittivo. I prompt vietano esplicitamente:

  • Valutazioni qualitative su imprese o stazioni appaltanti ("aggressivo", "competitivo", "leader", "dominante", "rischio").
  • Raccomandazioni di partecipazione ("consigliato", "vale la pena", "imperdibile", "ottima opportunità").
  • Previsioni di vittoria ("vincerai", "alta probabilità", "buona chance").
  • Linguaggio statistico-tecnico nei testi user-facing ("mediana", "percentile", "campione", "distribuzione").

Quando vedi una sintesi AI sull'interfaccia, è descrizione di fatti presenti nei dati o nel documento — non valutazione, non previsione, non consiglio. La decisione operativa (partecipare a una gara, fidarsi di un fornitore, ecc.) resta sempre del tuo ufficio gare.

Privacy: dove vanno i dati

Ogni chiamata AI invia i dati strutturati o il testo del documento ad Anthropic (Stati Uniti), sub-processor dichiarato nella privacy con Standard Contractual Clauses UE. Anthropic ha politiche di non-training sui dati API enterprise. Niente PDF binari viene archiviato sui nostri server: il riassunto testuale prodotto sì (solo per cache), il file originale no.

I sei punti di intervento

1. Assistente AI conversazionale

Dove: pagina /assistente. Chat in italiano, due intent gestiti contestualmente:

  • search_open_tenders: traduce richieste in filtri strutturati (CPV, regione, importo, scadenza) e mostra i bandi attivi corrispondenti.
  • market_analytics: risponde a domande sul mercato storico (top fornitori/buyer su CPV+regione, andamento annuale, distribuzione procedure).

Input: messaggio utente + cronologia conversazione (cap 10 turni). Output: filtri/query strutturati via Pydantic + breve messaggio testuale. Modello: claude-sonnet-4-6. Costo: ~$0.005-0.01 per turno. Cache: prompt cache ephemeral sul system frozen.

2. Briefing AI sui profili (fornitore, SA, bando aperto)

Dove: bottone "Genera analisi AI" sulle pagine di profilo fornitore /fornitore/{slug}-{id}, stazione appaltante /stazione-appaltante/{slug}-{id} e dettaglio bando aperto. Produce 2-3 paragrafi narrativi descrittivi: volume, controparti ricorrenti, regioni, ribassi tipici (solo se sample ≥ 20). Input: dati strutturati aggregati dalle view DuckDB (top buyer, top CPV, distribuzione regioni, ribassi p25-p50-p75). Modello: claude-sonnet-4-6. Costo: ~$0.005-0.01. Cache: tabella Postgres ai_briefings con TTL 30 giorni; flag "riutilizzato" visibile quando il briefing arriva dalla cache.

3. Riassunto AI dei documenti di gara (PDF)

Dove: bottone "Riassumi con AI" accanto a ogni PDF nella sezione "Documenti di gara" del dettaglio bando regionale; + pagina /strumenti/riassumi-bando per upload PDF custom. Estrae oggetto, punti chiave, requisiti partecipazione/tecnici, criteri aggiudicazione, importi, scadenze, note di attenzione. Input: testo estratto dal PDF con pypdf (cap 60.000 caratteri). Output: schema Pydantic DocumentSummary. Modello: claude-sonnet-4-6. Costo: ~$0.12-0.25 al primo riassunto (PDF lungo). Cache: cross-utente per i regionali su chiave (ocid, document_id, content_sha256) — il SHA-256 è quello già calcolato dai crawler upstream; per-utente per gli upload custom su (user_id, sha256). Privacy upload: il PDF NON viene archiviato; vive solo in RAM per il tempo del processing.

4. Match-fit bando vs profilo fornitore

Dove: bottone "Valuta il fit con la mia impresa" nel dettaglio di un bando aperto. Confronta il bando (CPV, regione, importo, scadenza) col profilo storico delle aggiudicazioni del fornitore loggato e produce un'etichetta descrittiva (sovrapposizione alta / media / esplorativa) + narrazione + fattori pro/contro. Etichetta NEUTRA, NON probabilità di vittoria — vedi principio guida sopra. Input: profilo aggregato del supplier (top CPV/regioni, fascia importo, distribuzione ribassi) + dati del bando + contesto di mercato sul CPV. Gate: tenant con P.IVA verificata (vat_verified_at NOT NULL). Modello: claude-sonnet-4-6 (impostazione attuale; Haiku in roadmap per ridurre costo). Costo: ~$0.005. Cache: per-supplier in match_fit_evaluations, TTL 7 giorni.

5. Intro narrativo nel digest watchlist settimanale

Dove: l'email digest del lunedì mattina (CLI appaltintel-watchlist-digest, cron 08:00 CEST), in TESTA al body. NIENTE nuova email: l'intro è inline nella mail che già parte. Sintetizza in 3-4 frasi cosa è successo nella settimana (totale match, bando di maggior valore, controparti ricorrenti). Gate: tenant Pro Studio o superiore con almeno 5 nuovi match in settimana. Free continua a ricevere la lista pulita. Modello: claude-sonnet-4-6. Costo: ~$0.01-0.02/tenant/settimana. Resilienza: se Claude fallisce, il digest spedisce comunque la lista esistente.

6. Allargamento semantico keyword watchlist

Dove: bottone "Suggerisci sinonimi" nel form keyword della watchlist (/account/watchlists/{id}). Date le keyword libere dell'utente + contesto CPV/regione, l'AI propone 5-8 varianti tipiche dei bandi italiani PA (es. "manutenzione strade" → "ripristino sede stradale", "rifacimento manto", "asfaltatura"). L'utente spunta quelle che vuole tenere; vanno in watchlists.ai_expanded_keywords e amplificano il matching testuale del crawler. Modello: claude-sonnet-4-6. Costo: ~$0.005-0.01 per chiamata. Cache: nessuna (one-shot user-curato).

7. Inferenza filtri watchlist dalla frase di creazione

Dove: form "Crea una nuova watchlist" in /account/watchlists. Il campo unico in cui scrivi il titolo della watchlist (es. "formazione specialistica sotto i 70.000 € in Lombardia") viene riusato come prompt: l'AI estrae i filtri strutturati (macro categoria CPV, regione, importi minimi/massimi) e fino a 5 parole chiave testuali, e pre-popola il form della pagina successiva. Tutti i campi proposti restano modificabili: la frase è interpretata in modo conservativo (un campo resta vuoto se non è chiaramente desumibile) e l'utente può aggiustare o svuotare ciò che non lo convince prima di salvare. Gate: utente con email verificata e quota AI residua; in mancanza di una delle due condizioni la watchlist viene creata senza prefill, come prima. Modello: claude-sonnet-4-6. Costo: ~$0.002 per creazione (max 1 chiamata per watchlist nella vita del piano). Cache: nessuna (la frase è unica e una watchlist si crea raramente). Resilienza: in caso di errore Anthropic, quota esaurita o output vuoto, la watchlist viene comunque creata e l'utente atterra sul form vuoto, identico al flusso pre-AI.

Quota AI giornaliera

Tutte le funzioni AI attivate da un'azione esplicita dell'utente (Assistente, Briefing, Riassumi PDF, Match-fit, Suggerisci sinonimi, Inferenza filtri watchlist) consumano dalla stessa quota giornaliera unificata ai_messages_per_day:

  • Free: 5 messaggi al giorno cumulativi.
  • Pro Studio e superiori: illimitato (con cap soft anti-abuse non attivo nel MVP).

L'intro AI nel digest (#5) e il riassunto upload custom NON sono rate-limited dalla quota giornaliera dell'utente perché sono trigger diversi (cron settimanale, upload manuale con limite dimensione e cache per-utente).

Disattivare l'AI

Le funzioni AI si attivano solo su click esplicito (e il digest AI solo via cron settimanale). Se preferisci usare AppaltIntel senza alcuna chiamata AI:

  • Ignora i bottoni "Genera analisi AI", "Riassumi con AI", "Valuta il fit", "Suggerisci sinonimi" — nessuna telemetria passa ad Anthropic se non clicchi.
  • Per il digest narrativo del lunedì: contattaci a info@appaltintel.it e ti escludiamo dal flow narrativo — riceverai la lista pulita come i piani Free.

Vincoli linguistici controllati nel prompt

Tutti i prompt sono frozen (cache breakpoint Anthropic per efficienza) e contengono una sezione "vincoli assoluti" che vieta le parole listate nel Principio guida di apertura. Il modello è istruito a rifiutare la generazione se la richiesta utente forza a violare quei vincoli (es. domanda diretta del tipo "vincerai questo bando?" → risposta che riformula in termini di sovrapposizione storica, non probabilità).

Se trovi un output AI che viola questi vincoli, segnalacelo a info@appaltintel.it con un copia-incolla del testo problematico: lo trattiamo come bug del prompt da rafforzare, non come "comportamento normale del modello".


Questa pagina ti è stata utile? Sezione assente o poco chiara? Scrivici a info@appaltintel.it.

CIG

OCID:

Per i bandi italiani ANAC/OCP non esiste una pagina pubblica per singolo CIG. Copia il codice e usalo nel sistema della tua stazione appaltante o nei portali di centrale di committenza.

Contatta AppaltIntel

Questo modulo ti mette in contatto con il servizio clienti AppaltIntel, non con l'ente o l'azienda che stai visualizzando.

Inviando il modulo accetti che i tuoi dati vengano usati per risponderti (vedi privacy). Non li inseriamo in mailing list senza il tuo consenso esplicito.