iOS · Android · Web · Beauty

How we built MetiLook: beauty booking where the artist owns their brand

MetiLook was our own bet on an industry nobody had modelled properly: a booking system for beauty, built around one observation others had missed - that what decides a client's satisfaction is a specific artist, not the salon. In existing systems that artist is anonymous; in ours they have their own profile, portfolio and brand, which they build regardless of where they happen to work. We took it from concept to release ourselves, including the part that simply cannot be wrong: a schedule with no risk of double-booking, working even when the salon's internet goes down. The same approach carries into what we build for clients.

Platforms
iOS, Android, Web
For
Salons, artists, clients
Schedule
Works offline too
Contact
Built-in chat
MetiLook booking calendar with a team schedule
MetiLook: the client knows who they are going to, and the salon sees its schedule - even when the internet goes down.
Problem
In beauty a client trusts a specific person, yet booking systems hide the artist behind the salon - and a schedule that double-books or dies offline breaks the business.
What we built
A booking system where the artist owns their brand, on a schedule that cannot double-book and keeps working when the internet drops.
Outcome
One product on iOS, Android and web - availability computed across shared resources, offline mode, built-in chat, loyalty and reports, with Google, Apple and Facebook sign-in.

What this case study covers

  1. The product we set out to build
  2. An artist with their own brand
  3. Realigning the market's incentives
  4. Understanding what clients miss
  5. How we approached the build
  6. A schedule that cannot book twice
  7. Conflicts: artists, resources, time
  8. A schedule that works when the internet does not
  9. Booking online around the clock
  10. Direct contact: client, artist, salon
  11. Reminders and fewer no-shows
  12. Loyalty and returns
  13. One product: app and web
  14. What this build shows about how we work
  15. What we would tell another team
  16. Frequently asked questions

The product we set out to build

In beauty, a client does not go to a building. They go to a specific person. They trust a particular hairdresser, beautician or artist - because it is their hands and their skill that decide whether the client walks out happy. And yet existing booking systems model the market the other way round: they show the salon and hide the person who actually does the work. The client books "a slot at salon X", not a visit to someone they trust.

It is a poor approach that has settled in as the norm. In these systems the artist is anonymous - a resource of the salon, an interchangeable slot in a schedule. All the value their talent creates is credited to whatever sign they happen to work under. For the client that means uncertainty: they cannot always be sure they will end up with the person who gave them a great cut last time. For the artist it means that years of building their craft build nothing that belongs to them.

Our product turns that relationship around. In MetiLook the artist is at the center: they have their own profile, portfolio and brand, which they build independently of where they work. When booking a visit, the client knows exactly who they are going to. The salon still matters - it provides the place, the team and the umbrella brand - but it stops being the only visible side of the transaction.

In beauty a client does not go to a building - they go to a specific person. We built a system that finally reflects that.

It is worth noting that this is not a new idea - it is a return to how beauty always worked. Before apps, a client did not recommend "the salon on the corner" to a friend, but a specific person: "go to Ania, she is brilliant with color." Reputation always belonged to the person, passed on by word of mouth. It was digital booking systems, designed around the salon as a billing unit, that lost that obvious truth. So MetiLook does not reinvent the market - it gives back what technology took away along the way.

From here: how that observation became a product. A model in which the artist's brand is portable, resting on the two things that had to be absolutely reliable underneath - a schedule that never books twice, and one that survives the salon's connection dropping.

An artist with their own brand

The heart of the idea is the artist's profile. It is not a business card stapled to the salon's page, but a full identity: a portfolio of work done, specialties, reviews, history. The artist shows what they can do and builds a reputation that belongs to them - not to the address where their chair happens to stand.

The key is that this brand is portable. When a salon hires an artist, it takes them on together with their profile. From then on the artist works for their own brand and the salon's brand at once, but keeps building the first. If they ever move, their portfolio, reviews and client relationships go with them - because it is their body of work, not the employer's property.

When an artist moves salon, that continuity is priceless for the client. Instead of losing touch with a person they have gone to for years, they can still find them and book at the new place. For the artist it is security, for the client it is convenience, and for the market it is a signal that value follows the person, as it should.

