LiveUpholstery cleaning

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).

At a glance

Senior Design Engineer
My role
Oct 2026
Timeline
Solo, from design to deploy
Team
pages
21
components
42
database tables
12
API routes
10
LIMPO.AI on desktop and mobile

The challenge

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.

The LIMPO.AI website opening with the stained cushion
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
The LIMPO.AI photo quote section
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
The LIMPO.AI quote calculator with the order receipt and the “Veja o preço” button
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
The LIMPO.AI booking form with the free days
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.

Weekly calendar in the LIMPO.AI admin panel, with slots per period and blocked days

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
Customer list in the LIMPO.AI admin panel, with filters, tags and total spent

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
Price table in the LIMPO.AI admin panel, with item, service, price and time

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
Coupons in the LIMPO.AI admin panel, with discount, uses and minimum order

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
The LIMPO.AI weekly calendar on a phone, day by day

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.

Design in Figma

From design system to prototype

LIMPO.AI in Figma
Prototype flow in Figma: choosing the photo, the AI analyzing it, the order put together and the booking, connected by interaction arrowsOpen the prototype

Technology

The tech stack

Next.js

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.

Palette · click to copy

Headings

Mancha sai.

Space Grotesk

Headings and highlight numbers.

Accents

Ácaro sai.

Instrument Serif

Italic words inside headings.

Body

Higienização no seu endereço

Manrope

Body text and forms.

Labels

PRÓXIMA VAGA: AMANHÃ

JetBrains Mono

Tags, counters and the quote receipt.

Next step

Want to sell while the customer is still on your site?

We build websites that put the order together and show availability on the spot, with an admin panel for your team to manage orders.