Skip to content
← All work

Laundry Studio

A booking system for a laundry and dry cleaning studio in Gurgaon: customers book on the website or through a WhatsApp bot, follow their order, and staff run the day from one admin panel.

Role
Product design and full-stack build, end to end, AI-accelerated
Year
2026
Region
India
Built with
Next.js, React, TypeScript, Tailwind CSS, Supabase, WhatsApp Cloud API, Railway
Status
Built, pre-launch
The team's day in the admin panel, beside a customer's order on its way, on a phone

[01]

// BOOK ON WHATSAPP

Real screenshots

On
WhatsApp

The customer's side of the bot: my own test chats on a real phone, in the order the bot asks. Phone numbers, a typed address and a price are masked.

  1. WhatsApp, step 1: Any message gets the menu: book a pickup, track an order, prices, or talk to us

    01 Hi, then the menu

    Any message gets the menu: book a pickup, track an order, prices, or talk to us

  2. WhatsApp, step 2: Dry cleaning, laundry, steam ironing, or sofa, mattress and carpet

    02 Choose a service

    Dry cleaning, laundry, steam ironing, or sofa, mattress and carpet

  3. WhatsApp, step 3: More than one service per pickup: "Add a service" or "That's all"

    03 Add another, or that's all

    More than one service per pickup: "Add a service" or "That's all"

  4. WhatsApp, step 4: The pincode first, then the flat and building, then the street (or "skip"). The typed address is masked

    04 Pincode, then the address

    The pincode first, then the flat and building, then the street (or "skip"). The typed address is masked

  5. WhatsApp, step 5: The open slots for the chosen day. The address behind the list is masked

    05 Pick a time slot

    The open slots for the chosen day. The address behind the list is masked

  6. WhatsApp, step 6: The confirmation with its reference and a Track order button. The later price is masked

    06 Booked, with a tracking link

    The confirmation with its reference and a Track order button. The later price is masked

  7. WhatsApp, step 7: Collected and checked, ready with the delivery day, on its way, then complete with a link to rate. The price is masked

    07 Updates at each step

    Collected and checked, ready with the delivery day, on its way, then complete with a link to rate. The price is masked

[02]

// THE PROBLEM

Why it exists

The
Problem

Laundry Studio is a new dry cleaning, laundry, steam ironing and home-care studio in Gurgaon. It collects from the customer's door, counts every piece with them, and brings everything back on the day it promised.

Customers book in three ways: on the website, on WhatsApp or by phone. All three had to follow the same rules for areas, days and slots, land in one place, and let a small team run each order from pickup to delivery, from a phone.

[03]

// WHAT I BUILT

The rules

What I
Built

  1. 01

    One system, three ways to book

    Website, WhatsApp and phone bookings are all created by the same database function, with the same rules for service areas, slots and capacity. They land in one admin panel, each tagged with the channel it came from.

    Book

    • Website
    • WhatsApp bot
    • Phone, by staff

    Lands in

    • One database
    • One admin panel
  2. 02

    A WhatsApp bot that books

    It runs on Meta's WhatsApp Cloud API, called directly with no middleman. The bot asks for the service, the pincode and address, then a day and a slot, shows a summary and books on Confirm. Every option also works typed, including common Hindi and Hinglish phrasings.

    1. Service
    2. Pincode and address
    3. Day and slot
    4. Summary
    5. Confirm
  3. 03

    Booking on the website in three steps

    What, where and when, then your details. The pincode is checked first, and an area that isn't served yet can leave a number instead. A booking confirms at once when the slot has room; a full slot becomes a request for staff to confirm. Nothing is paid online.

  4. 04

    A person when it's needed

    Asking for a person, or three misunderstood replies in a row, hands the chat to staff. The bot goes quiet, the thread shows "Waiting for you" in the admin inbox, and "Hand back to bot" restarts it at the menu.

  5. 05

    An admin panel run from a phone

    Today's requests, pickups, home visits and deliveries, each with one next-step button, plus orders, the WhatsApp inbox, customers, leads, reports and settings. Before any step messages a customer, staff see the exact WhatsApp text and confirm it.

  6. 06

    A tracking page for every order

    Each order has a private link with its progress and times, the items and final price once counted, and buttons to message, call, change the day or cancel while that's still allowed. Status changes are also sent to the customer on WhatsApp.

[04]

// SCREENS

Gallery

Screens

For customers

Live site, nothing submitted

Home: collected at the door, priced before anyone leaves
How it works, with today's real times from booking to delivery
Booking on a phone: the pincode check first, then the address and slot, then the details
The same step on desktop, with the estimate beside it
Tracking right after booking: what happens next, and change or cancel while it's allowed
After delivery: a rating with a comment, editable for a week

For the team

Local build, made-up data

Every open order with its stage and one next-step button
Before a step messages the customer, staff see the exact WhatsApp text and confirm it
A customer's orders and addresses, staff notes, and a "delete personal data" action
Reports: bookings by channel, type and service
Home: collected at the door, priced before anyone leaves

[05]

UNDER THE HOOD

Request path

  1. BrowserNext.js 16 + React 19 + Tailwind 4, installable as an app
  2. RailwayOne Next.js server in Docker, with health checks, behind Cloudflare
  3. SupabasePostgres with row-level security, staff sign-in, private photo storage
  4. WhatsAppMeta's Cloud API, direct: the bot, the inbox and every status message
From the code and the live deployment (8 Nov 2026).

Decisions worth explaining

  • Rules in the database, not the browser

    Prices, statuses, order numbers and delivery dates are decided in the database, and slot capacity is checked inside a locked transaction, so two bookings can't take the last place in a slot.

  • A state machine, not an AI

    The bot is a fixed set of steps, not a language model, so every reply is predictable and each step has its own unit test.

  • Safe to receive twice

    Every WhatsApp message is checked against Meta's signature, stored, and claimed once, so a redelivered message never books twice. Failed sends are retried on a schedule, and none can go out twice.

  • A phone number isn't proof of identity

    The website never shows saved addresses or past orders for a typed number. Only WhatsApp, which verifies the phone, offers a returning customer their saved addresses.

[06]

// OUTCOMES

Confirmed only

Outcomes

3

Ways to book, one admin panel

4

Days from first commit to its own domain