The WhatsApp bot that sends car photos to a Dubai sales team
For months I was a human photo index. A salesman would text asking for a car's shots, and I'd stop everything to go dig. So I built a bot to be the index instead.
The message would come in around 11am, then again at 1, then four more times before close. "Bro send me the photos of the white GT, the low km one." "You have pics of the black Urus?" "Customer waiting, need the Wraith shots now." All day, every day, from the sales floor to me.
I'm the guy who shot the cars, so I'm the guy who has the photos. That made me, without anyone deciding it on purpose, the photo index for the whole showroom. A salesman would be standing in front of a customer, need the images of a specific car, and the fastest path to those images was to text me and wait. So I'd stop whatever I was editing, figure out which car they actually meant, find the chassis number, dig the folder out of storage, and forward twenty shots one at a time.
It doesn't sound like much. Two minutes, maybe. But do it thirty times a day and it's an hour of your life gone, chopped into pieces small enough that you can't do anything else with them. And every interruption landed while I was mid-edit on something that actually needed my head. The context-switch tax was worse than the task.
The obvious fix and the wrong fix
The obvious fix is a shared drive. "Just put everything in a folder and give the sales team access." We tried versions of that. It never holds. Salesmen are selling, not filing. Nobody wants to scroll a drive with 400 folders named by chassis number while a customer is looking at their phone. The interface for finding a car was a human, because a human could take "the white GT, low km one" and turn it into the right car. A folder can't do that.
So the real problem wasn't storage. It was translation. Someone needed to hear a loose, human description and match it to an exact car in inventory. That someone was me. And that, it turns out, is a thing you can hand to software, as long as you're careful about which part goes to the AI and which part doesn't.
What I built
The bot lives on a WhatsApp number. The sales team already texts that number all day, so there's nothing new to learn, no app to install, no login. You message it the way you'd message me: "white GT, low km," "the base Cayenne we got last week," "black on black Urus." It reads that, works out which car you mean, and sends back the photos of that car. That's the whole product. It does one thing and it does it without me in the loop.
The important part is what happens between reading the message and sending the photos, because that's where these things usually go wrong.
Where the AI is allowed to think, and where it isn't
Here's the rule I built the whole thing around: let the AI understand the request, but never let it decide the facts.
Understanding the request is the fuzzy, human part. "The low km one," "the white GT," "black on black" - a person means something specific by those, and a language model is genuinely good at reading that intent. So the AI's job is to take the mess of a real WhatsApp message and pull out what the person is actually after: make, model, colour, a rough sense of mileage, maybe year.
But then it stops. The AI does not get to look at its training data and "remember" which cars we have. It doesn't get to invent a chassis number or guess that we probably have a white GT in stock. That would be a disaster - the day it confidently sends a customer photos of a car we sold last month, the bot has cost us more than it ever saved.
The actual matching happens in plain code, against the live inventory, deterministically. The system pulls the current list of cars - what's really on the floor right now - and filters it: this make, this model, this colour, sorted by mileage. If one car matches, it sends those photos. If three match, it asks a quick clarifying question instead of guessing. If nothing matches, it says so honestly rather than making something up. Every photo that goes out is tied to a real chassis number in the real inventory. The AI never touches that step.
What it actually changed
The first thing that changed is that I stopped being the photo index. That role just quietly disappeared. The sales team gets their shots in a few seconds instead of waiting on me to surface from an edit, and I get to keep my attention on the work that needs it.
The second thing is subtler and I didn't expect it. Because the bot only ever answers from live inventory, the answers got more correct than mine were. I'd occasionally send photos of a car that had just sold, because I didn't have the floor in my head in real time. The bot always does. It can't send you a car that isn't there.
And the sales floor moves faster. When a customer asks "do you have it in white," the answer and the proof land on their phone before the conversation cools off. That's the actual point of any of this - not that I saved an hour, but that the showroom got quicker at the exact moment quickness matters.
Why WhatsApp, and why this matters for any Dubai business
If you run a business in the UAE, your customers and your team are already on WhatsApp. Not email, not a portal you paid for, not an app you're hoping people download. WhatsApp. It's where deals get discussed, where the deposit gets confirmed, where the whole thing actually happens. So that's where automation earns its keep, because you're not dragging anyone to a new place - you're just making the place they already live a little smarter.
The photo bot is one shape of it, specific to a showroom. But the pattern travels. A restaurant taking bookings. A clinic answering the same five questions forty times a day. A shop sending its catalogue to whoever asks. A service business capturing a lead's details at 11pm so nobody has to be awake for it. All of that is the same move: take the repetitive thing a human is currently doing over WhatsApp, and let software do the boring 80% so the human handles the 20% that needs a human.
The trap, every time, is trying to automate the 20% too - the judgement, the negotiation, the facts you can't afford to get wrong. Don't. Draw the line clearly. Let the bot read intent, book the slot, answer the FAQ, send the file, and hand off to a person the second it hits something real. That's the difference between automation that quietly helps and automation that quietly embarrasses you. I built mine to know exactly where it isn't allowed to think, and that's the reason I trust it on a number the whole sales team uses.