For the client it changes the very nature of booking. Instead of choosing a service and a time detached from any person, they choose a person: they see their work, know what to expect, and book knowingly. Trust, which in beauty is the currency, finally has somewhere to live - with a specific artist, exactly where it always really was.

The consequences reach further than they first appear. Reviews stop being reviews of a salon, where a great artist drags up a mediocre colleague and a mediocre one drags down a great one. Each review goes where it should - to the person who did the work. A portfolio shows the real work of specific hands, not a retouched brand gallery. For the client that is a far more honest signal of quality than stars pinned to an address.

Realigning the market's incentives

Behind this product decision sits something bigger than a nicer profile: a change in who is incentivized to do what. In the old model the salon anonymizes talent, so a great artist and a mediocre one look the same to the client - and the value the better one creates goes to the sign. That is a bad incentive: it does not reward quality where quality is made.

In the MetiLook model, because clients follow specific artists, the salon gains a real interest in hiring and keeping highly skilled people. Talent becomes an asset salons compete for, rather than a cost to be hidden. It is an arrangement in which everyone wins: the artist builds a career and a brand, the salon attracts clients through the quality of its team, and the client gets the person they deliberately chose.

We set ourselves the goal of shifting the market exactly in that direction. The product is not a neutral tool here - it is designed to reward craft and make it visible. It is a rare case where a technical decision and a decision about how a whole industry should work are the same thing.

This starts a loop that pushes the whole market in a good direction. An artist whose brand is visible is motivated to grow and look after clients, because the benefit comes back to them. A salon that attracts such artists attracts their clients too, so it pays to create good conditions and keep talent. The client gets better service, returns, and recommends onward - a specific person. Each of these moves reinforces the next, and the product is designed so that this loop keeps turning rather than breaking on anonymity.

Over the longer term it also changes what competition between salons looks like. It stops being only about location and price, and starts being about who a salon can attract and keep. A salon that can offer a good artist visibility, conditions and clients wins - and that is competition the end client benefits from, because it pushes the whole market toward higher quality.

Understanding what clients miss

Before we built anything, the key was understanding what clients genuinely lack in existing booking systems. It is easy to assume it is only about "a free slot". In reality the needs run deeper, and it was those needs that set the shape of the product.

A client wants to know who they are going to, and to be sure the chosen person is genuinely available at a given time. They want to book when they think of it - often in the evening, outside the salon's hours - and not only when someone picks up the phone. They want confirmation that the booking is certain, a reminder so they do not forget it, and easy contact if something has to change. All of this sounds obvious, and yet most systems deliver one or two of these things and leave the rest to the phone and to chance.

One of the things we heard most clearly is the anxiety about whether a booking is even certain. In many systems - and especially when booking by phone or message - the client has no hard confirmation, only a promise that someone will write them into a book. That uncertainty costs: the client calls again to make sure, or avoids booking ahead at all. A certain, instant confirmation turned out to be one of the more important things that was missing.

The second is flexibility when plans change. Life changes, visits have to be moved - and a system whose only route is a phone call during working hours turns a small change into a hassle for both sides. Being able to reschedule or cancel a visit yourself, in a way that immediately frees the slot for someone else, is a convenience for the client and real value for the salon, because a slot freed in time has a chance to fill up again.

The third is transparency: how much it costs and exactly what it includes. A client who knows before the visit which service and price they are booking arrives calmer, and the salon avoids misunderstandings at payment. It seems a small thing, and it builds the trust that lets a client book online without worry.

How we approached the build

Three sides had to be understood before a single line of code made sense - the client, the artist and the salon - because a product like this is worthless if it works for only two of them. Only with a clear picture of their needs did we take on the two things that decided whether it could be relied on at all.

The first is the correctness of the schedule: a system that allows a double booking is a disaster in this industry, because it ends with a real person standing in the doorway whom nobody is free to serve. The second is resilience: a salon is a physical business that works all day, so the schedule has to work even when the internet or the infrastructure fails. We settled these two requirements first, and built the convenience, the profiles and the rest around a core that can be trusted.

