[{"data":1,"prerenderedAt":1204},["ShallowReactive",2],{"guides-count":3,"service-services_en-ai-automation":4,"service-slugs-ai":150,"work-list-work_en-all-any-all":153},7,{"id":5,"title":6,"accent":7,"body":8,"description":108,"extension":109,"facts":110,"faq":123,"icon":136,"key":137,"meta":138,"navigation":139,"order":140,"path":141,"seo":142,"seoDescription":143,"seoTitle":144,"stem":145,"summary":146,"work":147,"__hash__":149},"services_en/services/ai-automation.md","AI and automation for businesses","pink",{"type":9,"value":10,"toc":99},"minimark",[11,16,20,24,59,63,71,74,82,86,89,92,96],[12,13,15],"h2",{"id":14},"what-can-ai-do-for-a-business","What can AI do for a business?",[17,18,19],"p",{},"There's a lot of talk about artificial intelligence, but for a business only one thing counts: saving time on a specific job without introducing errors. We build AI into your software where it brings a measurable benefit, and tell you honestly when a problem is better solved with traditional automation.",[12,21,23],{"id":22},"what-we-can-build","What we can build",[25,26,27,35,41,47,53],"ul",{},[28,29,30,34],"li",{},[31,32,33],"strong",{},"Assistants that answer from your content",": for customers, guests or staff, drawing on your website, documents, manuals and procedures, in the language of whoever is writing",[28,36,37,40],{},[31,38,39],{},"Smart document search",": finding a contract clause, the right procedure or an answer in an archive of PDFs by asking a question, not guessing keywords",[28,42,43,46],{},[31,44,45],{},"Data extraction from documents",": reading invoices, orders, forms or emails and turning them into structured data in your business system",[28,48,49,52],{},[31,50,51],{},"Automation of repetitive work",": sorting requests, drafting replies, classifying and routing documents, with a person checking where needed",[28,54,55,58],{},[31,56,57],{},"Integration with your systems",": the AI reads and writes where you already work, instead of living in another app",[12,60,62],{"id":61},"kweendee-our-ai-concierge","Kweendee: our AI concierge",[17,64,65,70],{},[66,67,69],"a",{"href":68},"/work/kweendee","Kweendee"," is our own product: an AI concierge for hotels and B&Bs that answers guests in over 50 languages, day and night, using only the property's own information.",[17,72,73],{},"The hotel keeps its information where it already is - website pages, Notion, Google Docs, PDFs and Word files - and Kweendee reads it, splits it into chunks and indexes it in a vector database on every sync. For each question it retrieves the relevant chunks and the model answers from those. Every conversation is logged, so staff see what guests ask and what's missing from the knowledge base.",[17,75,76,77,81],{},"It's the same architecture - called RAG, ",[78,79,80],"em",{},"retrieval-augmented generation"," - that we use for assistants and search over company documents, adapted to your content and your systems.",[12,83,85],{"id":84},"how-we-work","How we work",[17,87,88],{},"It starts with a free 30-minute call. Together we pick a concrete, measurable use case and turn it into a fixed-price pilot: real data, real users, a result you can evaluate. If it works, we extend it; if it doesn't deliver the expected benefit, you know before investing too much.",[17,90,91],{},"You always talk directly to the senior engineers building it.",[12,93,95],{"id":94},"technology","Technology",[17,97,98],{},"We work with the leading language models through their APIs, vector databases such as pgvector on Supabase, LangChain to orchestrate retrieval and generation, and background job queues to index content without slowing the application down. We choose models and providers case by case, based on answer quality, cost and data requirements.",{"title":100,"searchDepth":101,"depth":101,"links":102},"",2,[103,104,105,106,107],{"id":14,"depth":101,"text":15},{"id":22,"depth":101,"text":23},{"id":61,"depth":101,"text":62},{"id":84,"depth":101,"text":85},{"id":94,"depth":101,"text":95},"Assistants that answer from your own documents, smart search across company data and automation of repetitive work, built into the software you already use.","md",[111,114,117,120],{"label":112,"value":113},"Our AI product","Kweendee, an AI concierge for hotels",{"label":115,"value":116},"Approach","Answers grounded in your data (RAG)",{"label":118,"value":119},"Starting point","A focused pilot project",{"label":121,"value":122},"Price","Fixed, per milestone",[124,127,130,133],{"q":125,"a":126},"Can the AI give wrong answers?","Yes, and it's the first problem to design for. That's why the assistant answers only from your content, says when it doesn't know something instead of making it up, and conversations are logged, so you see what people ask and where information is missing. Where a mistake is costly, a person has the final say.",{"q":128,"a":129},"Where does our data go?","We choose model providers, configuration and where the data is hosted together, based on GDPR constraints and your company's policies. We use providers' APIs under business terms and the data stays in your systems.",{"q":131,"a":132},"Do we need to replace the software we use?","No. AI works best inside the tools your team already uses - your business system, website, shared documents - rather than in yet another app to open.",{"q":134,"a":135},"Where should we start?","With a specific, measurable problem - the same questions arriving every day, documents searched by hand, data copied over. A focused pilot shows within a few weeks whether AI really saves time, before you extend it.","material-symbols:neurology-outline","ai",{},true,3,"/services/ai-automation",{"title":6,"description":108},null,"Custom AI and automation for businesses","services/ai-automation","Practical AI in your software - assistants, document search and automation of repetitive work.",[148],"kweendee","btex8besNbdENnrpPsCqJ5c0xtqRMiYebvS8kGj02kE",{"en":151,"it":152},"ai-automation","intelligenza-artificiale-per-aziende",[154,250,380,473,557,690,790,921,1007,1093],{"id":155,"title":156,"body":157,"client":220,"cover":222,"description":226,"extension":109,"featured":139,"industry":227,"media":228,"meta":229,"navigation":139,"order":230,"outcome":231,"ownProduct":232,"path":233,"productStatus":143,"results":234,"screenshots":235,"seo":236,"seoDescription":143,"seoTitle":143,"services":237,"stack":241,"stem":247,"url":143,"year":248,"__hash__":249},"work_en/work/boat-ticketing.md","Online ticketing for a tourist boat operator",{"type":9,"value":158,"toc":215},[159,163,166,170,208,212],[12,160,162],{"id":161},"the-challenge","The challenge",[17,164,165],{},"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,167,169],{"id":168},"what-we-built","What we built",[25,171,172,178,184,190,196,202],{},[28,173,174,177],{},[31,175,176],{},"Online purchase in 4 languages"," with Stripe checkout, separate Stripe accounts per line, and a PDF ticket with barcode sent by email",[28,179,180,183],{},[31,181,182],{},"Network configuration"," in the back-office: lines, stops, routes and fares, timetable templates and rules that generate the daily sailings automatically",[28,185,186,189],{},[31,187,188],{},"Operations tools",": stop closures by date, an orders calendar with capacity and allotments, boarding manifests",[28,191,192,195],{},[31,193,194],{},"Cancellations and refunds"," with reasons, emails and SMS translated into each customer's language and sent in the background",[28,197,198,201],{},[31,199,200],{},"GetYourGuide integration"," over API: availability, reservations, bookings and cancellations sync with the platform",[28,203,204,207],{},[31,205,206],{},"Roles and permissions",", order reports and PDF exports for the office team",[12,209,211],{"id":210},"outcome","Outcome",[17,213,214],{},"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":100,"searchDepth":101,"depth":101,"links":216},[217,218,219],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169},{"id":210,"depth":101,"text":211},{"alias":221,"nda":139},"Tourist boat operator, Italy",{"accent":223,"icon":224,"scene":225},"lav","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,"/work/boat-ticketing",[],[],{"title":156,"description":226},[238,239,240],"Full-stack product","Platform & API","Back-office",[242,243,244,245,246],".NET 8","Blazor WebAssembly","ASP.NET Core","SQL Server","Stripe","work/boat-ticketing",2026,"08s_N41gb3l9P-S970D3TkVBilh5iKITlkb-VH4qLkM",{"id":251,"title":252,"body":253,"client":356,"cover":358,"description":362,"extension":109,"featured":232,"industry":227,"media":228,"meta":363,"navigation":139,"order":364,"outcome":365,"ownProduct":232,"path":366,"productStatus":143,"results":367,"screenshots":368,"seo":369,"seoDescription":143,"seoTitle":370,"services":371,"stack":373,"stem":377,"url":143,"year":378,"__hash__":379},"work_en/work/ferry-audio-guide.md","Ticketing, staff apps and a geolocated audio guide for a ferry operator",{"type":9,"value":254,"toc":346},[255,257,260,262,265,270,273,305,309,316,320,323,327,341,343],[12,256,162],{"id":161},[17,258,259],{},"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,261,169],{"id":168},[17,263,264],{},"Since 2023 we have designed and maintained the whole ecosystem: apps, web and back-office, all on the same platform.",[266,267,269],"h3",{"id":268},"geolocated-audio-guide","Geolocated audio guide",[17,271,272],{},"The heart of the passenger app (iOS and Android, built in Flutter).",[25,274,275,282,289,295,302],{},[28,276,277,278,281],{},"Every stop of the guide is a point on the map with its own ",[31,279,280],{},"trigger radius",": when the boat enters the area, the matching track starts",[28,283,284,285,288],{},"A live ",[31,286,287],{},"map with all points of interest"," and the passenger's position, plus a list of tracks grouped by line",[28,290,291,294],{},[31,292,293],{},"Offline download"," of tracks, so the guide keeps working at sea without coverage",[28,296,297,298,301],{},"Audio and text guide in ",[31,299,300],{},"5 languages"," (Italian, English, French, German, Spanish)",[28,303,304],{},"Tracks managed from the back-office: position, radius, playback order and translations for each line, without publishing a new app",[266,306,308],{"id":307},"passenger-app","Passenger app",[17,310,311,312,315],{},"Besides the guide: timetable search, ticket activation with QR code, and ",[31,313,314],{},"push notifications"," for timetable changes and cancellations.",[266,317,319],{"id":318},"online-shop-and-back-office","Online shop and back-office",[17,321,322],{},"Ticket sales with online payment and PDF tickets, plus a back-office to manage lines, timetables, closures, orders, translations and audio guide content.",[266,324,326],{"id":325},"staff-apps","Staff apps",[25,328,329,335],{},[28,330,331,334],{},[31,332,333],{},"Ticket validation",": an app that scans QR codes at boarding",[28,336,337,340],{},[31,338,339],{},"Sales and printing",": tickets sold on the dock with Bluetooth thermal printing, B2B orders, takings and expenses, synced with the central platform",[12,342,211],{"id":210},[17,344,345],{},"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":100,"searchDepth":101,"depth":101,"links":347},[348,349,355],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169,"children":350},[351,352,353,354],{"id":268,"depth":140,"text":269},{"id":307,"depth":140,"text":308},{"id":318,"depth":140,"text":319},{"id":325,"depth":140,"text":326},{"id":210,"depth":101,"text":211},{"alias":357,"nda":139},"Passenger ferry company, Italy",{"accent":359,"icon":360,"scene":361},"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":252,"description":362},"Ferry ticketing & GPS audio guide app",[372,239,240],"Mobile apps",[374,375,243,244,245,376],"Flutter",".NET","Firebase","work/ferry-audio-guide",2023,"pwX9t3YFVoeF64V3Mw0Ns0p8BnrR2IYyp5T-dJMzumE",{"id":381,"title":382,"body":383,"client":451,"cover":452,"description":456,"extension":109,"featured":232,"industry":227,"media":228,"meta":457,"navigation":139,"order":101,"outcome":458,"ownProduct":232,"path":459,"productStatus":143,"results":460,"screenshots":461,"seo":462,"seoDescription":143,"seoTitle":463,"services":464,"stack":465,"stem":470,"url":143,"year":471,"__hash__":472},"work_en/work/ferry-pos-printer.md","Point-of-sale app with thermal printing for ferry ticket desks",{"type":9,"value":384,"toc":446},[385,387,390,392,403,441,443],[12,386,162],{"id":161},[17,388,389],{},"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,391,169],{"id":168},[17,393,394,395,398,399,402],{},"An Android and iOS app that turns a phone or tablet paired with a ",[31,396,397],{},"Bluetooth thermal printer"," into a full ticket desk. It is part of the ",[66,400,401],{"href":366},"ferry ecosystem"," we built for the same operator.",[25,404,405,411,417,423,429,435],{},[28,406,407,410],{},[31,408,409],{},"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,412,413,416],{},[31,414,415],{},"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,418,419,422],{},[31,420,421],{},"B2B and groups",": tickets for agencies, drivers and guides, plus retrieval of tour-operator group bookings to print their tickets on boarding",[28,424,425,428],{},[31,426,427],{},"Audio guide codes"," printed on the ticket, to unlock the guide in the passenger app",[28,430,431,434],{},[31,432,433],{},"Cash management",": takings and expenses, end-of-day closing, reports per desk and reprint of lost tickets",[28,436,437,440],{},[31,438,439],{},"Control",": each device registered as a cash desk, admin area, print logs and automatic printer reconnection",[12,442,211],{"id":210},[17,444,445],{},"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":100,"searchDepth":101,"depth":101,"links":447},[448,449,450],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169},{"id":210,"depth":101,"text":211},{"alias":357,"nda":139},{"accent":453,"icon":454,"scene":455},"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.","/work/ferry-pos-printer",[],[],{"title":382,"description":456},"Ferry ticket POS app with thermal printing",[372,239],[374,466,467,468,469],"Dart","SQLite","BLoC","Bluetooth printing","work/ferry-pos-printer",2024,"UENP5hlR5x7OL3BaYqSpf0dQ0NY_a_sOpj-Vt_YXvcU",{"id":474,"title":475,"body":476,"client":536,"cover":538,"description":541,"extension":109,"featured":232,"industry":542,"media":228,"meta":543,"navigation":139,"order":140,"outcome":544,"ownProduct":232,"path":545,"productStatus":143,"results":546,"screenshots":547,"seo":548,"seoDescription":143,"seoTitle":143,"services":549,"stack":551,"stem":554,"url":143,"year":555,"__hash__":556},"work_en/work/coworking-access-app.md","Smart access app for a coworking space",{"type":9,"value":477,"toc":531},[478,480,483,485,488,526,528],[12,479,162],{"id":161},[17,481,482],{},"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,484,169],{"id":168},[17,486,487],{},"An iOS and Android app, built in Flutter, that works as the member's digital pass.",[25,489,490,496,502,508,514,520],{},[28,491,492,495],{},[31,493,494],{},"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,497,498,501],{},[31,499,500],{},"One-tap Wi-Fi access",": the app authenticates the member on the space's network, with no shared passwords",[28,503,504,507],{},[31,505,506],{},"Second device",": members can connect a laptop or tablet by scanning a QR code from the app, and disconnect it when they want",[28,509,510,513],{},[31,511,512],{},"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,515,516,519],{},[31,517,518],{},"Membership status"," driving the experience: active, expired (with renewal screen), pending activation or new terms to accept",[28,521,522,525],{},[31,523,524],{},"Bookings and news"," from the space, privacy and terms consent management, profile and account deletion",[12,527,211],{"id":210},[17,529,530],{},"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":100,"searchDepth":101,"depth":101,"links":532},[533,534,535],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169},{"id":210,"depth":101,"text":211},{"alias":537,"nda":139},"Coworking space, Italy",{"accent":7,"icon":539,"scene":540},"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":475,"description":541},[550],"Mobile app",[374,466,552,553],"REST API","Firebase Crashlytics","work/coworking-access-app",2021,"WVaHGTCY1oRa01qezgheFIT6juxRCmTY0UHpgf-9_rs",{"id":558,"title":559,"body":560,"client":669,"cover":671,"description":674,"extension":109,"featured":139,"industry":675,"media":228,"meta":676,"navigation":139,"order":677,"outcome":678,"ownProduct":232,"path":679,"productStatus":143,"results":680,"screenshots":681,"seo":682,"seoDescription":143,"seoTitle":683,"services":684,"stack":685,"stem":688,"url":143,"year":378,"__hash__":689},"work_en/work/event-bus-travel.md","Passenger and crew app for bus trips to concerts and events",{"type":9,"value":561,"toc":661},[562,564,567,569,572,576,614,618,656,658],[12,563,162],{"id":161},[17,565,566],{},"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,568,169],{"id":168},[17,570,571],{},"A single iOS and Android app, built in Flutter, with two modes: one for passengers and one for the crew.",[266,573,575],{"id":574},"for-passengers","For passengers",[25,577,578,584,590,596,602,608],{},[28,579,580,583],{},[31,581,582],{},"Events, artists and stops",": find the trip for your concert and the nearest departure point",[28,585,586,589],{},[31,587,588],{},"QR ticket"," always at hand for boarding",[28,591,592,595],{},[31,593,594],{},"Live bus position"," on the map, with expected arrival at your stop",[28,597,598,601],{},[31,599,600],{},"Parking info at the venue",": where the coach waits after the show, with position and photo",[28,603,604,607],{},[31,605,606],{},"Loyalty points and partner discounts",", redeemable from the app",[28,609,610,613],{},[31,611,612],{},"Push notifications"," from the crew, OTP login and account management",[266,615,617],{"id":616},"for-the-on-board-escorts","For the on-board escorts",[25,619,620,626,632,638,644,650],{},[28,621,622,625],{},[31,623,624],{},"Stop-by-stop trip"," for outbound and return, with the list of passengers expected at each stop",[28,627,628,631],{},[31,629,630],{},"QR boarding",": scan the ticket and the passenger is marked as on board, with live counts of boarded and missing passengers",[28,633,634,637],{},[31,635,636],{},"Background GPS tracking"," that shares the bus position with passengers, plus a \"break\" mode for rest stops",[28,639,640,643],{},[31,641,642],{},"Coach parking"," at the venue saved with position and photo, and one tap to start the navigator",[28,645,646,649],{},[31,647,648],{},"Messages to passengers"," from ready-made templates, sent as push notifications",[28,651,652,655],{},[31,653,654],{},"Offline route download"," and an end-of-trip report",[12,657,211],{"id":210},[17,659,660],{},"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":100,"searchDepth":101,"depth":101,"links":662},[663,664,668],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169,"children":665},[666,667],{"id":574,"depth":140,"text":575},{"id":616,"depth":140,"text":617},{"id":210,"depth":101,"text":211},{"alias":670,"nda":139},"Bus travel operator for concerts and events, Italy",{"accent":359,"icon":672,"scene":673},"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":559,"description":674},"Event bus travel app: live tracking, QR boarding",[550],[374,466,467,686,687],"Firebase Cloud Messaging","OpenStreetMap","work/event-bus-travel","xwAyZukd0IMAwrLWOeTCoYyWM3AToJrYTfUsD7WUryg",{"id":691,"title":692,"body":693,"client":770,"cover":772,"description":775,"extension":109,"featured":139,"industry":776,"media":228,"meta":777,"navigation":139,"order":778,"outcome":779,"ownProduct":232,"path":780,"productStatus":143,"results":781,"screenshots":782,"seo":783,"seoDescription":143,"seoTitle":784,"services":785,"stack":786,"stem":788,"url":143,"year":248,"__hash__":789},"work_en/work/cycling-routes-app.md","Cycling routes app with 3D maps and audio points of interest",{"type":9,"value":694,"toc":765},[695,697,700,702,705,760,762],[12,696,162],{"id":161},[17,698,699],{},"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,701,169],{"id":168},[17,703,704],{},"An iOS and Android app built in Flutter, designed from scratch with a BLoC architecture.",[25,706,707,713,722,732,738,747,753],{},[28,708,709,712],{},[31,710,711],{},"Route catalogue"," with photo, distance, duration, difficulty, climbing and descent, plus difficulty filters and search by province",[28,714,715,718,719],{},[31,716,717],{},"Route detail"," with description and ",[31,720,721],{},"elevation profile",[28,723,724,727,728,731],{},[31,725,726],{},"2D and 3D maps"," on Mapbox with custom styles, and a ",[31,729,730],{},"3D flyover"," that circles the route before you set off",[28,733,734,737],{},[31,735,736],{},"Audio points of interest",": tap a point on the map and listen to its story",[28,739,740,743,744],{},[31,741,742],{},"Ride mode",": the map follows your GPS position along the track, and every ride ends up in your ",[31,745,746],{},"route history",[28,748,749,752],{},[31,750,751],{},"Accounts"," with email confirmation, activation code, password recovery and account deletion",[28,754,755,756,759],{},"Consent and location permission management, ",[31,757,758],{},"4 languages"," (Italian, English, French, Spanish) and a dark theme built for outdoor use",[12,761,211],{"id":210},[17,763,764],{},"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":100,"searchDepth":101,"depth":101,"links":766},[767,768,769],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169},{"id":210,"depth":101,"text":211},{"alias":771,"nda":139},"Cycle tourism company, Italy",{"accent":453,"icon":773,"scene":774},"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":692,"description":775},"Cycling routes app with 3D maps & audio guide",[550],[374,466,468,787,552],"Mapbox","work/cycling-routes-app","AXdNYvueu1cSKLm6PZ2QMgCyLQedtUUd_0p_9vl7OM0",{"id":791,"title":792,"body":793,"client":898,"cover":900,"description":903,"extension":109,"featured":232,"industry":904,"media":228,"meta":905,"navigation":139,"order":906,"outcome":907,"ownProduct":232,"path":908,"productStatus":143,"results":909,"screenshots":910,"seo":911,"seoDescription":912,"seoTitle":913,"services":914,"stack":915,"stem":918,"url":143,"year":919,"__hash__":920},"work_en/work/local-delivery-platform.md","Local delivery platform, with an admin dashboard and a driver app",{"type":9,"value":794,"toc":893},[795,797,800,803,805,808,813,827,832,852,857,888,890],[12,796,162],{"id":161},[17,798,799],{},"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,801,802],{},"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,804,169],{"id":168},[17,806,807],{},"Three connected parts: the integration with the client's platform, a dashboard for the admins and an app for the drivers.",[17,809,810],{},[31,811,812],{},"Integration and automations",[25,814,815,821],{},[28,816,817,820],{},[31,818,819],{},"Orders arrive on their own",": we connect to the client's service, and orders to deliver enter the system with no re-keying",[28,822,823,826],{},[31,824,825],{},"Customer notifications",": automatic messages at every change in the delivery status",[17,828,829],{},[31,830,831],{},"Admin dashboard",[25,833,834,840,846],{},[28,835,836,839],{},[31,837,838],{},"Assign orders to drivers",", and reassign them when needed",[28,841,842,845],{},[31,843,844],{},"Live driver positions"," on the map, together with the status of each delivery",[28,847,848,851],{},[31,849,850],{},"History and reports"," of deliveries by day and by driver",[17,853,854],{},[31,855,856],{},"Driver app (iOS and Android, built with Flutter)",[25,858,859,865,870,876,882],{},[28,860,861,864],{},[31,862,863],{},"List of assigned orders",", with addresses and delivery details",[28,866,867,869],{},[31,868,612],{}," when a new order comes in",[28,871,872,875],{},[31,873,874],{},"One-tap navigation"," to the address",[28,877,878,881],{},[31,879,880],{},"Delivery status"," updated by the driver and seen at once in the dashboard",[28,883,884,887],{},[31,885,886],{},"Proof of delivery"," with a photo or signature",[12,889,211],{"id":210},[17,891,892],{},"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":100,"searchDepth":101,"depth":101,"links":894},[895,896,897],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169},{"id":210,"depth":101,"text":211},{"alias":899,"nda":139},"E-commerce with local delivery, Italy",{"accent":223,"icon":901,"scene":902},"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":792,"description":903},"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",[372,239,240],[374,466,916,917,552],"Nuxt","Vue","work/local-delivery-platform",2025,"jCDpZ_PXqVi-zXpQjOvwzVhHmr6ZrYZML9ivl3gg6z0",{"id":922,"title":923,"body":924,"client":978,"cover":980,"description":982,"extension":109,"featured":232,"industry":983,"media":984,"meta":985,"navigation":139,"order":986,"outcome":987,"ownProduct":139,"path":68,"productStatus":988,"results":989,"screenshots":990,"seo":994,"seoDescription":143,"seoTitle":143,"services":995,"stack":997,"stem":1005,"url":143,"year":248,"__hash__":1006},"work_en/work/kweendee.md","Kweendee - an AI concierge for hotels and B&Bs",{"type":9,"value":925,"toc":973},[926,928,931,933,936,968,970],[12,927,162],{"id":161},[17,929,930],{},"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,932,169],{"id":168},[17,934,935],{},"Kweendee, our own product: an AI concierge that answers guests using only the property's own information.",[25,937,938,944,950,956,962],{},[28,939,940,943],{},[31,941,942],{},"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,945,946,949],{},[31,947,948],{},"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,951,952,955],{},[31,953,954],{},"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,957,958,961],{},[31,959,960],{},"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,963,964,967],{},[31,965,966],{},"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,969,211],{"id":210},[17,971,972],{},"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":100,"searchDepth":101,"depth":101,"links":974},[975,976,977],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169},{"id":210,"depth":101,"text":211},{"name":69,"alias":979,"nda":232},"Hospitality SaaS, Italy",{"accent":453,"icon":981},"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.","Waitlist open",[],[991],{"src":992,"alt":993},"/img/work/kweendee/01.webp","Kweendee landing page: the hero and a guest chat with the concierge at 2 am",{"title":923,"description":982},[238,996,239],"AI & RAG",[916,917,998,999,1000,1001,1002,1003,1004],"Supabase","pgvector","LangChain","OpenAI","Notion API","Inngest","Tailwind CSS","work/kweendee","zy_6vy-aXXxZ61Hf9D0_nT7L-3YIQRPKhcDSFBPG2oA",{"id":1008,"title":1009,"body":1010,"client":1070,"cover":1072,"description":1074,"extension":109,"featured":232,"industry":983,"media":984,"meta":1075,"navigation":139,"order":3,"outcome":1076,"ownProduct":139,"path":1077,"productStatus":1078,"results":1079,"screenshots":1080,"seo":1084,"seoDescription":143,"seoTitle":143,"services":1085,"stack":1086,"stem":1090,"url":1091,"year":248,"__hash__":1092},"work_en/work/iiziguest.md","iiziguest - the digital guest guide for B&Bs",{"type":9,"value":1011,"toc":1065},[1012,1014,1017,1019,1022,1060,1062],[12,1013,162],{"id":161},[17,1015,1016],{},"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,1018,169],{"id":168},[17,1020,1021],{},"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,1023,1024,1030,1036,1042,1048,1054],{},[28,1025,1026,1029],{},[31,1027,1028],{},"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,1031,1032,1035],{},[31,1033,1034],{},"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,1037,1038,1041],{},[31,1039,1040],{},"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,1043,1044,1047],{},[31,1045,1046],{},"QR code and link",": a printable QR for the room and a short link for the booking message",[28,1049,1050,1053],{},[31,1051,1052],{},"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,1055,1056,1059],{},[31,1057,1058],{},"Accounts and back-office",": Firebase authentication and storage, branded emails for password resets, and a superadmin area to manage the shared place templates",[12,1061,211],{"id":210},[17,1063,1064],{},"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":100,"searchDepth":101,"depth":101,"links":1066},[1067,1068,1069],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169},{"id":210,"depth":101,"text":211},{"name":1071,"alias":979,"nda":232},"iiziguest",{"accent":7,"icon":1073},"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",[],[1081],{"src":1082,"alt":1083},"/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":1009,"description":1074},[238,239,240],[916,917,376,246,1087,1088,1089,1004],"Google Maps & Places API","Google Translate API","Resend","work/iiziguest","https://www.iiziguest.com","xulNtlZ6j8iAWZyd3Lnvj_uaEpEHNA6ocvl5qqhZWzA",{"id":1094,"title":1095,"body":1096,"client":1174,"cover":1177,"description":1179,"extension":109,"featured":232,"industry":1180,"media":984,"meta":1181,"navigation":139,"order":1182,"outcome":1183,"ownProduct":139,"path":1184,"productStatus":1185,"results":1186,"screenshots":1187,"seo":1194,"seoDescription":143,"seoTitle":1195,"services":1196,"stack":1199,"stem":1201,"url":1202,"year":248,"__hash__":1203},"work_en/work/iizimenu.md","iizimenu - the QR code digital menu for restaurants",{"type":9,"value":1097,"toc":1169},[1098,1100,1103,1106,1108,1111,1154,1164,1166],[12,1099,162],{"id":161},[17,1101,1102],{},"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,1104,1105],{},"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,1107,169],{"id":168},[17,1109,1110],{},"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,1112,1113,1119,1125,1131,1136,1142,1148],{},[28,1114,1115,1118],{},[31,1116,1117],{},"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,1120,1121,1124],{},[31,1122,1123],{},"Allergens for each dish",": picked from the 14 on the EU list and shown under the dish, in the customer's language",[28,1126,1127,1130],{},[31,1128,1129],{},"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,1132,1133,1135],{},[31,1134,1046],{},": each menu has its own QR to download and print, which stays valid when the menu changes",[28,1137,1138,1141],{},[31,1139,1140],{},"Themes and logo",": nine themes, including one with a custom colour, and the restaurant's logo, with a preview while editing",[28,1143,1144,1147],{},[31,1145,1146],{},"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,1149,1150,1153],{},[31,1151,1152],{},"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,1155,1156,1157,1163],{},"We deliberately left out table ordering and dish photos: iizimenu does one thing, showing the right menu, always up to date. The ",[66,1158,1162],{"href":1159,"rel":1160},"https://www.iizimenu.com/menu/lKsg7ugcorP05sHahjV4uMt3be32/aZ22ekwkOQuJ9WV5W7Fk/NvfIN5XO5vb5aPCxSS0Z",[1161],"nofollow","sample menu"," shows what customers see: the restaurant and dishes are fictional.",[12,1165,211],{"id":210},[17,1167,1168],{},"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":100,"searchDepth":101,"depth":101,"links":1170},[1171,1172,1173],{"id":161,"depth":101,"text":162},{"id":168,"depth":101,"text":169},{"id":210,"depth":101,"text":211},{"name":1175,"alias":1176,"nda":232},"iizimenu","Restaurant SaaS, Italy",{"accent":359,"icon":1178},"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",[],[1188,1191],{"src":1189,"alt":1190},"/img/work/iizimenu/01.webp","iizimenu landing page in Italian: the headline and a phone showing a sample trattoria menu",{"src":1192,"alt":1193},"/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":1095,"description":1179},"iizimenu: QR code digital menu",[238,1197,1198],"Web app","Payments & subscriptions",[916,917,376,246,1089,1200,1004],"Sentry","work/iizimenu","https://www.iizimenu.com","7qUq9I4g3i3ZCRuDSUSi0o_XuL9ogCZeKAO8RQk1Eo8",1793383297079]