LIMPO.AI – AI quotes from a photo and a calendar with real availability
Website and booking system for an upholstery cleaning business: AI builds the order from a photo right on the customer's phone, the price is agreed on WhatsApp and the calendar only offers slots that are actually free.
Project built for LIMPO.AI's Águas Claras location (Federal District, Brazil).
Upholstery cleaning is usually sold over WhatsApp, with a lot of back-and-forth to send photos, explain what needs cleaning and find a time. The challenge was to shorten that path, with the order arriving ready in the chat and real availability right on the website, and to give the location a management system with no fixed costs, since it was just starting out.
The solution
We built a website where customers handle everything in a few steps: they take a photo and the AI builds the order, they adjust the items if needed and pick a free time slot. The order arrives ready on the owner's WhatsApp, and the price is agreed in the chat. Behind it, an admin panel with calendar, customers, pricing, promotions and marketing runs only on services with free plans.
What was delivered
From the first click to the booked appointment
Four steps of the website, as they are live.
01
A cushion to clean
Right at the top, visitors move the mouse (or a finger) over a stained cushion and watch the dirt disappear while a counter goes from 0% to 100% clean.
Shows the result of the service before any text
Location and next free slot right at the top of the page
02
Photo quotes, with on-device AI
The customer sends a photo and the AI recognizes a sofa, armchair, chair or bed and builds the order. The analysis runs in the browser itself: the photo only leaves the device when the customer taps “Veja o preço” (“See the price”), and then it goes to the team along with the message.
MediaPipe with the EfficientDet-Lite0 model, in a Web Worker
The customer corrects the items if the AI gets them wrong
Rugs, cars and stains go to the team for assessment
03
Order built, price on WhatsApp
The customer builds the order item by item and sees the on-site time and the drying time. The price comes from LIMPO.AI itself, on WhatsApp, with the order already written in the message.
Price table set up in the admin panel and hidden on the site, ready to come back if the location wants it
Items, times and payment methods defined in the admin panel
Order ready to book or send on WhatsApp
04
A calendar with real availability
Only free slots appear, Monday to Saturday, morning and afternoon. When the form is sent, the slot is checked again and the order arrives ready on the owner's WhatsApp.
Postal code lookup for the service area and a fee by neighborhood
Coupon, referral code and pet plan right in the form
Team admin panel
Admin panel built for LIMPO.AI
What appears on the website is edited in the admin panel and updates instantly, with no redeploy. Each person only sees the areas their access level allows.
The needThe team works with limited morning and afternoon slots and stops on days off and holidays.
What was builtA weekly calendar with free slots per period, blocking a whole day or one period with a reason, and service reminders with the WhatsApp message ready to send.
Fictitious data
The needKnowing who came back, who disappeared and who referred someone, without a spreadsheet.
What was builtA CRM built from the bookings: filters for returning customers, customers with no order in 6 months and pet owners, plus tags, notes and total spent per customer.
Fictitious data
The needPrices are agreed on WhatsApp, but the team needs a reference for each piece.
What was builtA table of items with price and time that never shows on the website: it is the team's reference and becomes the estimate in the calendar. A disabled item leaves the website without losing its price.
Fictitious data
The needCampaigns and coupons change every month.
What was builtPercentage or fixed-amount coupons with dates, usage limit, minimum order and services, live on the website instantly. Referrals and the pet plan sit on the same screen.
Fictitious data
On the phone
The needThe calendar is checked on the go, between one job and the next.
What was builtThe same calendar on the phone, day by day, with each period's bookings and the blocked times.
Fictitious data
From first order to loyal customer, in one place
Overview
Orders, revenue earned, average ticket, customer sources and the schedule for the next 7 days.
Calendar
List or weekly view, with confirm, complete and cancel, the amount charged and blocked days.
Customers
A CRM built from bookings, with history, tags, referrals and ready-made WhatsApp messages.
Pricing and promotions
The quote calculator table, installments, coupons, referrals and a pet plan, all editable.
Marketing
Orders by channel and campaign, a UTM link builder, and GA4, Google Ads and Meta Pixel IDs.
Access
Administrator and Agent levels, lockout after wrong passwords, email recovery and a change history.
Version 16. Website, admin panel and API routes in the same app, with a daily reminder job.
React
Version 19. Interactive components: the cushion, the quote calculator, the photo quote and the calendar.
TypeScript
Pricing, scheduling and permission rules typed and validated with zod.
Tailwind CSS
Tokens for the brand and the website's visual language.
MediaPipe
Object detection in the browser, in a Web Worker, with no AI server.
GSAP
Page animations and smooth scrolling with Lenis.
Prisma
Bookings, customers, settings and history in Neon's serverless Postgres.
Vercel
Deployed in São Paulo, with a daily Cron job for service follow-up reminders.
Engineering
Technical highlights
01
Serverless AI at no cost
The roughly 7.8 MB model is only downloaded when the section comes into view and runs in a Web Worker: the page never freezes and there is no AI API bill.
02
Guaranteed slots, no double booking
Each booking checks the slot in a serializable database transaction, so two customers never get the same time.
03
Where every order comes from
UTM, gclid and fbclid are kept for 30 days and travel with the booking. The admin panel groups orders by channel and campaign.
04
Privacy and LGPD (data protection)
GA4, Google Ads and Meta Pixel only load after cookie consent, and a customer's data can be deleted from the admin panel.
Visual identity
The brand on the site
Colors and fonts checked on the live site, not just in the code.