That order let us settle what actually sets this product apart before anything else: the direct relationship between a client and a specific artist, and a schedule that computes availability across shared resources - stations, equipment, buffers and varying service durations. Everything else, including the obvious absence of double bookings, was built around those two.

Below, the same sequence the build took: the market observation, then the hard core of the schedule and its resilience, then the things that make daily use pleasant rather than merely possible.

A schedule that cannot book twice

The same slot with the same artist can be taken only once - including when bookings arrive simultaneously from the client app, from reception and from the artist's profile. That is a baseline requirement of any booking system, so we settled it at the write layer and moved on.

Checking a slot and taking it are inseparable, so when requests arrive in the same second from the client app, reception and the artist's profile, exactly one gets through and the rest are told immediately that the slot is gone. The interesting part starts a level above this - with availability computed across shared resources.

Conflicts: artists, resources, time

A double booking with one artist is only the start. A real salon schedule is a web of dependencies: a visit may require not only a specific person but also a station, a room or equipment, and those can be shared. A slot that is free for the artist but taken for the only free station is not free at all.

On top of that come working hours, breaks, different service durations and buffers between visits. The schedule has to respect all of it at once, so that it never offers a slot that cannot actually be served. Building the logic that watches all these constraints simultaneously - and can still quickly tell a client what is genuinely available - was one of the harder parts of the project.

Added to this is dynamics: availability is not fixed but recomputed on every change. Booking a single visit can take not just one slot off the market but the neighboring ones too - because the service takes longer, because a buffer is needed, because a shared station is now occupied. The schedule has to recompute all this on the fly, so that the picture of availability the next client sees is always current, not from before the last booking.

The result is that what a client sees as a free slot is free in every dimension that matters. This quiet work underneath is what makes online booking make sense at all: without it, self-service would turn into a source of conflicts that someone at the salon would have to fix by hand.

A schedule that works when the internet does not

A salon is a physical business that works all day - and it cannot stop because the technology failed. If the salon loses its internet or its infrastructure, work has to carry on: reception still needs to know who is coming today, to whom, and at what time. A booking system that shows an empty screen at such a moment is worse than a paper calendar.

So we made the schedule work in offline mode too. The salon still sees its working day and can operate even without a connection, and changes sync once the network returns. It is a deliberate resilience decision that most booking systems skip - because they only work well when everything else works. We assumed the opposite: that failures happen, and the product should be useful precisely on the worse day.

Building this well is harder than simply reading data from a server. The schedule has to be available locally, stay consistent, and after the connection returns reconcile what happened offline with what changed elsewhere in the meantime - without losing and without duplicating visits. It is exactly the kind of invisible, appreciated-only-in-a-crisis engineering that separates a tool a salon trusts from one that leaves it helpless at the worst moment.

In practice, offline mode means very concrete things for reception: it sees the full day's schedule, knows who is coming and when and to whom, can check a visit off or add a walk-in client. That is the minimum that lets a salon work normally despite an outage - and when the connection returns, everything that happened in the meantime comes back into the shared picture without manual retyping.

It is worth stressing that offline does not mean read-only. Reception has to be able not only to see the schedule but to change it without a connection - add a visit, move it, check it off. That is much harder than showing a previously saved list, because each such change is a potential conflict to resolve once the connection is back. Making an offline write as reliable as an online one is what this piece of the build really came down to.

We wanted offline not to be a second-class emergency mode where half of it does not work. A salon on a bad day has no time to wonder what else has stopped working - it simply needs to know who is coming today, and to be able to add someone who walked in off the street. Making that basic operation reliable without a network, and everything return to consistency once it is back, was a deliberate goal, not a side effect.

Booking online around the clock

Since a client most often thinks about a visit in the evening, after work, the product has to let them book at any time - not only during opening hours and not only by phone. Round-the-clock online booking removes that limit: the client chooses an artist and a time when they are ready, not when someone has a moment to pick up.

It is also a real benefit for the artist and the salon. A phone ringing mid-treatment is either an interrupted treatment or a lost booking - because a client who cannot get through often simply goes elsewhere. Self-service moves booking to where it does not clash with the work, and makes sure no booking is lost just because there was no one to answer.

