<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Andrea Pellizzari — Diario</title>
  <link>https://andreapellizzari.it/diario/</link>
  <atom:link href="https://andreapellizzari.it/rss.xml" rel="self" type="application/rss+xml" />
  <description>Appunti tecnici dal campo: pattern, integrazioni, scelte di stack, AI applicata. Dal diario di Andrea Pellizzari.</description>
  <language>it-IT</language>
  <lastBuildDate>Thu, 04 Jun 2026 00:00:00 GMT</lastBuildDate>
  <item>
    <title>LangExtract: estrazione strutturata da testo, con la prova di dove viene</title>
    <link>https://andreapellizzari.it/diario/2026-06-04-langextract-estrazione-verificabile/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-06-04-langextract-estrazione-verificabile/</guid>
    <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
    <description>Un esempio, non un modello addestrato: LangExtract estrae dati strutturati da testo non strutturato e ancora ogni valore all&apos;offset esatto nel documento. L&apos;ho provato sui cataloghi prodotto, ma penso gia&apos; ai DDT di carico.</description>
    <category>ai</category>
    <category>estrazione-dati</category>
    <category>integrazione</category>
    <category>python</category>
  </item>
  <item>
    <title>Il coseno manca i codici esatti: retrieval ibrido su cataloghi PDF</title>
    <link>https://andreapellizzari.it/diario/2026-05-27-retrieval-ibrido-cataloghi-pdf/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-27-retrieval-ibrido-cataloghi-pdf/</guid>
    <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
    <description>Un agente di vendita cerca dentro i cataloghi PDF dei produttori per similarità semantica. Ma su contenuto pieno di codici e misure, il coseno sbaglia proprio sui termini esatti. La cura: una gamba lessicale fusa con RRF.</description>
    <category>ai</category>
    <category>rag</category>
    <category>python</category>
    <category>claude</category>
  </item>
  <item>
    <title>Microsoft 365 sotto sorveglianza: un monitor fatto in casa dopo un phishing</title>
    <link>https://andreapellizzari.it/diario/2026-05-26-monitor-microsoft-365-fatto-in-casa/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-26-monitor-microsoft-365-fatto-in-casa/</guid>
    <pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate>
    <description>Dopo un phishing arrivato da un fornitore compromesso ho costruito un monitor di sicurezza per il tenant Microsoft 365: headless, sola lettura, e con un trucco per leggere i log di accesso senza pagare la licenza Entra P1.</description>
    <category>microsoft-365</category>
    <category>security</category>
    <category>python</category>
    <category>automazione</category>
    <category>incident-response</category>
  </item>
  <item>
    <title>Arcocat, due settimane di hardening: domain contracts, knowledge graph, catalog RAG</title>
    <link>https://andreapellizzari.it/diario/2026-05-14-arcocat-due-settimane-hardening/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-14-arcocat-due-settimane-hardening/</guid>
    <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
    <description>Diario in presa diretta delle ultime due settimane su arcocat. Quattro ondate di lavoro che spostano peso dal prompt al runtime: guardrail deterministici, discovery enforcement, routing per brand, streaming, knowledge graph indicizzato, catalog RAG, e otto policy YAML come fonte unica.</description>
    <category>ai</category>
    <category>claude</category>
    <category>agente</category>
    <category>prompt-caching</category>
    <category>knowledge-graph</category>
    <category>rag</category>
    <category>runtime-contracts</category>
  </item>
  <item>
    <title>Cambiare backend al giudice LLM: da Anthropic SDK a OpenRouter</title>
    <link>https://andreapellizzari.it/diario/2026-05-11-openrouter-refactor-brand-mcp/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-11-openrouter-refactor-brand-mcp/</guid>
    <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
    <description>Ho riscritto un sistema di validazione LLM da SDK Anthropic a SDK OpenAI puntato a OpenRouter. Dieci volte meno costo, qualche gotcha Windows, un path di rollback semplice.</description>
    <category>ai</category>
    <category>openrouter</category>
    <category>claude</category>
    <category>integrazione</category>
  </item>
  <item>
    <title>La differenza fra una skill che dice cosa è rotto e una che lo aggiusta</title>
    <link>https://andreapellizzari.it/diario/2026-05-11-skill-self-healing-prescriber-fixer/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-11-skill-self-healing-prescriber-fixer/</guid>
    <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
    <description>Una skill che rileva problemi è utile. Una che classifica le issue per priorità, propone i comandi e li esegue automaticamente cambia il modo in cui lavoro. La differenza non è cosmetica, è strutturale.</description>
    <category>ai</category>
    <category>automazione</category>
    <category>claude</category>
    <category>skill</category>
    <category>knowledge-base</category>
  </item>
  <item>
    <title>Filtrare grossolanamente, validare in dettaglio: il consiglio emerge da solo</title>
    <link>https://andreapellizzari.it/diario/2026-05-06-filter-then-validate-consiglio-comparativo/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-06-filter-then-validate-consiglio-comparativo/</guid>
    <pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate>
    <description>Combinando un filtro grossolano (PIM con attributi tipizzati) e una validazione chirurgica (Knowledge Tool con LLM-judge), la shortlist diventa comparativa senza che tu lo chieda. Il consiglio emerge dalla composizione.</description>
    <category>architettura</category>
    <category>cpq</category>
    <category>ai-applicata</category>
    <category>pattern</category>
  </item>
  <item>
    <title>Roll-out multi-brand di landing page in PMI: il valore del pre-check</title>
    <link>https://andreapellizzari.it/diario/2026-05-04-porting-multibrand-landing-pmi/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-04-porting-multibrand-landing-pmi/</guid>
    <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
    <description>Sto portando cinque landing brand di un&apos;azienda manifatturiera. Dopo le prime fasi, le lezioni più utili non sono di codice ma di workflow: pre-check prima di partire, branch+tag per fase, smoke test SEO automatico, decisioni utente cristallizzate prima del codice.</description>
    <category>multi-brand</category>
    <category>next.js</category>
    <category>ai-workflow</category>
    <category>porting</category>
  </item>
  <item>
    <title>Da default Vercel a manuale d&apos;officina: redesign del portfolio in 8 wave</title>
    <link>https://andreapellizzari.it/diario/2026-05-02-redesign-portfolio-skill-impeccable/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-02-redesign-portfolio-skill-impeccable/</guid>
    <pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate>
    <description>Il sito era caduto nel default Vercel-cream. La skill impeccable forza scelte di brand, register e gate sequenziali (teach, shape, craft) che salvano dall&apos;AI slop. Otto commit per arrivare a &apos;Manuale d&apos;officina&apos;.</description>
    <category>design</category>
    <category>skill</category>
    <category>impeccable</category>
    <category>ai-assisted-dev</category>
    <category>tipografia</category>
  </item>
  <item>
    <title>Da Q&amp;A bot a piattaforma multi-catalogo: il design dei tre strati</title>
    <link>https://andreapellizzari.it/diario/2026-05-01-bot-10-percento-del-problema/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-05-01-bot-10-percento-del-problema/</guid>
    <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
    <description>Sessione di design partita per disegnare il flusso di un chatbot tecnico interno. Finita con il design di una piattaforma multi-catalogo a tre strati. Il bot copriva il 10% del problema reale.</description>
    <category>architettura</category>
    <category>ai</category>
    <category>claude</category>
    <category>agente</category>
    <category>multi-tenant</category>
  </item>
  <item>
    <title>Da una distinta sbagliata a un eval set: misurare invece di sperare</title>
    <link>https://andreapellizzari.it/diario/2026-04-30-eval-set-misurare-invece-di-sperare/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-30-eval-set-misurare-invece-di-sperare/</guid>
    <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
    <description>Un chatbot tecnico interno restituisce cinque codici inventati su sei. Il fix funziona, ma il vero salto è quando smetti di sperare che i fix reggano e inizi a misurare con un eval set.</description>
    <category>ai</category>
    <category>claude</category>
    <category>tool-calling</category>
    <category>eval</category>
    <category>context-engineering</category>
  </item>
  <item>
    <title>Il giorno in cui il chatbot ha imparato a correggersi</title>
    <link>https://andreapellizzari.it/diario/2026-04-29-chatbot-feedback-loop-autofix/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-29-chatbot-feedback-loop-autofix/</guid>
    <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
    <description>Un chatbot tecnico interno è un asset statico finché non costruisci il loop che lo fa evolvere. In una sessione ho aggiunto il sistema feedback con AI auto-fix: l&apos;utente segnala un errore, l&apos;editor scrive la correzione, l&apos;AI applica il diff sul file MD del wiki.</description>
    <category>ai</category>
    <category>claude</category>
    <category>agente</category>
    <category>knowledge-base</category>
    <category>feedback-loop</category>
  </item>
  <item>
    <title>Quando il preventivo arriva con il prototipo allegato</title>
    <link>https://andreapellizzari.it/diario/2026-04-28-prototipo-allegato-al-preventivo/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-28-prototipo-allegato-al-preventivo/</guid>
    <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
    <description>Un contatto, software house partner Mexal, mi chiede aiuto per un preventivo che deve fare a un suo cliente: dashboard agenti su un ERP custom. In quindici minuti gli ho preparato proposta tecnica, demo HTML e PDF. Non era la dashboard — era il fatto che si presentasse da sola.</description>
    <category>ai</category>
    <category>claude-code</category>
    <category>preventivi</category>
    <category>produttività</category>
    <category>mexal</category>
  </item>
  <item>
    <title>Aprire il sito agli agenti AI: llms.txt, JSON-LD esteso e versioni raw dei post</title>
    <link>https://andreapellizzari.it/diario/2026-04-28-aprire-il-sito-agli-agenti-ai/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-28-aprire-il-sito-agli-agenti-ai/</guid>
    <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
    <description>Metà del traffico di ricerca tecnica oggi passa per LLM, non per Google. Sei modifiche concrete — llms.txt, JSON-LD esteso, versioni raw .md dei post — per farsi trovare da ChatGPT, Claude e Perplexity.</description>
    <category>ai</category>
    <category>seo</category>
    <category>discoverability</category>
  </item>
  <item>
    <title>Far leggere un decreto legislativo all&apos;AI: pipeline da .docx a Word</title>
    <link>https://andreapellizzari.it/diario/2026-04-28-analisi-normativa-strutturata-con-ai/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-28-analisi-normativa-strutturata-con-ai/</guid>
    <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
    <description>Mi è arrivato un decreto legislativo da 270 KB in formato .docx con 26 articoli e centinaia di reati richiamati, da mappare sui processi aziendali. Ho costruito una pipeline che lo macina dall&apos;estrazione XML al documento Word finale.</description>
    <category>ai</category>
    <category>automazione</category>
    <category>powershell</category>
  </item>
  <item>
    <title>Quando il bug si vede al primo click: audit UX automatizzato con Playwright</title>
    <link>https://andreapellizzari.it/diario/2026-04-27-audit-ux-playwright-headless/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-27-audit-ux-playwright-headless/</guid>
    <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
    <description>Ho usato Playwright in modalità headless per simulare un agente che apre la nostra PWA su tablet e clicca tutto: in trenta minuti sono usciti tredici bug oggettivi che gli utenti veri avrebbero visto al primo uso.</description>
    <category>playwright</category>
    <category>ai</category>
    <category>ux</category>
  </item>
  <item>
    <title>Mermaid nei miei MDX: diagrammi architetturali che vivono nel sorgente</title>
    <link>https://andreapellizzari.it/diario/2026-04-24-mermaid-diagrammi-mdx/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-24-mermaid-diagrammi-mdx/</guid>
    <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
    <description>Ho cominciato a usare Mermaid per i diagrammi tecnici del portfolio. Il vantaggio vero non è graphical — è che il diagramma è testo, versionabile, editabile in 10 secondi, e spiega da solo cose che la prosa fatica a trasmettere.</description>
    <category>mermaid</category>
    <category>mdx</category>
    <category>tooling</category>
  </item>
  <item>
    <title>Script custom per backup: ho impiegato due ore a capire che era la scelta sbagliata</title>
    <link>https://andreapellizzari.it/diario/2026-04-24-script-vs-tool-maturo/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-24-script-vs-tool-maturo/</guid>
    <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
    <description>Avevo iniziato a scriverci sopra uno script Python: zip AES, upload FTP, rotation, una password aneddotica come domanda di sicurezza. Due ore dopo ho capito che Duplicati open-source fa già la stessa cosa, meglio. Piccola riflessione sulla pigrizia virtuosa.</description>
    <category>backup</category>
    <category>tooling</category>
    <category>lesson-learned</category>
  </item>
  <item>
    <title>L&apos;editor come fonte di verità: normalizzare a valle, non a monte</title>
    <link>https://andreapellizzari.it/diario/2026-04-24-editor-normalizzazione-post-ingest/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-24-editor-normalizzazione-post-ingest/</guid>
    <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
    <description>Ingest massivo da PDF, IDML, schede tecniche e gestionale produce dati affidabili al 60%. Invece di pulirli alla fonte, ho scelto di normalizzarli a valle con un editor editoriale che diventa la fonte di verità canonica.</description>
    <category>architettura</category>
    <category>knowledge-base</category>
    <category>ingest</category>
  </item>
  <item>
    <title>Diagnostica &apos;perché questo codice non è pubblicato&apos;: una query grossa batte dieci query puntuali</title>
    <link>https://andreapellizzari.it/diario/2026-04-24-diagnostica-codice-non-pubblicato/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-24-diagnostica-codice-non-pubblicato/</guid>
    <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
    <description>Un articolo sparito dal sito è la domanda settimanale in ufficio. Ho scritto un tool Python+tkinter che risponde in due secondi con una query SQL e due chiamate FTP — e mi ha costretto a leggere come si deve le viste dell&apos;ERP aziendale.</description>
    <category>python</category>
    <category>sql-server</category>
    <category>diagnostica</category>
  </item>
  <item>
    <title>Quando il pull non basta: products.json in push + Vercel Blob</title>
    <link>https://andreapellizzari.it/diario/2026-04-24-products-json-vercel-blob-push/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-24-products-json-vercel-blob-push/</guid>
    <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
    <description>L&apos;hosting blocca Vercel con un captcha anti-bot e lo shop si svuota a campione. La fix non è un retry più furbo: è invertire il flusso da pull a push e usare Vercel Blob come unico strato coerente tra container.</description>
    <category>nextjs</category>
    <category>vercel</category>
    <category>architettura</category>
  </item>
  <item>
    <title>Benvenuto nel diario</title>
    <link>https://andreapellizzari.it/diario/2026-04-24-benvenuto-nel-diario/</link>
    <guid isPermaLink="true">https://andreapellizzari.it/diario/2026-04-24-benvenuto-nel-diario/</guid>
    <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
    <description>Apro questa sezione del sito come quaderno pubblico: appunti brevi dalle sessioni di lavoro quotidiane su gestionali, integrazioni, AI applicata. Meno strutturato delle case study, più vicino a come succedono davvero le cose.</description>
    <category>meta</category>
  </item>
</channel>
</rss>
