[{"data":1,"prerenderedAt":1230},["ShallowReactive",2],{"guides-count":3,"service-services_en-software-integrations":4,"service-slugs-integrations":175,"work-list-work_en-all-any-all":178},7,{"id":5,"title":6,"accent":7,"body":8,"description":131,"extension":132,"facts":133,"faq":146,"icon":159,"key":160,"meta":161,"navigation":162,"order":124,"path":163,"seo":164,"seoDescription":165,"seoTitle":166,"stem":167,"summary":168,"work":169,"__hash__":174},"services_en/services/software-integrations.md","Software integrations between business systems, banks and services","lav",{"type":9,"value":10,"toc":122},"minimark",[11,16,20,24,65,69,84,97,105,109,112,115,119],[12,13,15],"h2",{"id":14},"what-is-a-software-integration-for","What is a software integration for?",[17,18,19],"p",{},"Many businesses already have good tools - online banking, a business system, a shared spreadsheet, a sales platform - but spend hours copying data from one to the other. Every manual step is lost time and a chance for errors. An integration makes the data move on its own, at the right moment, in the right format.",[12,21,23],{"id":22},"which-systems-can-be-connected","Which systems can be connected?",[25,26,27,35,41,47,53,59],"ul",{},[28,29,30,34],"li",{},[31,32,33],"strong",{},"Banks",": business account transactions and documents that reach your system without downloading them by hand",[28,36,37,40],{},[31,38,39],{},"Business systems and custom software",", including ones built years ago by someone else",[28,42,43,46],{},[31,44,45],{},"Online payments",": Stripe, with separate accounts per business line, subscriptions, renewals and refunds handled through webhooks",[28,48,49,52],{},[31,50,51],{},"Sales platforms and resellers",": availability, bookings and cancellations synced both ways",[28,54,55,58],{},[31,56,57],{},"Google Workspace",": documents saved and organised in Google Drive, data and reports always up to date in Google Sheets",[28,60,61,64],{},[31,62,63],{},"Apps and devices in the field"," that work offline and sync with the central platform as soon as the connection is back",[12,66,68],{"id":67},"a-few-real-examples","A few real examples",[17,70,71,72,75,76,79,80,83],{},"For one client we connected their ",[31,73,74],{},"Qonto business account to their custom business system",", with documents synced to ",[31,77,78],{},"Google Drive"," and data to ",[31,81,82],{},"Google Sheets",": banking information lands where it's needed without anyone exporting and re-entering it.",[17,85,86,87,92,93,96],{},"For a tourist boat operator we integrated the ",[88,89,91],"a",{"href":90},"/work/boat-ticketing","online ticketing platform"," with ",[31,94,95],{},"GetYourGuide"," through its API: resellers' availability, bookings, purchases and cancellations end up on the same platform as direct sales, with payments handled by Stripe.",[17,98,99,100,104],{},"For a ferry operator, the ",[88,101,103],{"href":102},"/work/ferry-pos-printer","point-of-sale app on the docks"," stores every sale locally and syncs it with the back-office as soon as there's coverage: dock sales, online sales and B2B bookings all end up in the same place.",[12,106,108],{"id":107},"how-we-work","How we work",[17,110,111],{},"It starts with a free 30-minute call where you tell us which systems you use and where time gets lost. Then we map the data flows - what goes where, when, and who owns it - and scope a first milestone at a fixed price. We build the integration, test it with real data and put it in production with monitoring, so you know right away if something's wrong.",[17,113,114],{},"You always talk directly to the senior engineers building it.",[12,116,118],{"id":117},"reliability-first","Reliability first",[17,120,121],{},"An integration that works 95% of the time is a problem, because the other 5% is found out late. That's why we design every connection with error handling, automatic retries and readable logs, and document how it works, so your team or another supplier can maintain it.",{"title":123,"searchDepth":124,"depth":124,"links":125},"",2,[126,127,128,129,130],{"id":14,"depth":124,"text":15},{"id":22,"depth":124,"text":23},{"id":67,"depth":124,"text":68},{"id":107,"depth":124,"text":108},{"id":117,"depth":124,"text":118},"We connect your software to banks, business systems, CRMs, payments and Google Workspace, so data moves between them on its own - no copy-paste, no double entry.","md",[134,137,140,143],{"label":135,"value":136},"Real examples","Qonto, Stripe, GetYourGuide, Google Drive and Sheets",{"label":138,"value":139},"Approach","Official APIs, webhooks and syncs",{"label":141,"value":142},"Price","Fixed, per milestone",{"label":144,"value":145},"At handover","Tested, documented code",[147,150,153,156],{"q":148,"a":149},"Can you connect our system even if it's old or custom-built?","Almost always. If the system exposes an API we use it directly; if it doesn't, we work with exports, the database or shared files, or build a small service in between that acts as a bridge. In the call we tell you which route is the most reliable in your case.",{"q":151,"a":152},"What happens when one of the connected systems is down?","A serious integration has to plan for it. We design syncs so operations aren't lost - they're stored and retried when the system is back - and so errors are visible, not silent.",{"q":154,"a":155},"Are banking and customer data safe?","We use the providers' official APIs, credentials with only the permissions needed and encrypted connections. Access keys stay on your servers or on services we choose together, never in the code.",{"q":157,"a":158},"Do we have to replace the software we already use?","No, the goal is the opposite - getting the tools your team already knows to talk to each other, instead of replacing them.","material-symbols:api","integrations",{},true,"/services/software-integrations",{"title":6,"description":131},null,"Software integrations and APIs for businesses","services/software-integrations","We connect new software to the ERP, CRM, bank, payment systems and Google Workspace you already use, built to high security and reliability standards.",[170,171,172,173],"boat-ticketing","ferry-pos-printer","ferry-audio-guide","local-delivery-platform","19qA6WvGqswaRs9cl0SDQKOycygx3tzU2mCvS_RMi-M",{"en":176,"it":177},"software-integrations","integrazioni-software",[179,273,404,496,581,714,814,945,1033,1119],{"id":180,"title":181,"body":182,"client":245,"cover":247,"description":250,"extension":132,"featured":162,"industry":251,"media":252,"meta":253,"navigation":162,"order":254,"outcome":255,"ownProduct":256,"path":90,"productStatus":165,"results":257,"screenshots":258,"seo":259,"seoDescription":165,"seoTitle":165,"services":260,"stack":264,"stem":270,"url":165,"year":271,"__hash__":272},"work_en/work/boat-ticketing.md","Online ticketing for a tourist boat operator",{"type":9,"value":183,"toc":240},[184,188,191,195,233,237],[12,185,187],{"id":186},"the-challenge","The challenge",[17,189,190],{},"Selling tickets for a boat service is harder than it looks: several lines and stops, seasonal timetables, a fixed daily capacity, stops that close for bad weather, international passengers and a share of sales coming through resellers. All of it had to live in one system that the office staff could run on their own.",[12,192,194],{"id":193},"what-we-built","What we built",[25,196,197,203,209,215,221,227],{},[28,198,199,202],{},[31,200,201],{},"Online purchase in 4 languages"," with Stripe checkout, separate Stripe accounts per line, and a PDF ticket with barcode sent by email",[28,204,205,208],{},[31,206,207],{},"Network configuration"," in the back-office: lines, stops, routes and fares, timetable templates and rules that generate the daily sailings automatically",[28,210,211,214],{},[31,212,213],{},"Operations tools",": stop closures by date, an orders calendar with capacity and allotments, boarding manifests",[28,216,217,220],{},[31,218,219],{},"Cancellations and refunds"," with reasons, emails and SMS translated into each customer's language and sent in the background",[28,222,223,226],{},[31,224,225],{},"GetYourGuide integration"," over API: availability, reservations, bookings and cancellations sync with the platform",[28,228,229,232],{},[31,230,231],{},"Roles and permissions",", order reports and PDF exports for the office team",[12,234,236],{"id":235},"outcome","Outcome",[17,238,239],{},"Direct sales, reseller bookings and daily operations now run on a single platform. The office team configures new lines and seasons, handles weather closures and manages cancellations without asking a developer.",{"title":123,"searchDepth":124,"depth":124,"links":241},[242,243,244],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194},{"id":235,"depth":124,"text":236},{"alias":246,"nda":162},"Tourist boat operator, Italy",{"accent":7,"icon":248,"scene":249},"material-symbols:directions-boat-outline","route","One platform for direct online sales, resellers and day-to-day operations of a multi-line boat service.","Tourism & mobility","cover",{},0,"Sales, resellers and weather closures handled by the office team, without calling a developer.",false,[],[],{"title":181,"description":250},[261,262,263],"Full-stack product","Platform & API","Back-office",[265,266,267,268,269],".NET 8","Blazor WebAssembly","ASP.NET Core","SQL Server","Stripe","work/boat-ticketing",2026,"08s_N41gb3l9P-S970D3TkVBilh5iKITlkb-VH4qLkM",{"id":274,"title":275,"body":276,"client":380,"cover":382,"description":386,"extension":132,"featured":256,"industry":251,"media":252,"meta":387,"navigation":162,"order":388,"outcome":389,"ownProduct":256,"path":390,"productStatus":165,"results":391,"screenshots":392,"seo":393,"seoDescription":165,"seoTitle":394,"services":395,"stack":397,"stem":401,"url":165,"year":402,"__hash__":403},"work_en/work/ferry-audio-guide.md","Ticketing, staff apps and a geolocated audio guide for a ferry operator",{"type":9,"value":277,"toc":369},[278,280,283,285,288,293,296,328,332,339,343,346,350,364,366],[12,279,187],{"id":186},[17,281,282],{},"A ferry company serving several tourist lines wanted to sell more online, simplify work on the docks and give passengers a reason to keep the phone in hand during the trip: a guide that tells the story of the coast as the boat goes by, in the passenger's own language.",[12,284,194],{"id":193},[17,286,287],{},"Since 2023 we have designed and maintained the whole ecosystem: apps, web and back-office, all on the same platform.",[289,290,292],"h3",{"id":291},"geolocated-audio-guide","Geolocated audio guide",[17,294,295],{},"The heart of the passenger app (iOS and Android, built in Flutter).",[25,297,298,305,312,318,325],{},[28,299,300,301,304],{},"Every stop of the guide is a point on the map with its own ",[31,302,303],{},"trigger radius",": when the boat enters the area, the matching track starts",[28,306,307,308,311],{},"A live ",[31,309,310],{},"map with all points of interest"," and the passenger's position, plus a list of tracks grouped by line",[28,313,314,317],{},[31,315,316],{},"Offline download"," of tracks, so the guide keeps working at sea without coverage",[28,319,320,321,324],{},"Audio and text guide in ",[31,322,323],{},"5 languages"," (Italian, English, French, German, Spanish)",[28,326,327],{},"Tracks managed from the back-office: position, radius, playback order and translations for each line, without publishing a new app",[289,329,331],{"id":330},"passenger-app","Passenger app",[17,333,334,335,338],{},"Besides the guide: timetable search, ticket activation with QR code, and ",[31,336,337],{},"push notifications"," for timetable changes and cancellations.",[289,340,342],{"id":341},"online-shop-and-back-office","Online shop and back-office",[17,344,345],{},"Ticket sales with online payment and PDF tickets, plus a back-office to manage lines, timetables, closures, orders, translations and audio guide content.",[289,347,349],{"id":348},"staff-apps","Staff apps",[25,351,352,358],{},[28,353,354,357],{},[31,355,356],{},"Ticket validation",": an app that scans QR codes at boarding",[28,359,360,363],{},[31,361,362],{},"Sales and printing",": tickets sold on the dock with Bluetooth thermal printing, B2B orders, takings and expenses, synced with the central platform",[12,365,236],{"id":235},[17,367,368],{},"Online shop, docks and passengers now work on the same data. The audio guide turns the crossing into a guided tour, and the operator updates content and translations on their own, without going through the app stores.",{"title":123,"searchDepth":124,"depth":124,"links":370},[371,372,379],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194,"children":373},[374,376,377,378],{"id":291,"depth":375,"text":292},3,{"id":330,"depth":375,"text":331},{"id":341,"depth":375,"text":342},{"id":348,"depth":375,"text":349},{"id":235,"depth":124,"text":236},{"alias":381,"nda":162},"Passenger ferry company, Italy",{"accent":383,"icon":384,"scene":385},"cyan","material-symbols:headphones-outline","audio","A connected ecosystem for passenger ferries - online shop, back-office, a passenger app with a GPS audio guide, and apps for staff on the docks.",{},1,"Online shop, docks and passengers on the same data; audio guide updated without the app stores.","/work/ferry-audio-guide",[],[],{"title":275,"description":386},"Ferry ticketing & GPS audio guide app",[396,262,263],"Mobile apps",[398,399,266,267,268,400],"Flutter",".NET","Firebase","work/ferry-audio-guide",2023,"pwX9t3YFVoeF64V3Mw0Ns0p8BnrR2IYyp5T-dJMzumE",{"id":405,"title":406,"body":407,"client":475,"cover":476,"description":480,"extension":132,"featured":256,"industry":251,"media":252,"meta":481,"navigation":162,"order":124,"outcome":482,"ownProduct":256,"path":102,"productStatus":165,"results":483,"screenshots":484,"seo":485,"seoDescription":165,"seoTitle":486,"services":487,"stack":488,"stem":493,"url":165,"year":494,"__hash__":495},"work_en/work/ferry-pos-printer.md","Point-of-sale app with thermal printing for ferry ticket desks",{"type":9,"value":408,"toc":470},[409,411,414,416,427,465,467],[12,410,187],{"id":186},[17,412,413],{},"Ticket desks on the docks sold tickets with standalone machines that knew nothing about online sales, B2B bookings or the day's takings. Coverage on the waterfront is unreliable, queues form right before departure, and every sale has to end with a printed ticket in the passenger's hand.",[12,415,194],{"id":193},[17,417,418,419,422,423,426],{},"An Android and iOS app that turns a phone or tablet paired with a ",[31,420,421],{},"Bluetooth thermal printer"," into a full ticket desk. It is part of the ",[88,424,425],{"href":390},"ferry ecosystem"," we built for the same operator.",[25,428,429,435,441,447,453,459],{},[28,430,431,434],{},[31,432,433],{},"Fast sale and print",": ticket catalogue filtered by desk and route, favourite tickets, cash or card, departure time and QR code printed on the ticket",[28,436,437,440],{},[31,438,439],{},"Offline first",": every sale is saved in a local SQLite database and synced with the back-office when the connection comes back, so the desk never stops",[28,442,443,446],{},[31,444,445],{},"B2B and groups",": tickets for agencies, drivers and guides, plus retrieval of tour-operator group bookings to print their tickets on boarding",[28,448,449,452],{},[31,450,451],{},"Audio guide codes"," printed on the ticket, to unlock the guide in the passenger app",[28,454,455,458],{},[31,456,457],{},"Cash management",": takings and expenses, end-of-day closing, reports per desk and reprint of lost tickets",[28,460,461,464],{},[31,462,463],{},"Control",": each device registered as a cash desk, admin area, print logs and automatic printer reconnection",[12,466,236],{"id":235},[17,468,469],{},"Dock sales, online sales and B2B bookings now end up in the same place. Staff sell and print in seconds even without coverage, and the office sees the takings of every desk without collecting receipts by hand.",{"title":123,"searchDepth":124,"depth":124,"links":471},[472,473,474],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194},{"id":235,"depth":124,"text":236},{"alias":381,"nda":162},{"accent":477,"icon":478,"scene":479},"yellow","material-symbols:print-outline","pos","A tablet and phone app for selling and printing tickets on the docks, that keeps working offline and syncs every sale with the central platform.",{},"Dock staff sell and print in seconds, even offline; the office sees takings without collecting receipts.",[],[],{"title":406,"description":480},"Ferry ticket POS app with thermal printing",[396,262],[398,489,490,491,492],"Dart","SQLite","BLoC","Bluetooth printing","work/ferry-pos-printer",2024,"UENP5hlR5x7OL3BaYqSpf0dQ0NY_a_sOpj-Vt_YXvcU",{"id":497,"title":498,"body":499,"client":559,"cover":561,"description":565,"extension":132,"featured":256,"industry":566,"media":252,"meta":567,"navigation":162,"order":375,"outcome":568,"ownProduct":256,"path":569,"productStatus":165,"results":570,"screenshots":571,"seo":572,"seoDescription":165,"seoTitle":165,"services":573,"stack":575,"stem":578,"url":165,"year":579,"__hash__":580},"work_en/work/coworking-access-app.md","Smart access app for a coworking space",{"type":9,"value":500,"toc":554},[501,503,506,508,511,549,551],[12,502,187],{"id":186},[17,504,505],{},"A coworking space needed to control who gets in and who uses the network, without badges to print, Wi-Fi passwords passed around or staff checking every entrance. Everything had to run from the phone members already carry.",[12,507,194],{"id":193},[17,509,510],{},"An iOS and Android app, built in Flutter, that works as the member's digital pass.",[25,512,513,519,525,531,537,543],{},[28,514,515,518],{},[31,516,517],{},"Open the door with the phone",": members scan the QR code at the entrance and the door unlocks, only if their membership is active",[28,520,521,524],{},[31,522,523],{},"One-tap Wi-Fi access",": the app authenticates the member on the space's network, with no shared passwords",[28,526,527,530],{},[31,528,529],{},"Second device",": members can connect a laptop or tablet by scanning a QR code from the app, and disconnect it when they want",[28,532,533,536],{},[31,534,535],{},"Device-bound accounts",": each account is tied to the member's phone. New registrations and phone changes are confirmed at the desk with a code shown in the app, so passes can't be shared",[28,538,539,542],{},[31,540,541],{},"Membership status"," driving the experience: active, expired (with renewal screen), pending activation or new terms to accept",[28,544,545,548],{},[31,546,547],{},"Bookings and news"," from the space, privacy and terms consent management, profile and account deletion",[12,550,236],{"id":235},[17,552,553],{},"Entrance and network are handled by the app: the desk only steps in to activate new members, and access always follows the membership status. The app has been in use and maintained since 2021.",{"title":123,"searchDepth":124,"depth":124,"links":555},[556,557,558],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194},{"id":235,"depth":124,"text":236},{"alias":560,"nda":162},"Coworking space, Italy",{"accent":562,"icon":563,"scene":564},"pink","material-symbols:door-open-outline","access","The members' app becomes the key to the space - it opens the door, connects to the Wi-Fi and manages membership, bookings and news.","Coworking",{},"Entrance and network run through the app: the desk only steps in for new members. In use since 2021.","/work/coworking-access-app",[],[],{"title":498,"description":565},[574],"Mobile app",[398,489,576,577],"REST API","Firebase Crashlytics","work/coworking-access-app",2021,"WVaHGTCY1oRa01qezgheFIT6juxRCmTY0UHpgf-9_rs",{"id":582,"title":583,"body":584,"client":693,"cover":695,"description":698,"extension":132,"featured":162,"industry":699,"media":252,"meta":700,"navigation":162,"order":701,"outcome":702,"ownProduct":256,"path":703,"productStatus":165,"results":704,"screenshots":705,"seo":706,"seoDescription":165,"seoTitle":707,"services":708,"stack":709,"stem":712,"url":165,"year":402,"__hash__":713},"work_en/work/event-bus-travel.md","Passenger and crew app for bus trips to concerts and events",{"type":9,"value":585,"toc":685},[586,588,591,593,596,600,638,642,680,682],[12,587,187],{"id":186},[17,589,590],{},"Organised bus trips to concerts mean passengers picked up at different stops, a coach that has to reach the venue, and a return trip late at night. Passengers want to know where their bus is; the escorts on board need to know who has boarded, who is missing and how to reach everyone, often with poor coverage on the road.",[12,592,194],{"id":193},[17,594,595],{},"A single iOS and Android app, built in Flutter, with two modes: one for passengers and one for the crew.",[289,597,599],{"id":598},"for-passengers","For passengers",[25,601,602,608,614,620,626,632],{},[28,603,604,607],{},[31,605,606],{},"Events, artists and stops",": find the trip for your concert and the nearest departure point",[28,609,610,613],{},[31,611,612],{},"QR ticket"," always at hand for boarding",[28,615,616,619],{},[31,617,618],{},"Live bus position"," on the map, with expected arrival at your stop",[28,621,622,625],{},[31,623,624],{},"Parking info at the venue",": where the coach waits after the show, with position and photo",[28,627,628,631],{},[31,629,630],{},"Loyalty points and partner discounts",", redeemable from the app",[28,633,634,637],{},[31,635,636],{},"Push notifications"," from the crew, OTP login and account management",[289,639,641],{"id":640},"for-the-on-board-escorts","For the on-board escorts",[25,643,644,650,656,662,668,674],{},[28,645,646,649],{},[31,647,648],{},"Stop-by-stop trip"," for outbound and return, with the list of passengers expected at each stop",[28,651,652,655],{},[31,653,654],{},"QR boarding",": scan the ticket and the passenger is marked as on board, with live counts of boarded and missing passengers",[28,657,658,661],{},[31,659,660],{},"Background GPS tracking"," that shares the bus position with passengers, plus a \"break\" mode for rest stops",[28,663,664,667],{},[31,665,666],{},"Coach parking"," at the venue saved with position and photo, and one tap to start the navigator",[28,669,670,673],{},[31,671,672],{},"Messages to passengers"," from ready-made templates, sent as push notifications",[28,675,676,679],{},[31,677,678],{},"Offline route download"," and an end-of-trip report",[12,681,236],{"id":235},[17,683,684],{},"Passengers and crew finally share the same picture of the trip: who is on board, where the bus is, where it will be waiting after the show. The app has been in use since 2023.",{"title":123,"searchDepth":124,"depth":124,"links":686},[687,688,692],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194,"children":689},[690,691],{"id":598,"depth":375,"text":599},{"id":640,"depth":375,"text":641},{"id":235,"depth":124,"text":236},{"alias":694,"nda":162},"Bus travel operator for concerts and events, Italy",{"accent":383,"icon":696,"scene":697},"material-symbols:directions-bus-outline","bus","One app for both sides of the trip - passengers follow their bus live and board with a QR code, on-board escorts run every stop from their phone.","Travel & events",{},4,"Passengers and crew see in real time who's on board and where the bus is waiting. In use since 2023.","/work/event-bus-travel",[],[],{"title":583,"description":698},"Event bus travel app: live tracking, QR boarding",[574],[398,489,490,710,711],"Firebase Cloud Messaging","OpenStreetMap","work/event-bus-travel","xwAyZukd0IMAwrLWOeTCoYyWM3AToJrYTfUsD7WUryg",{"id":715,"title":716,"body":717,"client":794,"cover":796,"description":799,"extension":132,"featured":162,"industry":800,"media":252,"meta":801,"navigation":162,"order":802,"outcome":803,"ownProduct":256,"path":804,"productStatus":165,"results":805,"screenshots":806,"seo":807,"seoDescription":165,"seoTitle":808,"services":809,"stack":810,"stem":812,"url":165,"year":271,"__hash__":813},"work_en/work/cycling-routes-app.md","Cycling routes app with 3D maps and audio points of interest",{"type":9,"value":718,"toc":789},[719,721,724,726,729,784,786],[12,720,187],{"id":186},[17,722,723],{},"A cycle tourism company wanted to bring its routes to riders' phones: not just a GPX file to download, but an app to choose the right ride, understand how hard it is before setting off, and discover what is worth seeing along the way.",[12,725,194],{"id":193},[17,727,728],{},"An iOS and Android app built in Flutter, designed from scratch with a BLoC architecture.",[25,730,731,737,746,756,762,771,777],{},[28,732,733,736],{},[31,734,735],{},"Route catalogue"," with photo, distance, duration, difficulty, climbing and descent, plus difficulty filters and search by province",[28,738,739,742,743],{},[31,740,741],{},"Route detail"," with description and ",[31,744,745],{},"elevation profile",[28,747,748,751,752,755],{},[31,749,750],{},"2D and 3D maps"," on Mapbox with custom styles, and a ",[31,753,754],{},"3D flyover"," that circles the route before you set off",[28,757,758,761],{},[31,759,760],{},"Audio points of interest",": tap a point on the map and listen to its story",[28,763,764,767,768],{},[31,765,766],{},"Ride mode",": the map follows your GPS position along the track, and every ride ends up in your ",[31,769,770],{},"route history",[28,772,773,776],{},[31,774,775],{},"Accounts"," with email confirmation, activation code, password recovery and account deletion",[28,778,779,780,783],{},"Consent and location permission management, ",[31,781,782],{},"4 languages"," (Italian, English, French, Spanish) and a dark theme built for outdoor use",[12,785,236],{"id":235},[17,787,788],{},"Riders find the right route, preview it in 3D and ride it with the map in their pocket, while the company publishes routes and points of interest from its own platform without releasing new app versions.",{"title":123,"searchDepth":124,"depth":124,"links":790},[791,792,793],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194},{"id":235,"depth":124,"text":236},{"alias":795,"nda":162},"Cycle tourism company, Italy",{"accent":477,"icon":797,"scene":798},"material-symbols:directions-bike","elevation","An app to discover cycling routes, preview them in 3D and ride them with GPS, with audio stories at every point of interest.","Outdoor & cycle tourism",{},5,"New routes and points of interest go live from the platform, without an app update.","/work/cycling-routes-app",[],[],{"title":716,"description":799},"Cycling routes app with 3D maps & audio guide",[574],[398,489,491,811,576],"Mapbox","work/cycling-routes-app","AXdNYvueu1cSKLm6PZ2QMgCyLQedtUUd_0p_9vl7OM0",{"id":815,"title":816,"body":817,"client":922,"cover":924,"description":927,"extension":132,"featured":256,"industry":928,"media":252,"meta":929,"navigation":162,"order":930,"outcome":931,"ownProduct":256,"path":932,"productStatus":165,"results":933,"screenshots":934,"seo":935,"seoDescription":936,"seoTitle":937,"services":938,"stack":939,"stem":942,"url":165,"year":943,"__hash__":944},"work_en/work/local-delivery-platform.md","Local delivery platform, with an admin dashboard and a driver app",{"type":9,"value":818,"toc":917},[819,821,824,827,829,832,837,851,856,876,881,912,914],[12,820,187],{"id":186},[17,822,823],{},"A business that sells online delivers orders locally with its own drivers. Orders already came in through its platform, but everything that happened next - deciding who delivers what, getting addresses to the drivers, knowing where each delivery stands and keeping the customer informed - was handled by hand.",[17,825,826],{},"It needed a tool that started from the orders the business already received, without changing its sales platform, and gave the admins real-time control of deliveries.",[12,828,194],{"id":193},[17,830,831],{},"Three connected parts: the integration with the client's platform, a dashboard for the admins and an app for the drivers.",[17,833,834],{},[31,835,836],{},"Integration and automations",[25,838,839,845],{},[28,840,841,844],{},[31,842,843],{},"Orders arrive on their own",": we connect to the client's service, and orders to deliver enter the system with no re-keying",[28,846,847,850],{},[31,848,849],{},"Customer notifications",": automatic messages at every change in the delivery status",[17,852,853],{},[31,854,855],{},"Admin dashboard",[25,857,858,864,870],{},[28,859,860,863],{},[31,861,862],{},"Assign orders to drivers",", and reassign them when needed",[28,865,866,869],{},[31,867,868],{},"Live driver positions"," on the map, together with the status of each delivery",[28,871,872,875],{},[31,873,874],{},"History and reports"," of deliveries by day and by driver",[17,877,878],{},[31,879,880],{},"Driver app (iOS and Android, built with Flutter)",[25,882,883,889,894,900,906],{},[28,884,885,888],{},[31,886,887],{},"List of assigned orders",", with addresses and delivery details",[28,890,891,893],{},[31,892,636],{}," when a new order comes in",[28,895,896,899],{},[31,897,898],{},"One-tap navigation"," to the address",[28,901,902,905],{},[31,903,904],{},"Delivery status"," updated by the driver and seen at once in the dashboard",[28,907,908,911],{},[31,909,910],{},"Proof of delivery"," with a photo or signature",[12,913,236],{"id":235},[17,915,916],{},"Orders, drivers and deliveries are managed from one place: admins see in real time who is delivering what and where, drivers have everything they need on their phone, and customers know when their order will arrive. The platform has been in use since 2025.",{"title":123,"searchDepth":124,"depth":124,"links":918},[919,920,921],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194},{"id":235,"depth":124,"text":236},{"alias":923,"nda":162},"E-commerce with local delivery, Italy",{"accent":7,"icon":925,"scene":926},"material-symbols:local-shipping-outline","delivery","E-commerce orders flow straight into a dashboard where they are assigned to drivers, who deliver with a dedicated app. Everything updates in real time.","E-commerce & local delivery",{},5.5,"Orders, drivers and deliveries in one place, updated in real time. In use since 2025.","/work/local-delivery-platform",[],[],{"title":816,"description":927},"Local delivery management for an e-commerce business - integration with existing orders, a real-time admin dashboard and an iOS and Android app for drivers.","Local delivery software and driver app",[396,262,263],[398,489,940,941,576],"Nuxt","Vue","work/local-delivery-platform",2025,"jCDpZ_PXqVi-zXpQjOvwzVhHmr6ZrYZML9ivl3gg6z0",{"id":946,"title":947,"body":948,"client":1002,"cover":1005,"description":1007,"extension":132,"featured":256,"industry":1008,"media":1009,"meta":1010,"navigation":162,"order":1011,"outcome":1012,"ownProduct":162,"path":1013,"productStatus":1014,"results":1015,"screenshots":1016,"seo":1020,"seoDescription":165,"seoTitle":165,"services":1021,"stack":1023,"stem":1031,"url":165,"year":271,"__hash__":1032},"work_en/work/kweendee.md","Kweendee - an AI concierge for hotels and B&Bs",{"type":9,"value":949,"toc":997},[950,952,955,957,960,992,994],[12,951,187],{"id":186},[17,953,954],{},"Hotel and B&B guests ask the same things at any hour and in any language: is breakfast still on, when is check-out, where to park, where to eat tonight. At night the reception is small or closed, and during the day these questions take time away from the guests who really need a person.",[12,956,194],{"id":193},[17,958,959],{},"Kweendee, our own product: an AI concierge that answers guests using only the property's own information.",[25,961,962,968,974,980,986],{},[28,963,964,967],{},[31,965,966],{},"Dashboard for the property",": create a concierge, give it a name and the colours of the hotel, and keep everything in one place behind a login",[28,969,970,973],{},[31,971,972],{},"A knowledge base from what the hotel already has",": Kweendee learns from the pages of the hotel's website, Notion, Google Docs, PDFs and Word files. It reads the content, splits it into chunks and indexes it in a vector database, in the background, every time a source is synced",[28,975,976,979],{},[31,977,978],{},"Answers grounded in the hotel's content",": each question retrieves the relevant chunks and the model answers from those, in the guest's language, with the conversation history as context",[28,981,982,985],{},[31,983,984],{},"Chat widget for any website",": one script tag adds the concierge to the hotel's site, with a standalone page for links and QR codes",[28,987,988,991],{},[31,989,990],{},"Conversation logs",": every session is saved before the answer is generated, so staff can read what guests asked and spot what's missing from the knowledge base",[12,993,236],{"id":235},[17,995,996],{},"The hotel keeps its information where it already is (website, Notion, documents) and the concierge stays in sync with it. Guests get an answer straight away, at two in the morning too, and the reception handles only what needs a person. Kweendee is getting ready for launch, with the waitlist open to hotels and B&Bs.",{"title":123,"searchDepth":124,"depth":124,"links":998},[999,1000,1001],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194},{"id":235,"depth":124,"text":236},{"name":1003,"alias":1004,"nda":256},"Kweendee","Hospitality SaaS, Italy",{"accent":477,"icon":1006},"material-symbols:room-service-outline","A concierge that answers guests in over 50 languages, day and night, trained on each property's own information.","Hospitality","screenshots",{},6,"Guests get an answer straight away, even at 2 a.m.; reception handles only what needs a person.","/work/kweendee","Waitlist open",[],[1017],{"src":1018,"alt":1019},"/img/work/kweendee/01.webp","Kweendee landing page: the hero and a guest chat with the concierge at 2 am",{"title":947,"description":1007},[261,1022,262],"AI & RAG",[940,941,1024,1025,1026,1027,1028,1029,1030],"Supabase","pgvector","LangChain","OpenAI","Notion API","Inngest","Tailwind CSS","work/kweendee","zy_6vy-aXXxZ61Hf9D0_nT7L-3YIQRPKhcDSFBPG2oA",{"id":1034,"title":1035,"body":1036,"client":1096,"cover":1098,"description":1100,"extension":132,"featured":256,"industry":1008,"media":1009,"meta":1101,"navigation":162,"order":3,"outcome":1102,"ownProduct":162,"path":1103,"productStatus":1104,"results":1105,"screenshots":1106,"seo":1110,"seoDescription":165,"seoTitle":165,"services":1111,"stack":1112,"stem":1116,"url":1117,"year":271,"__hash__":1118},"work_en/work/iiziguest.md","iiziguest - the digital guest guide for B&Bs",{"type":9,"value":1037,"toc":1091},[1038,1040,1043,1045,1048,1086,1088],[12,1039,187],{"id":186},[17,1041,1042],{},"B&B hosts answer the same questions over and over: the Wi-Fi password, how to check in, where to park, where to eat. Often by message, often at 11 pm. Paper guides go out of date and guests don't read them, and nobody wants to download an app for a three-night stay.",[12,1044,194],{"id":193},[17,1046,1047],{},"iiziguest, our own product: a digital guide for each property, which guests open from a QR code in the room or a link sent before arrival. No app, no login.",[25,1049,1050,1056,1062,1068,1074,1080],{},[28,1051,1052,1055],{},[31,1053,1054],{},"Guide editor for the host",": sections with icons and colour themes, check-in steps with photos, house rules, Wi-Fi with one-tap copy, and a live mobile preview. Ready-made templates get a guide online in about ten minutes",[28,1057,1058,1061],{},[31,1059,1060],{},"Local tips on a map",": the host searches for places with Google Places and adds them with photos, distance and reviews. Guests see them on a map and open directions in one tap",[28,1063,1064,1067],{},[31,1065,1066],{},"Automatic translations",": the host turns on a language with one click and the whole guide, places included, is translated. Guests read it in their own language",[28,1069,1070,1073],{},[31,1071,1072],{},"QR code and link",": a printable QR for the room and a short link for the booking message",[28,1075,1076,1079],{},[31,1077,1078],{},"Subscriptions with Stripe",": a yearly plan per property, all features included. Hosts with more than one B&B add properties when they need them, and billing adjusts proportionally. Checkout, renewals, cancellations and downgrades are handled through Stripe webhooks",[28,1081,1082,1085],{},[31,1083,1084],{},"Accounts and back-office",": Firebase authentication and storage, branded emails for password resets, and a superadmin area to manage the shared place templates",[12,1087,236],{"id":235},[17,1089,1090],{},"iiziguest is live and sold as a subscription. The host updates the guide once and every guest sees the change, guests find answers on their own, and the late-evening messages drop.",{"title":123,"searchDepth":124,"depth":124,"links":1092},[1093,1094,1095],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194},{"id":235,"depth":124,"text":236},{"name":1097,"alias":1004,"nda":256},"iiziguest",{"accent":562,"icon":1099},"material-symbols:menu-book-outline","Everything guests need to know in one tap - Wi-Fi, check-in, local tips and maps - from a QR code, with no app to download.",{},"Live and sold as a subscription: the host updates the guide once and late-evening guest messages drop.","/work/iiziguest","Live · iiziguest.com",[],[1107],{"src":1108,"alt":1109},"/img/work/iiziguest/01.webp","iiziguest landing page: the hero and a phone showing a B&B guide with Wi-Fi, check-in, map and local tips",{"title":1035,"description":1100},[261,262,263],[940,941,400,269,1113,1114,1115,1030],"Google Maps & Places API","Google Translate API","Resend","work/iiziguest","https://www.iiziguest.com","xulNtlZ6j8iAWZyd3Lnvj_uaEpEHNA6ocvl5qqhZWzA",{"id":1120,"title":1121,"body":1122,"client":1200,"cover":1203,"description":1205,"extension":132,"featured":256,"industry":1206,"media":1009,"meta":1207,"navigation":162,"order":1208,"outcome":1209,"ownProduct":162,"path":1210,"productStatus":1211,"results":1212,"screenshots":1213,"seo":1220,"seoDescription":165,"seoTitle":1221,"services":1222,"stack":1225,"stem":1227,"url":1228,"year":271,"__hash__":1229},"work_en/work/iizimenu.md","iizimenu - the QR code digital menu for restaurants",{"type":9,"value":1123,"toc":1195},[1124,1126,1129,1132,1134,1137,1180,1190,1192],[12,1125,187],{"id":186},[17,1127,1128],{},"Printed menus go out of date quickly. Changing a price, dropping a dish or updating the seasonal menu means correcting or reprinting every copy. When foreign customers arrive or someone asks about allergens, you need yet another version.",[17,1130,1131],{},"Many restaurants have no website, and no time or wish to build one just for the menu. And no customer sitting at a table wants to download an app to find out what to eat.",[12,1133,194],{"id":193},[17,1135,1136],{},"iizimenu, our own product: the restaurant fills in the menu online and shares it with a QR code or a link. Customers open it in their phone's browser, with no app and no login.",[25,1138,1139,1145,1151,1157,1162,1168,1174],{},[28,1140,1141,1144],{},[31,1142,1143],{},"Menu editor",": categories, dishes and prices, with drag-and-drop reordering and the option to switch off a sold-out dish without deleting it. Changes are online right away",[28,1146,1147,1150],{},[31,1148,1149],{},"Allergens for each dish",": picked from the 14 on the EU list and shown under the dish, in the customer's language",[28,1152,1153,1156],{},[31,1154,1155],{},"Six languages",": Italian, English, French, Spanish, German and Portuguese. The restaurant writes the translations in the editor and customers switch language with one tap",[28,1158,1159,1161],{},[31,1160,1072],{},": each menu has its own QR to download and print, which stays valid when the menu changes",[28,1163,1164,1167],{},[31,1165,1166],{},"Themes and logo",": nine themes, including one with a custom colour, and the restaurant's logo, with a preview while editing",[28,1169,1170,1173],{},[31,1171,1172],{},"Free and Pro plans with Stripe",": the free plan doesn't expire and needs no card. Pro is yearly and adds more restaurants and menus, the logo, every theme and every language. Activation, renewals, failed payments and cancellation run through Stripe webhooks",[28,1175,1176,1179],{},[31,1177,1178],{},"Accounts and data",": Firebase authentication and database, password reset emails with Resend, error monitoring with Sentry, and full deletion of an account and its data",[17,1181,1182,1183,1189],{},"We deliberately left out table ordering and dish photos: iizimenu does one thing, showing the right menu, always up to date. The ",[88,1184,1188],{"href":1185,"rel":1186},"https://www.iizimenu.com/menu/lKsg7ugcorP05sHahjV4uMt3be32/aZ22ekwkOQuJ9WV5W7Fk/NvfIN5XO5vb5aPCxSS0Z",[1187],"nofollow","sample menu"," shows what customers see: the restaurant and dishes are fictional.",[12,1191,236],{"id":235},[17,1193,1194],{},"iizimenu is live, with a free plan and a yearly Pro plan. The restaurant updates the menu once and every customer sees the correct version, with no copies to reprint for the tables.",{"title":123,"searchDepth":124,"depth":124,"links":1196},[1197,1198,1199],{"id":186,"depth":124,"text":187},{"id":193,"depth":124,"text":194},{"id":235,"depth":124,"text":236},{"name":1201,"alias":1202,"nda":256},"iizimenu","Restaurant SaaS, Italy",{"accent":383,"icon":1204},"material-symbols:restaurant-menu","A restaurant's menu online in minutes, with dishes, prices and allergens in several languages. Customers open it from a QR code, with no app to download.","Restaurants",{},8,"Live with a free plan: the restaurant changes a price once and the menu is up to date on every table, with no reprinting.","/work/iizimenu","Live · iizimenu.com",[],[1214,1217],{"src":1215,"alt":1216},"/img/work/iizimenu/01.webp","iizimenu landing page in Italian: the headline and a phone showing a sample trattoria menu",{"src":1218,"alt":1219},"/img/work/iizimenu/02.webp","The sample menu of a fictional trattoria on two phones, in Italian and English, with dishes, prices and allergens",{"title":1121,"description":1205},"iizimenu: QR code digital menu",[261,1223,1224],"Web app","Payments & subscriptions",[940,941,400,269,1115,1226,1030],"Sentry","work/iizimenu","https://www.iizimenu.com","7qUq9I4g3i3ZCRuDSUSi0o_XuL9ogCZeKAO8RQk1Eo8",1793383297067]