The condition for this to work is all the earlier work on the schedule. Self-service only makes sense if what the client books is genuinely available - otherwise every convenience turns into a conflict to clean up. Only a correct, constraint-aware calendar makes booking without reception safe for all sides.

Before a client books anything, though, they have to find the right person - and that too is part of the product. Since the starting point is the artist, not the salon, the client can choose by what really matters: a specific person's style of work, specialty, reviews. Discovering an artist and booking are two sides of the same idea: first the client knows who they want to go to, and then they book a free, genuinely available slot of that person's.

We wanted the booking flow itself to be short. The more steps between wanting to book and having a confirmation, the more people drop off along the way - especially as many bookings are made in the evening, in a hurry, from a phone. Choosing the person, the service and the time, and then a clear confirmation, should be so simple that nothing stands between the wish and the booked visit.

Direct contact: client, artist, salon

We built chat into the product so that the client has smooth contact with the artist and the salon. A question before a visit, sorting out a detail, a small change of time - all of it happens in one place, without bouncing off a busy phone line and without shuffling the conversation between channels.

The chat is not an add-on here but an extension of the main idea. Since the client-artist relationship is the heart of the product, it is natural that the conversation should also live close to that relationship, not off to the side. A direct channel strengthens the bond MetiLook wants to build: the client knows who they are writing to, and the artist talks to the person they will serve shortly.

For the salon it is also less chaos. Contact that used to scatter between the phone, social media and notes at reception lands in one, orderly place, tied to a specific visit. It is a small thing that removes a lot of friction from the daily work.

A built-in channel is also a responsibility, though. A conversation tied to a visit should stay professional and orderly, so we designed contact to be convenient but anchored in the context of a specific booking, rather than turning into yet another unbounded messenger. The point was to make exactly the conversation that concerns the visit easier, and not to create new problems along the way.

Reminders and fewer no-shows

In a business billed by time, a no-show is pure loss: an hour that cannot be recovered or sold again. That is why reminders of an upcoming visit are not cosmetic, but an element that directly protects the revenue of the salon and the artist. A client reminded in time is far less likely to simply forget.

Tying reminders to the specific person the client is going to works even more strongly than an impersonal message. A visit to someone chosen and trusted is a different kind of commitment than an anonymous "slot at a salon" - and a product that makes that relationship visible also, in passing, reduces the number of empty gaps in the schedule.

A whole path of changes hangs off reminders: confirm, reschedule, cancel. Designing it well means each of these actions updates the schedule immediately - a canceled visit frees the slot at once, a rescheduled one leaves no duplicate. That way a reminder is not just a notification, but the start of an orderly process that keeps the calendar honest.

A slot freed in time is also an opportunity to use. When someone cancels ahead, a free gap appears that can be filled - and a product that surfaces that gap at once and lets someone else take it turns a potential loss into another booking. It closes the loop: reminders cut no-shows, and easy cancellations and freed slots recover revenue that would otherwise be lost. For a salon billed by time, every such recovered hour is real money, not a statistic.

Loyalty and returns

MetiLook also covers loyalty programs and reports, because the product is meant not only to take bookings but to help the salon and the artist grow. Rewarding returning clients is natural in this industry - and when loyalty is tied to a specific artist, it reinforces exactly the relationship the whole idea rests on.

Reports, in turn, turn daily work into knowledge: who returns, which services are popular, how the schedule fills up. For the salon that is the basis of decisions about the team and the offer; for the artist, a picture of their own, growing practice. It is another way the product moves the weight from guesswork onto data.

Importantly, both loyalty and reports look at the artist, not only the salon. A client returning to a specific person is the most valuable kind of return, and data that shows it helps the salon value and keep the talent it cares about. It is the same logic again: the product consistently strengthens the client-artist relationship, because that relationship is its foundation.

It is worth stressing that loyalty in this model builds on two levels at once: to the artist and to the salon. The client returns above all to a person, but does so within the salon that employs them - so both sides benefit from the same return. A well-designed program rewards that loyalty without pitting artist and salon against each other, showing instead that they gain together from a satisfied, returning client. It is that balance that makes the artist-owns-their-brand model an opportunity for the salon, not a threat.

One product: app and web

