[{"data":1,"prerenderedAt":621},["ShallowReactive",2],{"project-l863":3,"related-l863":118},{"id":4,"title":5,"body":6,"date":95,"description":96,"draft":97,"extension":98,"featured":99,"image":100,"meta":101,"navigation":99,"order":87,"path":102,"sector":103,"seo":104,"stem":105,"tech":106,"type":115,"url":116,"__hash__":117},"progetti\u002Fprogetti\u002Fl863.md","E-commerce per L863",{"type":7,"value":8,"toc":85},"minimark",[9,14,18,22,25,29,64,68,71,75,78,82],[10,11,13],"h2",{"id":12},"contesto","Contesto",[15,16,17],"p",{},"L863 è uno spazio a Roma, in Garbatella, dedicato a dischi, editoria e abbigliamento selezionato. Lo shop online doveva avere la stessa cura del posto fisico, con un design molto personalizzato firmato da un designer che non voleva vederlo piegato a un tema pronto. Frontend, backoffice e backend scritti da zero, pagamenti con Stripe, PayPal e contrassegno.",[10,19,21],{"id":20},"il-mio-ruolo","Il mio ruolo",[15,23,24],{},"Tutto lo sviluppo, dal template al go-live, coordinandomi con il designer e con il cliente.",[10,26,28],{"id":27},"le-decisioni","Le decisioni",[30,31,32,40,46,52,58],"ul",{},[33,34,35,39],"li",{},[36,37,38],"strong",{},"Il pagamento come unica fonte di verità."," L'importo si verifica lato server alla cattura, e il passaggio dell'ordine a pagato è un aggiornamento atomico che vale solo se l'ordine è ancora in attesa: due notifiche contemporanee non possono chiudere lo stesso ordine due volte.",[33,41,42,45],{},[36,43,44],{},"Lo stock si impegna quando i soldi ci sono",", alla cattura confermata e non alla creazione dell'ordine. Altrimenti un carrello abbandonato blocca un disco che magari è l'ultimo.",[33,47,48,51],{},[36,49,50],{},"Nessun ordine resta a metà."," Se il webhook di Stripe fallisce in modo inatteso parte il rimborso automatico; i contrassegni non confermati scadono dopo 48 ore.",[33,53,54,57],{},[36,55,56],{},"Gli ordini sopravvivono ai clienti."," Quando un cliente si cancella, il suo riferimento negli ordini diventa vuoto invece di cancellarli a cascata: quei documenti servono alla contabilità.",[33,59,60,63],{},[36,61,62],{},"Niente consenso per funzioni che non esistono."," La newsletter non era prevista, quindi l'ho tolta da sito, backend, email, privacy e database invece di lasciare una casella GDPR senza scopo.",[10,65,67],{"id":66},"il-test-più-delicato","Il test più delicato",[15,69,70],{},"Le chiavi Stripe e PayPal erano già live e gli account erano del cliente: ogni prova era un acquisto vero. Le ho coordinate con un documento condiviso con il cliente, una prova alla volta.",[10,72,74],{"id":73},"lerrore-che-mi-ha-cambiato-il-metodo","L'errore che mi ha cambiato il metodo",[15,76,77],{},"Un deploy con sincronizzazione senza l'esclusione della cartella delle immagini ha cancellato le foto dei prodotti dal server. Le ho recuperate dal backup notturno, che avevo già verificato con un ripristino reale e non solo controllando che il file esistesse. Da allora il server riceve solo i deploy della pipeline: niente build o comandi manuali in produzione.",[10,79,81],{"id":80},"cosa-farei-diversamente","Cosa farei diversamente",[15,83,84],{},"Scrivere da zero carrello, pagamenti e ordini mi ha insegnato dove si rompe un e-commerce. Proprio per questo, su un progetto più strutturato oggi sceglierei un'architettura headless: frontend su misura in Nuxt, e Shopify dietro a gestire catalogo, pagamenti e ordini. Il design resta libero, la parte che deve essere a prova di errore la fa chi la fa da anni.",{"title":86,"searchDepth":87,"depth":87,"links":88},"",2,[89,90,91,92,93,94],{"id":12,"depth":87,"text":13},{"id":20,"depth":87,"text":21},{"id":27,"depth":87,"text":28},{"id":66,"depth":87,"text":67},{"id":73,"depth":87,"text":74},{"id":80,"depth":87,"text":81},"2026","Shop online scritto da zero, frontend, backoffice e pagamenti, per uno spazio di Roma dedicato a dischi, editoria e abbigliamento.",false,"md",true,null,{},"\u002Fprogetti\u002Fl863","Musica, editoria, abbigliamento",{"title":5,"description":96},"progetti\u002Fl863",[107,108,109,110,111,112,113,114],"Nuxt","Node.js","SQLite","Stripe","PayPal","PM2","Nginx","Hetzner","E-commerce","https:\u002F\u002Fl863.it","pwyEW6O-b-vSVNZDJLLFDI1l2qN4Ml_uCIvt8jAQQso",[119,201,259,348,422,500,568],{"id":120,"title":121,"body":122,"date":95,"description":181,"draft":97,"extension":98,"featured":99,"image":100,"meta":182,"navigation":99,"order":183,"path":184,"sector":185,"seo":186,"stem":187,"tech":188,"type":198,"url":199,"__hash__":200},"progetti\u002Fprogetti\u002Fnorton-tanzarella.md","Sito e backoffice per Norton Tanzarella",{"type":7,"value":123,"toc":175},[124,126,129,131,134,138,141,143],[10,125,13],{"id":12},[15,127,128],{},"Norton Tanzarella è un'agenzia immobiliare di Ostuni che vende masserie, trulli e case di carattere in Puglia, soprattutto a compratori stranieri. Serviva un sito in inglese e italiano e un backoffice con cui il team carica e gestisce gli immobili in autonomia.",[10,130,21],{"id":20},[15,132,133],{},"Proposta e architettura, sviluppo di backend, sito e backoffice, deploy e gestione dell'infrastruttura.",[10,135,137],{"id":136},"perché-non-un-cms-pronto","Perché non un CMS pronto",[15,139,140],{},"Il cliente aveva già avuto brutte esperienze con abbonamenti a piattaforme esterne e voleva che dati e strumenti restassero suoi. In più il backoffice non è un pannello per pagine: è il lavoro quotidiano dell'agenzia, e domani dovrà accogliere anche il CRM interno. Un CMS generico qui va stretto, e ripartire dal mio starter già collaudato (backend Fastify, sito Nuxt, backoffice Vue) rendeva la scelta sostenibile.",[10,142,28],{"id":27},[30,144,145,151,157,163,169],{},[33,146,147,150],{},[36,148,149],{},"Il sito non cade se cade un pezzo."," I contenuti hanno tre livelli di riserva: cache in memoria, snapshot su disco, JSON generato in build. Se il database ha un problema, gli immobili restano online. La cache si invalida quando lo staff pubblica.",[33,152,153,156],{},[36,154,155],{},"Un contatto non si perde."," Le notifiche dei lead passano da un outbox transazionale: la richiesta e la notifica vengono salvate insieme, e l'invio si ritenta finché non va a buon fine. Per un'agenzia, un lead perso è un cliente perso.",[33,158,159,162],{},[36,160,161],{},"Le foto si preparano da sole."," Al caricamento vengono ridimensionate e ricevono la filigrana in automatico: lo staff carica le foto originali senza prepararle, il sito resta leggero e le immagini protette.",[33,164,165,168],{},[36,166,167],{},"Accessi diversi per persone diverse."," Lo staff entra con email e password, i clienti con un codice monouso, senza password da ricordare.",[33,170,171,174],{},[36,172,173],{},"Un contratto unico tra i tre progetti."," Le regole delle sezioni del CMS stanno in un pacchetto condiviso da backend, sito e backoffice, validato con Zod: se cambia una sezione, i tre progetti non vanno fuori sincrono.",{"title":86,"searchDepth":87,"depth":87,"links":176},[177,178,179,180],{"id":12,"depth":87,"text":13},{"id":20,"depth":87,"text":21},{"id":136,"depth":87,"text":137},{"id":27,"depth":87,"text":28},"Sito bilingue e backoffice su misura per un'agenzia immobiliare di Ostuni che vende masserie, trulli e case di carattere a compratori stranieri.",{},1,"\u002Fprogetti\u002Fnorton-tanzarella","Real estate",{"title":121,"description":181},"progetti\u002Fnorton-tanzarella",[189,190,191,192,193,194,195,114,196,197],"Nuxt 4","Nitro","Fastify","Vue","PostgreSQL","Drizzle","Zod","Cloudflare","Brevo","Piattaforma web","https:\u002F\u002Fnortontanzarella.com","0GLbTAWRNKcnSpIjU-vtmWKXgceAZYGXjyTjodb1x4A",{"id":4,"title":5,"body":202,"date":95,"description":96,"draft":97,"extension":98,"featured":99,"image":100,"meta":256,"navigation":99,"order":87,"path":102,"sector":103,"seo":257,"stem":105,"tech":258,"type":115,"url":116,"__hash__":117},{"type":7,"value":203,"toc":248},[204,206,208,210,212,214,236,238,240,242,244,246],[10,205,13],{"id":12},[15,207,17],{},[10,209,21],{"id":20},[15,211,24],{},[10,213,28],{"id":27},[30,215,216,220,224,228,232],{},[33,217,218,39],{},[36,219,38],{},[33,221,222,45],{},[36,223,44],{},[33,225,226,51],{},[36,227,50],{},[33,229,230,57],{},[36,231,56],{},[33,233,234,63],{},[36,235,62],{},[10,237,67],{"id":66},[15,239,70],{},[10,241,74],{"id":73},[15,243,77],{},[10,245,81],{"id":80},[15,247,84],{},{"title":86,"searchDepth":87,"depth":87,"links":249},[250,251,252,253,254,255],{"id":12,"depth":87,"text":13},{"id":20,"depth":87,"text":21},{"id":27,"depth":87,"text":28},{"id":66,"depth":87,"text":67},{"id":73,"depth":87,"text":74},{"id":80,"depth":87,"text":81},{},{"title":5,"description":96},[107,108,109,110,111,112,113,114],{"id":260,"title":261,"body":262,"date":329,"description":330,"draft":97,"extension":98,"featured":99,"image":100,"meta":331,"navigation":99,"order":332,"path":333,"sector":334,"seo":335,"stem":336,"tech":337,"type":346,"url":100,"__hash__":347},"progetti\u002Fprogetti\u002Fbi-rete-distribuzione.md","BI per una rete di distribuzione",{"type":7,"value":263,"toc":322},[264,266,269,271,274,276,308,312,315,319],[10,265,13],{"id":12},[15,267,268],{},"Un'azienda di distribuzione nel settore sicurezza sul lavoro. I dati c'erano tutti, tra ERP Arca Evolution, fogli Excel e flussi finanziari, ma ogni numero affidabile richiedeva estrazioni e controlli a mano. Agenti, responsabili e direzione guardavano gli stessi dati con domande diverse.",[10,270,21],{"id":20},[15,272,273],{},"Interno all'azienda, dal 2020 al 2025: analisi con la direzione, architettura, sviluppo e manutenzione.",[10,275,28],{"id":27},[30,277,278,284,290,296,302],{},[33,279,280,283],{},[36,281,282],{},"Separare integrazione e presentazione."," Un livello ETL con Node-RED e n8n normalizza codici, anagrafiche e periodi prima che i dati arrivino alle dashboard, così la stessa regola alimenta viste diverse senza duplicare calcoli.",[33,285,286,289],{},[36,287,288],{},"Ogni strumento dove rende di più."," Power BI per la reportistica strutturata, Vue per le viste operative che richiedono interazioni specifiche.",[33,291,292,295],{},[36,293,294],{},"Dashboard per ruolo invece di una dashboard per tutti."," L'agente vede i clienti da seguire, la direzione l'aggregato con il dettaglio a richiesta.",[33,297,298,301],{},[36,299,300],{},"Nessun doppio conteggio nei premi agenti."," Lo stesso movimento non viene contato due volte quando attraversa elaborazioni diverse.",[33,303,304,307],{},[36,305,306],{},"L'AI riceve solo dati già preparati"," dall'applicazione e produce una sintesi da verificare. Non accede al sistema e non modifica nulla.",[10,309,311],{"id":310},"cosa-ho-imparato","Cosa ho imparato",[15,313,314],{},"La qualità dei dati dipende dalle regole di trasformazione, non dallo strumento che le orchestra. Node-RED e n8n accelerano, ma la parte difficile è mettersi d'accordo con l'azienda su cosa significa un numero.",[10,316,318],{"id":317},"un-numero","Un numero",[15,320,321],{},"Riprogettando la pipeline ETL, l'elaborazione è passata da 3 ore a 20 secondi. La piattaforma è usata da oltre 40 persone.",{"title":86,"searchDepth":87,"depth":87,"links":323},[324,325,326,327,328],{"id":12,"depth":87,"text":13},{"id":20,"depth":87,"text":21},{"id":27,"depth":87,"text":28},{"id":310,"depth":87,"text":311},{"id":317,"depth":87,"text":318},"2020-2025","Piattaforma di Business Intelligence collegata all'ERP, con dashboard per ruolo, controllo fido, premi agenti e analisi di magazzino.",{},3,"\u002Fprogetti\u002Fbi-rete-distribuzione","Distribuzione",{"title":261,"description":330},"progetti\u002Fbi-rete-distribuzione",[338,339,340,341,192,342,343,344,345],"SQL Server","MySQL","Node-RED","n8n","Power BI","Docker","OpenAI API","Claude API","Business Intelligence","pR4KHxMzNrGE-o7GOhEW-7vABTePFx_yF_EPUiYz74o",{"id":349,"title":350,"body":351,"date":95,"description":410,"draft":97,"extension":98,"featured":97,"image":100,"meta":411,"navigation":99,"order":412,"path":413,"sector":414,"seo":415,"stem":416,"tech":417,"type":420,"url":100,"__hash__":421},"progetti\u002Fprogetti\u002Fformazione-multi-sede.md","Piattaforma multi-sede e assistente AI per la formazione",{"type":7,"value":352,"toc":404},[353,355,358,360,363,365,397,401],[10,354,13],{"id":12},[15,356,357],{},"Un ente di formazione e certificazione con più sedi. I contatti arrivavano da sito, campagne, WhatsApp e direttamente dalle sedi, e venivano seguiti tra messaggi, moduli e fogli di calcolo. Nessuno aveva lo storico completo di una richiesta.",[10,359,21],{"id":20},[15,361,362],{},"Proposta tecnico-commerciale, architettura e sviluppo di applicazioni web e CRM, in collaborazione con un collega senior backend e infrastruttura.",[10,364,28],{"id":27},[30,366,367,373,379,385,391],{},[33,368,369,372],{},[36,370,371],{},"Partire dal flusso degli operatori, non dalle funzioni."," Raccolta del contatto, interesse, assegnazione alla sede, attività successive, storico: il CRM segue questo percorso. Iscrizioni, documenti e pagamenti arrivano dopo, sulla stessa base dati, invece di essere integrazioni isolate.",[33,374,375,378],{},[36,376,377],{},"L'AI come accesso al catalogo, non come risposta a tutto."," L'assistente su WhatsApp risponde solo con le informazioni presenti nel catalogo di corsi e certificazioni. Quando manca un dato attendibile, serve una valutazione o la persona vuole parlare con qualcuno, la conversazione passa a un operatore con tutto il contesto raccolto.",[33,380,381,384],{},[36,382,383],{},"Promemoria e code che non si perdono."," Promemoria, code di lavoro e attività programmate passano da Temporal, che le porta a termine anche se un servizio si riavvia; le automazioni più semplici restano su n8n.",[33,386,387,390],{},[36,388,389],{},"Un solo punto di accesso ai modelli AI",", tramite OpenRouter, per poter cambiare modello senza toccare l'applicazione.",[33,392,393,396],{},[36,394,395],{},"Rilasci a milestone su un progetto di tre anni."," Si va in produzione un pezzo alla volta, partendo dal CRM, invece di aspettare il sistema completo.",[10,398,400],{"id":399},"stato","Stato",[15,402,403],{},"Progetto su tre anni, diviso in milestone. Al quarto mese, la prima parte del CRM è in produzione.",{"title":86,"searchDepth":87,"depth":87,"links":405},[406,407,408,409],{"id":12,"depth":87,"text":13},{"id":20,"depth":87,"text":21},{"id":27,"depth":87,"text":28},{"id":399,"depth":87,"text":400},"CRM multi-sede per un ente di formazione e certificazione, con un assistente su WhatsApp collegato al catalogo e passaggio all'operatore.",{},4,"\u002Fprogetti\u002Fformazione-multi-sede","Formazione",{"title":350,"description":410},"progetti\u002Fformazione-multi-sede",[191,107,192,193,194,418,341,419],"Temporal","OpenRouter","CRM \u002F Web App","3ImlaH8UjWdnIn8krS6GzdZrXzRtwB9KL9F1IJ73HJ0",{"id":423,"title":424,"body":425,"date":95,"description":482,"draft":97,"extension":98,"featured":97,"image":100,"meta":483,"navigation":99,"order":484,"path":485,"sector":486,"seo":487,"stem":488,"tech":489,"type":498,"url":100,"__hash__":499},"progetti\u002Fprogetti\u002Fpwa-enti-culturali.md","PWA per enti culturali",{"type":7,"value":426,"toc":476},[427,429,432,434,437,439,471,473],[10,428,13],{"id":12},[15,430,431],{},"Una Progressive Web App multi-tenant per musei e luoghi della cultura, in un progetto destinato al Ministero della Cultura. Missioni, mappe e giochi accompagnano la visita, anche dove la rete è instabile.",[10,433,21],{"id":20},[15,435,436],{},"Sviluppatore frontend e PWA in subfornitura, dentro il team di un'agenzia digitale: interfaccia, gestione dello stato, mappe, giochi e animazioni, funzionamento offline. Il backend era del committente, integrato tramite specifica OpenAPI, con review del codice e CI.",[10,438,28],{"id":27},[30,440,441,447,453,459,465],{},[33,442,443,446],{},[36,444,445],{},"Un'app, tanti enti."," Stessa base applicativa, configurazione, contenuti e identità separati per ogni ente: un nuovo museo è configurazione, non sviluppo.",[33,448,449,452],{},[36,450,451],{},"Installazione per ente senza trucchi."," Ogni ente ha il suo percorso di installazione con navigazione completa per tenant, invece di sostituire il manifest a runtime: più semplice e prevedibile sui diversi browser.",[33,454,455,458],{},[36,456,457],{},"Offline tutto o niente."," Il download dei contenuti multimediali è atomico: o la visita è disponibile per intero, o si riprova. Una visita a metà senza rete è peggio di nessuna visita.",[33,460,461,464],{},[36,462,463],{},"Le azioni fatte offline non si perdono."," Una coda salva i progressi in locale e li sincronizza al ritorno della rete.",[33,466,467,470],{},[36,468,469],{},"Registrazione solo quando serve."," Si entra come ospite, l'OTP e la registrazione arrivano quando servono a conservare i progressi.",[10,472,311],{"id":310},[15,474,475],{},"Quando entri nel progetto di un altro, il lavoro migliore è quello che il team non deve ricontrollare. Mi sono integrato sulla specifica OpenAPI del committente, con review del codice e una CI che esegue i test prima di ogni deploy: ogni modifica arrivava già verificata, e il confronto con il team restava sulle scelte, non sui difetti.",{"title":86,"searchDepth":87,"depth":87,"links":477},[478,479,480,481],{"id":12,"depth":87,"text":13},{"id":20,"depth":87,"text":21},{"id":27,"depth":87,"text":28},{"id":310,"depth":87,"text":311},"Progressive Web App multi-tenant con missioni, mappe e contenuti offline, sviluppata in subfornitura per un progetto destinato al Ministero della Cultura.",{},5,"\u002Fprogetti\u002Fpwa-enti-culturali","Cultura \u002F Pubblica Amministrazione",{"title":424,"description":482},"progetti\u002Fpwa-enti-culturali",[490,491,492,493,494,495,496,195,497],"Vue 3","Vite","Pinia","Tailwind CSS","Leaflet","Motion.dev","Workbox","OpenAPI","PWA","hg8HOBgHogbZ8TfxlSX7WBwbcqvW4D3bjwK3oeiylag",{"id":501,"title":502,"body":503,"date":95,"description":554,"draft":97,"extension":98,"featured":97,"image":100,"meta":555,"navigation":99,"order":556,"path":557,"sector":558,"seo":559,"stem":560,"tech":561,"type":566,"url":100,"__hash__":567},"progetti\u002Fprogetti\u002Fapp-manutenzione-antincendio.md","App per la manutenzione antincendio",{"type":7,"value":504,"toc":548},[505,507,510,512,515,517,543,545],[10,506,13],{"id":12},[15,508,509],{},"Un'azienda di manutenzione antincendio gestiva scadenze e interventi tra registri cartacei e fogli condivisi. I tecnici lavorano in scantinati e capannoni dove la rete spesso non c'è.",[10,511,21],{"id":20},[15,513,514],{},"Progettazione e sviluppo dell'app e della parte dati.",[10,516,28],{"id":27},[30,518,519,525,531,537],{},[33,520,521,524],{},[36,522,523],{},"Offline-first, non offline come ripiego."," L'app lavora sui dati locali e sincronizza col backoffice quando torna la rete. Il tecnico non deve mai aspettare la connessione per registrare un intervento.",[33,526,527,530],{},[36,528,529],{},"Due flussi reali, non uno generico."," \"Prelievo\" quando il dispositivo va in laboratorio, \"Sul posto\" quando il controllo si fa in sede: lo stesso intervento ha passaggi diversi e il software li rispetta.",[33,532,533,536],{},[36,534,535],{},"Un modello che regge le eccezioni."," Categoria, tipologia, dispositivo, con tre scadenze configurabili per dispositivo: estintori, impianti e defibrillatori stanno nello stesso flusso senza casi speciali nel codice.",[33,538,539,542],{},[36,540,541],{},"Backoffice comprato, app costruita."," Per l'ufficio bastava un pannello di gestione dati, quindi Strapi. L'app sul campo, dove sta il lavoro vero, è fatta su misura.",[10,544,318],{"id":317},[15,546,547],{},"Il cliente stima una riduzione del 70% dei tempi di rendicontazione.",{"title":86,"searchDepth":87,"depth":87,"links":549},[550,551,552,553],{"id":12,"depth":87,"text":13},{"id":20,"depth":87,"text":21},{"id":27,"depth":87,"text":28},{"id":317,"depth":87,"text":318},"App mobile offline-first per gestire scadenze e interventi sul campo, sincronizzata con il backoffice.",{},6,"\u002Fprogetti\u002Fapp-manutenzione-antincendio","Antincendio e sicurezza",{"title":502,"description":554},"progetti\u002Fapp-manutenzione-antincendio",[562,563,564,565],"React Native","Expo","TypeScript","Strapi","Mobile App","5VAAlenHY2cDjXFq5lHTKkZaZ7QOL9iHEdbA42CzUo0",{"id":569,"title":570,"body":571,"date":95,"description":610,"draft":97,"extension":98,"featured":97,"image":100,"meta":611,"navigation":99,"order":612,"path":613,"sector":614,"seo":615,"stem":616,"tech":617,"type":619,"url":100,"__hash__":620},"progetti\u002Fprogetti\u002Facquisizione-ordini.md","Acquisizione ordini da email e PDF",{"type":7,"value":572,"toc":605},[573,575,578,580,583,585],[10,574,13],{"id":12},[15,576,577],{},"Un distributore B2B riceve ogni giorno ordini per email e in PDF, con descrizioni libere che non coincidono con i codici del catalogo. Qualcuno in ufficio li legge e li ricopia a mano nel gestionale.",[10,579,21],{"id":20},[15,581,582],{},"Analisi con il cliente, architettura e sviluppo del prototipo. Stato: in sviluppo, con il prototipo in demo al cliente.",[10,584,28],{"id":27},[30,586,587,593,599],{},[33,588,589,592],{},[36,590,591],{},"L'AI propone, l'operatore conferma."," Il sistema legge l'ordine e abbina ogni riga al catalogo, ma nulla entra nel gestionale senza la validazione di una persona. L'obiettivo non è eliminare l'ufficio, è togliergli la parte di copiatura.",[33,594,595,598],{},[36,596,597],{},"I codici vengono dal catalogo, non dal modello."," Il modello interpreta il testo, ma l'articolo proposto è sempre un record esistente. Un codice inventato in un ordine è merce sbagliata spedita a un cliente.",[33,600,601,604],{},[36,602,603],{},"Partire stretti."," Prototipo con lo stretto necessario per verificare con il cliente se il flusso funziona sul suo lavoro reale, prima di investire in infrastruttura.",{"title":86,"searchDepth":87,"depth":87,"links":606},[607,608,609],{"id":12,"depth":87,"text":13},{"id":20,"depth":87,"text":21},{"id":27,"depth":87,"text":28},"Prototipo che legge gli ordini B2B da email e PDF, li abbina al catalogo e li sottopone alla validazione dell'operatore. In sviluppo.",{},7,"\u002Fprogetti\u002Facquisizione-ordini","Distribuzione B2B",{"title":570,"description":610},"progetti\u002Facquisizione-ordini",[192,618,191,194,109,341,419],"PrimeVue","Automazione","mKLz8RyQB1BJ-tfKakk7mOUnHA_zL1hvTrUSmvm7MH0",1792232421258]