Human Beings
A fashion showroom running two brands under one roof, with no reliable answer to “what do we have, where is it, and what sold today?” We built the system that answers it — and Sanaa, an assistant you can hand a photo or simply talk to.
- Next.js App Router
- React Server Components
- Turbopack
- nginx
- Visual product search
- Speech input
01 — The Problem
The catalogue existed only in people’s heads
Human Beings runs two retail brands from one showroom. Nobody could say with confidence which product was where or how much of it was left, information moved between staff by conversation and got lost, working out what the business had actually earned was an exercise rather than a glance, and there was no single view of the business at all.
The default answer is an inventory system with a search box. That fixes the record and not the problem, because it assumes the person searching can name the thing they are looking for.
On a shop floor they usually cannot. A customer holds up a photo and asks whether you have something like it. Someone describes a colour and a buckle. And nobody stops mid-sale to walk four screens deep to log two pairs of shoes — which is precisely how stock counts drift out of true.
02 — The Approach
Fit the system to the shop floor, not the other way round
Every decision here comes back to one observation: the people using this are standing up, mid-conversation, with a customer waiting.
Two brands, one dashboard
Human Beings and Attitude switch from a single control in the header. Same login, same staff, same stock room — one system with a brand toggle rather than two systems to reconcile.
WhyTwo separate installs would have doubled the data entry and halved the visibility, and the owner’s real question is never about one brand — it is what the business as a whole did today.
Make the assistant a peer to the interface, not a bubble in the corner
Meet Sanaa sits in the primary navigation between Inventory and Sales, badged as AI. It is not a support widget bolted to a finished product; it is one of the ways you operate the system.
WhyA chat bubble in the corner reads as help for people who are lost. Putting Sanaa in the nav makes the claim we actually meant: for a lot of tasks, asking is the fastest route, not the fallback.
Take the first mile seriously
Bulk add sits next to Add Product on the dashboard, and the catalogue carries categories, segments and both grid and list views from the start.
WhyA retail system with an empty catalogue is worth nothing, and getting hundreds of products in is the point where this kind of project usually dies. If loading the catalogue is painful, the system never gets used — so bulk entry is not a convenience feature, it is the adoption path.
03 — Key Technical Challenges
Two problems worth solving properly
Finding a product when nobody can name it
Text search has a hidden prerequisite: you have to know what the thing is called. In a showroom, the most common question of the day defeats that entirely — a customer holds up a photo and asks whether you have something like this.
Until now the index for that question lived in the staff’s heads. It does not scale past what one person can remember, it is different for every member of staff, and it walks out of the building when they leave.
Sanaa takes a photo or a spoken description and returns the closest products in the catalogue. The + in the input bar attaches an image; holding the mic speaks a query. The photo is not a fallback for search — it is the query, which removes the vocabulary problem instead of working around it.
Alongside it, the same assistant answers the questions that would otherwise mean navigating: which products are out of stock, what is running low, what was added most recently.
“Do you have something like this?” becomes an answerable question — by any member of staff, including on their first day.
Letting people talk to the system the way they already talk
Recording a sale the conventional way means opening Sales, finding the product, setting a quantity and confirming — four deliberate steps for something that took two seconds on the floor.
So it does not happen in the moment. It happens later, from memory, or it does not happen at all. That gap is not a discipline problem; it is a design problem, and it is exactly where stock accuracy and revenue clarity go to die.
Sanaa accepts the sentence a person would have said anyway. The suggested prompts on her own screen make the point better than any explanation: alongside “Which products are out of stock?” and “Belts under 3000” sits “2 shoes bik gaye”.
That is not English, and it is not meant to be. It is how the sentence is actually said in that showroom, and the system records the sale from it — no form, no navigation, no translation into the software’s vocabulary before the software will listen.
The record gets made at the moment of the sale, because making it costs one sentence. Everything downstream — stock counts, sales history, the owner’s overview — is accurate for the same reason.
04 — What We Built
One place to see the business, and one way to talk to it
Business overview
- Dashboard across products, stock and sales
- Dual-brand switcher in the header
- Breakdown by category and segment
- Reports
Catalogue
- Inventory with categories and segments
- Add product, and bulk add for many at once
- Grid and list views, search, sharing
Sanaa
- Find products from a photo
- Hold the mic to ask out loud
- Natural-language stock questions
- Record a sale by saying it happened
Operations & platform
- Sales and vendor records
- Settings and account roles
- Next.js App Router, self-hosted behind nginx
05 — The Result
The showroom can now be asked questions
Both brands run from one dashboard. The catalogue is a system of record rather than a shared memory, stock and sales stay current because keeping them current no longer interrupts anyone, and the owner has the overview that did not previously exist.
The part we are proudest of is the least visible: Sanaa did not ask the showroom to learn new habits. Staff point a camera at a thing, or say what happened, and the system keeps up. Software that adapts to how people already work gets used — and a retail system that does not get used is just a database with a login.
This is a private system, so the link above opens a login and stops there. We are not quoting the showroom’s stock, sales, revenue or margin figures — those belong to the client, and every summary figure is obscured in the screenshot above for the same reason. The craft is the story here, not the numbers.
Want software your staff will actually use?
We build systems that fit how people already work — including the ones who are standing up, mid-conversation, with a customer waiting.
Start a conversation