MetiLook runs on iOS, Android and in the browser, built from one shared base so that each side gets what it needs on whichever device it uses. The client most often books from a phone; the salon and the artist manage the schedule where it suits them - on a bigger screen at reception, or in the app between visits. Sign-in with Google, Apple or Facebook removes the friction of the first step, so that creating an account is not a barrier.

Building this from one foundation, rather than as separate apps, lets a small team keep a coherent product across all platforms and add new things once instead of three times. We use the same approach for clients: mobile and web together, without a triple budget, while keeping what should look and feel native on each platform.

It is worth adding that this is not one interface for everyone, but three different roles in one product. The client needs simple discovery and booking; the artist a view of their day and their brand; the salon management of the team, the schedule and its resources. Reconciling these three perspectives into a shared, coherent whole, without building three separate apps, is part of what makes the product harder than it looks.

Social sign-in is also a deliberate removal of friction. In a two-sided product, every extra step in creating an account is a share of the clients, artists or salons who drop off before they even start. The fewer obstacles between the first open and the first booking, the greater the chance the product enters daily use at all.

What this build shows about how we work

Plenty of people can make another booking calendar. Far fewer will guarantee that one slot cannot be taken twice when half the town books in the same second, or keep a salon working through an evening with no connection. Those two guarantees are the whole difference between software a business trusts and software it keeps a paper backup for.

Most of the design work here was arbitration. The client wants certainty, the artist wants a brand of their own, the salon wants control of its diary - and almost every scheduling decision hands one of them something at another's expense. Only once those trade-offs were settled did the rest get built. Testing was run by someone who had not written the scheduler, because a booking system breaks where concurrency, clocks and real people collide.

The project also shows well that the hardest engineering is often completely invisible. The client sees a nice profile and a convenient booking; they do not see the race for the same slot resolved in a fraction of a second, or the schedule that survived an evening without internet. And it is precisely those invisible things that decide whether a product can be trusted enough to run a real business on.

On top of that the product is two-sided, which raises the bar in itself. It has to convince artists and salons that it is worth using, and give clients a reason to book through it - and those three groups have different, sometimes conflicting needs. Building something that works for all of them at once takes product decisions as considered as the technical ones, and is one of the reasons a product like this is harder than it looks from outside.

Strip the beauty industry out of this and what remains is transferable: a market with two sides that want different things, a shared schedule that cannot ever be wrong, and a business that has to keep running when the network does not. Swap salons for clinics, studios or workshops and almost none of the engineering changes.

What we would tell another team

Connecting two sides of a market around a shared schedule - booking, appointments, rostering? Five points we settle with a client before any code is written.

Any one of these, discovered in week six rather than week one, is a rewrite rather than a fix. Concurrency and offline behaviour especially cannot be added to a schedule that was not designed for them: they decide the data model, and the data model decides everything built on top of it.

Frequently asked questions

Is MetiLook your own product, or did you build it for a client?

It is our own. We came up with it, designed it, built it and shipped it ourselves. We show it because it is proof of what we deliver, and we build for clients the same way.

Could you build a product that connects service providers and clients?

Yes. MetiLook connects salons, artists and clients around booking, and the same approach - two sides of a market and a shared schedule - works for many service products. We start by understanding what each side is really missing.

Can you build a schedule that computes availability across shared resources?

Yes. In MetiLook availability is computed not only per person but across stations, equipment, buffers between visits and varying service durations. A free slot means free in every one of those dimensions at once, and each booking recomputes them.

Can the product work offline and stay resilient to outages?

Yes. The schedule keeps working even when the salon loses its internet: the salon still sees its working day and can operate, and data syncs once the connection returns.

Can you add chat between the product's users?

Yes. MetiLook has built-in chat that gives the client smooth contact with the artist and the salon. We can bring the same interaction to other products.

Do we own the code and the accounts?

Yes. You own the code, the repositories and the accounts. We can hand everything over to your in-house team whenever you need it, with no lock-in.

Have a product that connects people and simply has to work?

We build products where different sides of a market meet - from the model and the schedule to resilience against outages and everyday convenience. A 30-minute call is enough to tell you what yours realistically takes.

Book a call
← Back to all work