[{"data":1,"prerenderedAt":618},["ShallowReactive",2],{"blog-blog_en":3},[4,197,330,467],{"id":5,"title":6,"body":7,"date":183,"description":184,"extension":185,"image":186,"imageAlt":187,"imageNight":188,"meta":189,"navigation":190,"path":191,"published":190,"seo":192,"stem":193,"thumb":194,"thumbNight":195,"__hash__":196},"blog_en\u002Fblog\u002Fen\u002Fai-documenti-aziendali.md","AI on company documents: what really works",{"type":8,"value":9,"toc":174},"minimark",[10,19,24,31,34,38,66,69,73,105,109,112,133,137,140,163,166],[11,12,13,14,18],"p",{},"\"Can the AI answer using our documents?\" It is one of the questions we hear most often. The short answer is yes. The long answer is that ",[15,16,17],"strong",{},"it works very well for some questions and poorly for others",", and it pays to know which before you start.",[20,21,23],"h2",{"id":22},"how-it-works-without-jargon","How it works, without jargon",[11,25,26,27,30],{},"The assistant does not learn your documents by heart. When someone asks a question, the system searches the documents for the most relevant passages and gives them to the AI model together with the question. The model answers ",[15,28,29],{},"by reading those passages",", and it can show which document the answer comes from.",[11,32,33],{},"This technique is called RAG (Retrieval-Augmented Generation). The practical advantage is big: when you update a document, the assistant uses the new version straight away, with no training involved.",[20,35,37],{"id":36},"where-it-works-well","Where it works well",[39,40,41,48,54,60],"ul",{},[42,43,44,47],"li",{},[15,45,46],{},"Manuals and procedures."," \"How do I register a return?\", \"Which documents do I need for accreditation?\". The answers are written down somewhere, but nobody wants to look for them.",[42,49,50,53],{},[15,51,52],{},"Contracts and terms."," \"What is the notice period with this supplier?\". The assistant finds the clause and quotes it.",[42,55,56,59],{},[15,57,58],{},"Repetitive questions from customers or colleagues."," The same ten questions, every week. The assistant answers at once, and a person steps in only for new cases.",[42,61,62,65],{},[15,63,64],{},"Long documents."," Summarising an 80-page tender or comparing two versions of a set of rules.",[11,67,68],{},"In Media Accreditation, our product for press accreditation, the assistant answers journalists and staff from the event documents: times, rules, the press room map. The questions are always the same, and the answers are already written.",[20,70,72],{"id":71},"where-it-works-poorly","Where it works poorly",[39,74,75,87,93,99],{},[42,76,77,80,81,86],{},[15,78,79],{},"Sums and figures across lots of data."," \"How much did we invoice Lombardy customers in March?\" is not a question for documents: it is a question for your management system. That needs a direct connection to the data, for example through an ",[82,83,85],"a",{"href":84},"\u002Fen\u002Fblog\u002Fserver-mcp-gestionale","MCP server",".",[42,88,89,92],{},[15,90,91],{},"Old or contradictory documents."," If the folder holds three versions of the same price list, the assistant may pick the wrong one. Tidy up first, then connect.",[42,94,95,98],{},[15,96,97],{},"Poor-quality scans."," A crooked photo of a PDF is hard to read, for people and machines alike.",[42,100,101,104],{},[15,102,103],{},"Guaranteed zero errors."," A good assistant is rarely wrong and makes it clear when it is unsure, but it is not infallible. For important decisions, check the answer against the source it quotes.",[20,106,108],{"id":107},"privacy-first","Privacy first",[11,110,111],{},"Company documents often contain confidential data. Before starting, you need clear answers to three questions:",[113,114,115,121,127],"ol",{},[42,116,117,120],{},[15,118,119],{},"Where do the documents go?"," For Media Accreditation we use Claude models on AWS Bedrock in a European region: the data stays in Europe.",[42,122,123,126],{},[15,124,125],{},"Are they used to train the model?"," With professional services the answer must be no, written in the contract.",[42,128,129,132],{},[15,130,131],{},"Who sees what?"," The assistant must respect permissions: someone who cannot open a document must not receive its content through the AI either.",[20,134,136],{"id":135},"how-to-start-without-wasting-money","How to start without wasting money",[11,138,139],{},"You don't need to connect the whole company. Our method is simple:",[113,141,142,149,156],{},[42,143,144,145,148],{},"Choose ",[15,146,147],{},"one set of documents"," with a clear purpose, for example the support procedures.",[42,150,151,152,155],{},"Collect ",[15,153,154],{},"20 real questions",", the ones people actually ask.",[42,157,158,159,162],{},"We test the assistant on those questions and ",[15,160,161],{},"measure"," how many answers are right and complete.",[11,164,165],{},"Within a few weeks you know whether it works and how much time it saves, with your own numbers rather than a demo.",[11,167,168,169,173],{},"If you have a folder of documents people keep asking about, ",[82,170,172],{"href":171},"\u002Fen\u002Fcontact?topic=ai","tell us which one",": we'll tell you whether AI can help and where to start.",{"title":175,"searchDepth":176,"depth":176,"links":177},"",2,[178,179,180,181,182],{"id":22,"depth":176,"text":23},{"id":36,"depth":176,"text":37},{"id":71,"depth":176,"text":72},{"id":107,"depth":176,"text":108},{"id":135,"depth":176,"text":136},"2026-11-08","An assistant that answers from your manuals, contracts and procedures is a practical tool today. It works very well in some cases and poorly in others. Here is how to tell them apart.","md","\u002Fblog-ai-documenti-panoramica.png","In a round library, a small robot on a ladder takes a book and hands a person at the counter a glowing page, tied to the book by a thread of light","\u002Fblog-ai-documenti-panoramica-notte.png",{},true,"\u002Fblog\u002Fen\u002Fai-documenti-aziendali",{"title":6,"description":184},"blog\u002Fen\u002Fai-documenti-aziendali","\u002Fblog-ai-documenti.png","\u002Fblog-ai-documenti-notte.png","Vj3elF638C7Xly5mgnLSG0Z85r63_H9m_qGXzb-4Am0",{"id":198,"title":199,"body":200,"date":183,"description":319,"extension":185,"image":320,"imageAlt":321,"imageNight":322,"meta":323,"navigation":190,"path":324,"published":190,"seo":325,"stem":326,"thumb":327,"thumbNight":328,"__hash__":329},"blog_en\u002Fblog\u002Fen\u002Flaravel-per-i-gestionali.md","Why we build business software on Laravel, and when we wouldn't",{"type":8,"value":201,"toc":312},[202,209,213,216,220,252,256,263,266,270,273,293,297,304],[11,203,204,205,208],{},"When a company asks us for a management system, a portal or the APIs behind an app, in most cases we start from ",[15,206,207],{},"Laravel",". It is the same foundation that runs MatemUpper Academy and Media Accreditation. Here is why, and when we choose something else.",[20,210,212],{"id":211},"what-laravel-is-in-short","What Laravel is, in short",[11,214,215],{},"Laravel is an open-source framework for building web applications in PHP. It has been around since 2011, it is used by thousands of companies worldwide and it is updated regularly. A framework is a ready-made base: it contains the parts every application needs, so the time goes into the features that really matter to the client.",[20,217,219],{"id":218},"why-we-choose-it","Why we choose it",[39,221,222,228,234,240,246],{},[42,223,224,227],{},[15,225,226],{},"The basics are already solid."," User sign-in, permissions, emails, job queues, scheduled tasks, database changes: all of it is already there and well tested. We don't reinvent it on every project.",[42,229,230,233],{},[15,231,232],{},"Security comes as standard."," Protection against the most common attacks is on without having to think about it. We add the rest: roles, activity logs, checks specific to the project.",[42,235,236,239],{},[15,237,238],{},"It is easy to test."," Every important feature has its own automated tests. When we change something a year later, we know straight away whether we broke something else.",[42,241,242,245],{},[15,243,244],{},"It lasts."," A management system lives for ten years, not six months. Laravel has a predictable release cycle, and moving from one version to the next is planned work, not an emergency.",[42,247,248,251],{},[15,249,250],{},"You are not tied to us."," Laravel is widely used: if one day you wanted to change supplier or bring development in-house, you would easily find developers who know it. For us it is a matter of integrity; for you, it is freedom.",[20,253,255],{"id":254},"how-we-use-it","How we use it",[11,257,258,259,262],{},"Laravel is the engine: data, rules, permissions, integrations. On top we build the interface, usually in ",[15,260,261],{},"Vue",", connected through Inertia or through APIs. The same APIs also serve the iOS and Android apps we build in Flutter.",[11,264,265],{},"That is how a single platform can have a website, an app and an admin panel, all sharing the same data.",[20,267,269],{"id":268},"when-we-choose-something-else","When we choose something else",[11,271,272],{},"Laravel is not the answer to everything. We take another route when:",[39,274,275,281,287],{},[42,276,277,280],{},[15,278,279],{},"all you need is a brochure site."," A management system for five pages is a waste: a static site or a CMS is better;",[42,282,283,286],{},[15,284,285],{},"your team already works with another technology",", for example .NET or Java. Software must be maintainable by the people who live with it every day, so we adapt;",[42,288,289,292],{},[15,290,291],{},"there is a very specific service"," that must handle thousands of events per second. In that case one part of the system can be written with better-suited tools, and Laravel stays for the rest.",[20,294,296],{"id":295},"the-right-question","The right question",[11,298,299,300,303],{},"The choice of framework matters, but another question matters more: ",[15,301,302],{},"who will look after this software in three years, and at what cost?"," Laravel lets us answer that well, because it keeps the code tidy, tested and easy to hand over.",[11,305,306,307,311],{},"If you have a management system to build, or an old one to put back on its feet, ",[82,308,310],{"href":309},"\u002Fen\u002Fcontact?topic=software","tell us how you work",": we'll tell you how we would set it up.",{"title":175,"searchDepth":176,"depth":176,"links":313},[314,315,316,317,318],{"id":211,"depth":176,"text":212},{"id":218,"depth":176,"text":219},{"id":254,"depth":176,"text":255},{"id":268,"depth":176,"text":269},{"id":295,"depth":176,"text":296},"Most of our management systems and platforms start from Laravel. Not out of habit, but because it makes software sturdier and easier to maintain. With a few exceptions.","\u002Fblog-laravel-panoramica.png","Small builders lay a sturdy house brick by brick, with its foundations clearly visible","\u002Fblog-laravel-panoramica-notte.png",{},"\u002Fblog\u002Fen\u002Flaravel-per-i-gestionali",{"title":199,"description":319},"blog\u002Fen\u002Flaravel-per-i-gestionali","\u002Fblog-laravel.png","\u002Fblog-laravel-notte.png","zZMp_neoODRvcaNTCzZpTs7N8zx7Mb7mrMMj9Ckft_I",{"id":331,"title":332,"body":333,"date":455,"description":456,"extension":185,"image":457,"imageAlt":458,"imageNight":459,"meta":460,"navigation":190,"path":461,"published":190,"seo":462,"stem":463,"thumb":464,"thumbNight":465,"__hash__":466},"blog_en\u002Fblog\u002Fen\u002Fflutter-un-codice-due-app.md","Flutter: one codebase for iOS and Android. When it pays off, and when it doesn't",{"type":8,"value":334,"toc":448},[335,342,346,349,353,378,382,385,408,411,415,422,426,429,440],[11,336,337,338,341],{},"When a company asks us for an app, the first technical question is almost always the same: ",[15,339,340],{},"two native apps, one for iPhone and one for Android, or a single codebase for both?"," For years, for most projects, our answer has been Flutter. But not for all of them.",[20,343,345],{"id":344},"what-flutter-is-in-short","What Flutter is, in short",[11,347,348],{},"Flutter is an open-source framework developed by Google. You write the app once, in the Dart language, and Flutter turns it into a real app for iOS and for Android. It is not a website in a frame: the app is compiled and draws its own interface, so it runs as smoothly as a native app.",[20,350,352],{"id":351},"why-we-often-choose-it","Why we often choose it",[39,354,355,361,367,373],{},[42,356,357,360],{},[15,358,359],{},"One codebase, one team."," Every feature is written and tested once. For you, that means lower costs and, above all, updates that reach iPhone and Android on the same day.",[42,362,363,366],{},[15,364,365],{},"The interface is the same everywhere."," The design you approve is the one every user sees, on any phone.",[42,368,369,372],{},[15,370,371],{},"Development is fast."," Changes show up in the app within seconds, without rebuilding. In review sessions with a client, that makes a huge difference.",[42,374,375,377],{},[15,376,244],{}," The project is mature, backed by Google and used by many companies. It is not a gamble.",[20,379,381],{"id":380},"when-we-prefer-native-instead","When we prefer native instead",[11,383,384],{},"Flutter is not the automatic answer. We choose native apps, written in Swift for iOS and Kotlin for Android, when:",[39,386,387,394,401],{},[42,388,389,390,393],{},"the app relies ",[15,391,392],{},"deeply on system features",", such as home-screen widgets, Apple Watch, CarPlay or special sensors;",[42,395,396,397,400],{},"it needs ",[15,398,399],{},"every new operating system feature from day one",", because that is part of its value;",[42,402,403,404,407],{},"the app exists for ",[15,405,406],{},"one platform only"," and will stay there.",[11,409,410],{},"In those cases building twice costs more, but it is the right choice.",[20,412,414],{"id":413},"and-after-launch","And after launch",[11,416,417,418,421],{},"An app is never finished. Every year Apple and Google release new system versions, and store rules and privacy requirements change. That is why, when we build an app, we plan from the start ",[15,419,420],{},"who updates it and how",": new versions, store releases, and checking the errors users report.",[20,423,425],{"id":424},"how-we-decide-together","How we decide together",[11,427,428],{},"Before choosing the technology, we start from three questions:",[113,430,431,434,437],{},[42,432,433],{},"Who will use the app, and on which phones?",[42,435,436],{},"Which phone features are really needed?",[42,438,439],{},"Who will look after it over the next three years?",[11,441,442,443,447],{},"With the answers, the choice between Flutter and native usually makes itself. If you are thinking about an app, ",[82,444,446],{"href":445},"\u002Fen\u002Fcontact?topic=app","send us your answers",": we'll tell you which way to go, and why.",{"title":175,"searchDepth":176,"depth":176,"links":449},[450,451,452,453,454],{"id":344,"depth":176,"text":345},{"id":351,"depth":176,"text":352},{"id":380,"depth":176,"text":381},{"id":413,"depth":176,"text":414},{"id":424,"depth":176,"text":425},"2026-11-07","Flutter lets you build an app for iPhone and Android from a single codebase. It is the right choice for many projects, not all of them. Here is how we decide.","\u002Fblog-flutter-panoramica.png","A little gardener waters a tree with a single trunk that splits into two branches, each bearing a phone as its fruit","\u002Fblog-flutter-panoramica-notte.png",{},"\u002Fblog\u002Fen\u002Fflutter-un-codice-due-app",{"title":332,"description":456},"blog\u002Fen\u002Fflutter-un-codice-due-app","\u002Fblog-flutter.png","\u002Fblog-flutter-notte.png","JmC7WnpPswfIr_pzUq6LGdgkWhcn2HlDE7bXRQ0cY7Q",{"id":468,"title":469,"body":470,"date":455,"description":607,"extension":185,"image":608,"imageAlt":609,"imageNight":610,"meta":611,"navigation":190,"path":612,"published":190,"seo":613,"stem":614,"thumb":615,"thumbNight":616,"__hash__":617},"blog_en\u002Fblog\u002Fen\u002Fserver-mcp-gestionale.md","What an MCP server is, and why your management software should have one",{"type":8,"value":471,"toc":600},[472,479,483,486,492,496,499,519,522,526,552,556,563,583,587,594],[11,473,474,475,478],{},"An AI assistant that answers \"in general\" is handy for writing an email. It becomes a working tool when it can answer questions like \"which orders from this customer are still open?\" or \"who approved this accreditation?\". To do that, it has to read your company's data. The ",[15,476,477],{},"Model Context Protocol",", or MCP, is the standard way to connect it.",[20,480,482],{"id":481},"the-problem-it-solves","The problem it solves",[11,484,485],{},"Until recently, connecting an AI assistant to a management system meant a custom integration for every pair: one assistant, one piece of software. Change assistant, and you started over.",[11,487,488,489,491],{},"MCP is an open protocol, introduced by Anthropic at the end of 2024 and now supported by the main assistants. It works like a standard socket: your software exposes, once, through an ",[15,490,85],{},", the operations you want to make available. Any compatible assistant can use them.",[20,493,495],{"id":494},"what-an-mcp-server-contains","What an MCP server contains",[11,497,498],{},"An MCP server is a small program that sits next to your management software. It declares three things:",[39,500,501,507,513],{},[42,502,503,506],{},[15,504,505],{},"tools",": the actions the assistant can request, for example \"find a customer\", \"list overdue invoices\", \"draft a quote\";",[42,508,509,512],{},[15,510,511],{},"resources",": the data it can read, such as documents, product sheets, regulations;",[42,514,515,518],{},[15,516,517],{},"prompts",": ready-made instructions for recurring tasks.",[11,520,521],{},"The assistant only sees what the server declares. It does not enter the database or see the tables: it asks, and the server decides what to answer.",[20,523,525],{"id":524},"why-it-pays-off-in-practice","Why it pays off, in practice",[39,527,528,534,540,546],{},[42,529,530,533],{},[15,531,532],{},"People ask instead of searching."," Someone in accounts asks \"how much does this customer still owe us?\" in plain language, instead of opening three screens and cross-checking.",[42,535,536,539],{},[15,537,538],{},"One connection, many assistants."," The server is written once. If you change assistant tomorrow, the connection stays.",[42,541,542,545],{},[15,543,544],{},"Permissions stay yours."," Each tool can require the user's login, respect their roles and record who did what. A sales rep sees their own customers, not everyone's.",[42,547,548,551],{},[15,549,550],{},"Sensitive actions stay with people."," A good MCP server prepares a draft or a preview; then a person confirms.",[20,553,555],{"id":554},"what-we-learned-building-one","What we learned building one",[11,557,558,559,562],{},"We wrote an MCP server for ",[15,560,561],{},"Media Accreditation",", our product for press accreditation, so organisers can query their event data straight from an AI assistant. Three lessons that apply to any management system:",[113,564,565,571,577],{},[42,566,567,570],{},[15,568,569],{},"Few tools, well described."," The assistant picks a tool by reading its description. Ten clear tools work better than fifty generic ones.",[42,572,573,576],{},[15,574,575],{},"Short, pre-filtered answers."," Sending thousands of rows to the assistant is costly and confusing. Better for the server to filter and summarise.",[42,578,579,582],{},[15,580,581],{},"Design security from day one."," Who can call which tool, what data leaves, where it stays. If data must remain in Europe, the assistant has to be chosen accordingly.",[20,584,586],{"id":585},"where-to-start","Where to start",[11,588,589,590,593],{},"You don't need to connect the whole system. Start from ",[15,591,592],{},"one question your team asks often"," that takes time today: the status of an order, this week's deadlines, stock availability. A first MCP server with two or three tools takes a few days to build, and tells you right away whether the idea works.",[11,595,596,597,599],{},"If you want to know whether it makes sense for your software, ",[82,598,310],{"href":171},": we'll reply with a concrete idea of what to connect first.",{"title":175,"searchDepth":176,"depth":176,"links":601},[602,603,604,605,606],{"id":481,"depth":176,"text":482},{"id":494,"depth":176,"text":495},{"id":524,"depth":176,"text":525},{"id":554,"depth":176,"text":555},{"id":585,"depth":176,"text":586},"AI assistants become useful when they can read your company's data. The MCP protocol exists for exactly that, with clear rules on what they can see and do.","\u002Fblog-mcp-panoramica.png","A small robot plugs a cable into a little archive house full of folders, and glowing documents flow out","\u002Fblog-mcp-panoramica-notte.png",{},"\u002Fblog\u002Fen\u002Fserver-mcp-gestionale",{"title":469,"description":607},"blog\u002Fen\u002Fserver-mcp-gestionale","\u002Fblog-mcp.png","\u002Fblog-mcp-notte.png","kWxEZIJ9VVdJaVbnFzElMRIWDboRtcC88WU-c7UIorE",1794240688566]