← All work
ManzilMANZIL
UEM Edgenta · Jeddah

Three apps that had to agree with each other

From request to repair, all in one click.

Manzil is an on-demand home services platform: AC repair, cleaning, plumbing, laundry, pest control. What makes it hard is not the booking. It is that a customer, a technician and a coordinator all have to be looking at the same job at the same time, from three different apps, and none of them can afford to be wrong about it.

My role
Product DesignerEnd to end, all three products
Team
1 front end, 2 back endI was the only designer
Client
UEM EdgentaFacility management, Saudi Arabia
Products
3 in one systemCustomer app, worker app, admin console
Tools
Figma, FigJamJira, Google Forms, Hotjar
Manzil admin console, customer app and service detail
IThe knot

Everybody in this market is already frustrated

Booking a technician in Jeddah worked roughly the way it worked twenty years ago: you asked a neighbour, you called a number, and then you waited without knowing whether anyone was coming. Three groups were losing something in that gap, and each of them blamed one of the others.

The customer

Cannot find anyone reliable

"I need an AC repaired today. I do not know who is good, what it should cost, or when they will actually turn up."

So they call three numbers, take the first person who answers, and have no recourse when the work is poor.

The worker

Cannot rely on the work

"Some weeks I have six jobs, some weeks I have none. I never know what I am earning this month."

So skilled technicians leave for salaried work, and the supply side keeps thinning out.

The coordinator

Cannot see anything

"I am assigning jobs over WhatsApp and tracking them in a spreadsheet. I find out about problems from the customer."

So dispatch is guesswork, double bookings happen, and nobody can prove what went wrong.

Written as one sentence, the brief was this: managing on-demand services like AC repair and cleaning is challenging because there is no centralised place where all three parties see the same truth. Users cannot locate reliable workers, workers face inconsistent job offers, coordinators struggle with assignment and monitoring, and without a shared platform the miscommunication compounds into frustration for everyone.

That framing is what made this a three-product brief rather than a booking app with an admin panel bolted on. If any one of the three surfaces is weak, the other two stop being trustworthy.

Customer app, discovery and booking
The two screens the whole platform hangs off
IIGetting oriented

Learn the market before drawing anything

Six weeks of groundwork before a single high fidelity screen. Research across all three personas, journey maps, information architecture, wireframes, prototypes, then usability testing to check the assumptions had survived contact.

FigmaFigJamJira Google FormsHotjar
The three audiences
Interview participants across all three personas

What the competition taught us

I audited TaskRabbit, Dari and Urban Company against Meem Facility Management on market share, value proposition, advantages and disadvantages. All four converge on the same table stakes: service requesting, professional vetting, payment integration, customer support, ratings and reviews. Building those well is entry, not advantage.

The separation was in focus. TaskRabbit spreads across everything from furniture assembly to event staffing. Dari narrows hard onto regional Saudi needs like beauty and cleaning. Urban Company sits between them with a structured, predefined catalogue aimed at urban centres. The gap Manzil could occupy was regional specificity plus enterprise-grade coordination, which is exactly what a facility management company already has and a consumer marketplace does not.

Competitive analysis matrix
Competitive analysis, four players across four dimensions
IIIChoosing

The hard part was deciding what not to build

Three products, one designer, three developers. Everything could not ship, so the feature list went onto an urgency and impact matrix and the argument happened there instead of in a meeting.

Urgent · Impactful

Ship first

  • Real time availability
  • Pricing standardisation
  • Payment gateway integration
  • Calendar and scheduling management
  • Scope of work module for workers
  • Easy rescheduling
  • Real time tracking
  • In-app communication with the technician
  • Post-service feedback
  • Automated reminders
  • Multilingual interface
Non-urgent · Impactful

Next

  • Advanced filters
  • Booking history
  • Provider profiles
  • Loyalty programme
  • Referral rewards
  • Localised promotions
  • Live chatbot
  • Service bundles
  • Corporate accounts
Urgent · Non-impactful

Cheap and necessary

  • Social login options
  • Service categories and standardisation
  • Admin billing and accounts reporting
Non-urgent · Non-impactful

Deliberately later

  • Admin dashboards and reporting
  • Usage insights

The interesting call is the bottom right. Admin dashboards and usage insights are the things a client normally asks for first, and they went last, because a dashboard reporting on a system nobody trusts yet is a report about nothing. Availability, pricing and tracking had to be real before measuring them meant anything.

Priority matrix quadrants
The matrix as argued with the client

Where the journey actually breaks

The journey map runs four stages: awareness, activation, service request, service execution. Mapped against narrative, touch points, emotional state, pain points and opportunities, the emotional low is not the booking. It is the wait between booking and arrival, where the customer has committed money and has no information. Every feature in the top-right quadrant above exists to fill that specific gap.

User journey map
User journey map, four stages by five dimensions. Scroll sideways.
IVBuilding three

One system, three front doors

Same data, same job, three entirely different jobs to be done. Pick a product to see what it had to solve.

Designed for someone who does not know what to search for

