All work Case Study · Retail & AI

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.

2Brands, one dashboard
PhotoA first-class way to search
VoiceHold to speak, in Hinglish
Server‑firstNext.js, self-hosted
  • 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

What the business was missing

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.

Why the obvious build would not have fixed it

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

01

Finding a product when nobody can name it

Problem

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.

Solution

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.

Outcome

“Do you have something like this?” becomes an answerable question — by any member of staff, including on their first day.

02

Letting people talk to the system the way they already talk

Problem

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.

Solution

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.

Outcome

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.

The Meet Sanaa screen: a heading ‘Meet Sanaa’ over the line ‘Ask me anything about your products, or tell me what sold’, a set of suggested prompts including ‘Show me all shoes’, ‘Products in blue color’, ‘Which products are out of stock?’ and ‘2 shoes bik gaye’, and an input bar reading ‘Ask Sanaa… tap + for a photo, hold mic to speak’.
Sanaa’s own suggested prompts. The input bar offers a photo and a microphone before it offers a keyboard — and one of the examples is in Hinglish, because that is the language the sale actually happens in.

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
The Human Beings retail dashboard: a dark sidebar listing Dashboard, Inventory, Meet Sanaa, Sales, Vendors, Reports and Settings; a brand switcher toggling between Human Beings and Attitude; four summary cards for total products, units sold, revenue and profit margin, each with its figure obscured; and category and segment filters beneath.
The dashboard, with the brand switcher at the top. Every summary figure is obscured — those are the client’s numbers, not ours to publish.

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