Abdallah Elraai

Case file Exhibit B·1

CV ↓

Exhibit B·1LightByte (opens LightByte in a new tab)

LightByte

An ambiguous brief and a date that did not move. The work was deciding what not to build.

Matter
LightByte (opens LightByte in a new tab) — Software consultancy · startup clients
Role
Full design lifecycle · freelance
Domain
Salon management SaaS
Term
Sep — Dec 2024
  • 0→1
  • Scoping
  • Stakeholder management
  • Solo delivery

A software consultancy brought me in to take a salon-management product from an idea to something a client could see and fund. Full lifecycle, on my own: discovery with non-technical stakeholders, information architecture, high-fidelity MVP, in under three months.

The hard part was never the screens. It was getting agreement, out loud and early, on what was not being built — and then holding that agreement when the list tried to grow back in week six.

We shipped Scheduling and Inventory. Everything else was named, written down, and explicitly deferred to a second release rather than quietly dropped, which is what made the deferral survive contact with the client.

Booking, inventory, payroll, CRM, marketing, reporting.Scheduling and inventory. Ship those.

A salon owner loses money two ways: an empty chair and a shelf they cannot count. Everything else was a second release, and saying so out loud in week one is what held the date.

Scope, week one 6 proposed · 2 shipped
  • Schedulingshipped
  • Inventoryshipped
  • Payrolldeferred — release 2
  • CRMdeferred — release 2
  • Marketingdeferred — release 2
  • Reportingdeferred — release 2

Deferred, in writing, in week one. An unwritten “not now” reads as “maybe”; a written one reads as a decision somebody already made.

Information architecture Two modules, and the list of what came later
  • Todaylanding surface
    • Chair occupancythe money question
    • Today's appointments
  • Schedulingshipped
    • Week calendarper chair
    • New booking3 fields
    • Client recordhistory, notes
    • Cancellationswith reason
  • Inventoryshipped
    • Stock on hand
    • Low-stock alertsthreshold per item
    • Usage per servicelinks to scheduling
  • Payrollrelease 2
  • CRMrelease 2
  • Marketingrelease 2
  • Reportingrelease 2

The struck branches are not a wishlist — they are release two, named and written down in week one. An unwritten “not now” reads as “maybe”, and that is how a date slips without anyone deciding to slip it.

Low-fidelity wireframes Scheduling and inventory, as drawn
Week
New booking
Inventory
  1. Chairs are columns, hours are rows. The gaps are the product — an empty cell is lost revenue.
  2. Three fields. Discovery kept adding a fourth; the fourth is what stops a booking being taken at the desk.
  3. Sorted by what runs out first, not alphabetically. The list answers a question instead of storing data.

A salon owner loses money two ways: an empty chair and a shelf they cannot count. Both screens answer one of those in the first glance, before any navigation.

User flow Taking a booking at the desk
yes no Walk-in / call Week view gaps first Open slot? Waitlist notify on cancel Client match or create Confirmed chair held

Written against the counter, not the screen: the receptionist is holding a phone and looking at a person. Every branch had to resolve in under four taps, which is what killed the fourth field.

  • <3 mo

    Ambiguous brief to shipped MVP, solo

On reflection — Writing the deferred list down was the whole trick. An unwritten "not now" reads as "maybe"; a written one reads as a decision somebody already made.

Diagrams on this page are redrawn abstractions of the real work, not client screens.