A customer arrives with a broken thing, not a service category. So the home screen leads with reorder services, because the second booking is the one that builds the business, then popular services with prices visible on the card. Search accepts plain language: home cleaning, laundry, pest control.

Booking is a three-step bar the whole way through: service, available slot, payment. The step indicator never disappears, so the effort always feels bounded.

01
Price before commitmentEvery service card carries a "from SAR" figure, so nobody enters a flow to discover the cost.
02
Slot picking, not calendar configuringDates as a horizontal strip, times as tappable chips. No date pickers.
03
Reference images on the requestA photo of the actual broken unit prevents the wrong technician being dispatched.
04
Arabic and English from the startMultilingual was in the first shipping quadrant, not a later localisation ticket.
Customer app screens
Customer app, discovery through to payment

Designed for someone holding a phone in one hand and a tool in the other

The worker app exists to answer three questions fast: what is the job, where is it, and what am I earning. The scope of work module was the single most requested change from the technician side, because arriving at a job without knowing what was actually agreed is how a service call turns into an argument.

Compensation is explicit rather than implied: base pay, incentives tied to jobs completed and feedback, and cash-on-delivery tracked separately so the worker is never carrying an unreconciled balance.

01
Scope of work, written before arrivalWhat was ordered, what is included, estimated duration. No surprises on site.
02
Calendar and availability the worker controlsCustom slots by job duration, so a technician is never double booked by dispatch.
03
Reschedule and reassign in-appTraffic and overruns are normal. Handling them should not require a phone call.
04
Earnings visible continuouslyBase, incentives and cash collected, so the month is predictable.
Worker facing screens
Job detail and scheduling, the screens a technician lives in

Designed for the person who is accountable when it goes wrong

The console is where the spreadsheet died. Assignment management shows every pending job with worker, supervisor, delivery method, time and a status that carries a word rather than just a colour: assigned delivery, assigned worker, pending assignment, partially assigned, rejected. In a dispatch tool, ambiguous status is the actual failure mode.

Worker management splits internal staff from external service providers, since they have different onboarding, different pay structures and different levels of trust, and the coordinator needs to know which one is turning up.

01
Status as a word, not a colourFive explicit states, so nothing is inferred from a dot.
02
Internal workers and service providers, separatedDifferent rules, different tabs, same table structure.
03
Inventory tied to assignmentParts and returns tracked against the job, because a job without parts is not really assigned.
04
CSV in and outAn enterprise client will always need the data somewhere else. Fighting that wastes everyone's time.
Admin console
Assignment management and worker management

Wiring the three together

The flow diagrams are the part of this project I would show first in an interview. Three trees, one per role, drawn so that every branch on the admin side has a matching branch on the worker or client side. If a coordinator can change a scope of work, the worker tree needs a node where that change arrives. Drawing it this way is how you find the missing states before engineering does.

Admin and worker flows
Admin and worker management flows
Client flow
Client flow, signup through recurring subscription
VThe system

Two colours, one typeface, ninety icons

A deliberately small system, because one designer supporting three products across two languages cannot maintain a large one.

Primary#1D223D
Secondary#5371FF
ProgressStep indicators
AssignedPositive state
RejectedNegative state
SurfaceCards, sheets
Heading 1Inter Bold / 24 / 36
Heading 2Inter Bold / 20 / 28
Body largeInter Medium / 18 / 24
Body regularInter Regular / 16 / 24
Body smallInter Regular / 14 / 22
CaptionInter Regular / 12 / 16

The icon set is drawn in two weights, outline and bold, so the same symbol can carry both inactive and active state without a second asset. On a platform with a dense service catalogue and a dark navy chrome, that one decision removed a large category of visual inconsistency.

Navy carries structure, periwinkle carries action, amber carries progress, and green and red are reserved strictly for job state. Nothing decorative uses any of them.

Iconography, outline and bold
Icon set, outline and bold weights
Typography and palette
Typography and palette as handed to engineering
VIWhat it added up to

From three disconnected groups to one job everybody can see

3 → 1
Separate products serving one shared job record
3 taps
Service, slot, payment. The whole booking
2 languages
Arabic and English designed in parallel, not translated
1 designer
Three products, three developers, one system

The thing I am most satisfied with here is not a screen. It is that a coordinator can now answer a customer's question without phoning the technician, because all three surfaces are reading the same job. That was the entire point, and it is the sort of outcome that is invisible in a portfolio shot.

01

Design the weakest role first

I started with the customer app because it is the visible one. The coordinator console is what actually decides whether the platform works, and it should have been drawn first.

02

Arabic first, not Arabic also

Designing bilingual in parallel was the right call, but I still laid out in English and checked in Arabic. Reversing that order would have caught several layout problems earlier.

03

The gap is the product

The journey map said the emotional low was the wait between booking and arrival. Everything valuable I designed lives in that gap, and I found it in research rather than in a screen.

04

Status needs words

Five explicit states beat any colour system in a dispatch tool. This is now the first thing I check in any operational interface.

More case studies

Pick where to go next