Flagship · 01 · 2026 — in production

RITORNI — the operating system of a salon, across three markets

RITORNI is our product for beauty salons: online booking on a real calendar, a morning dashboard that shows who is about to stop coming back, and a website of its own for every salon. Built from scratch for three markets and three languages.

Year
2026 — in production
Client
Own product (Tangled Design)
Role
Strategy, identity, design, development, content, maintenance
Sector
SaaS product · Beauty · Multi-tenant

Services

  • Product strategy
  • Visual identity
  • Design
  • Development
  • Content
  • Maintenance

Stack

  • Next.js
  • React
  • TypeScript
  • PostgreSQL
  • WordPress with a custom theme
  • Automated tests
  • AI assistance via API
ritorni.euStatus · In production
RITORNI — the operating system of a salon, across three markets — cover

Our second own product: a system for salons, built and operated entirely by us.

Overview

A salon never finds out that it has lost a client. It finds out months later, looking at the diary and no longer seeing her there.

RITORNI is our product for beauty salons. It has three surfaces: a public page where the client books for herself, a morning dashboard for the owner, and a website of its own for every salon. It runs in Italian, Romanian and English, across three markets, each with its own currency and content. The product site is at ritorni.eu.

As with Invuna, the decisions, the costs and the consequences here are ours.

The product, briefly

3
Active languages
3
Markets
3
Product surfaces
9
Demonstration sites

The challenge

The industry already has booking software. Nearly every product on the market treats the calendar as the product: book, confirm, take payment. What almost none of them do is look at each client's rhythm.

A colour client comes in every six weeks. Another every ten. When one of them runs three weeks past her own rhythm, nothing visible happens: the diary still looks full, the day carries on, nobody rings to say they are not coming back. The loss only becomes visible much later, when it can no longer be recovered.

That is where we built the product. Not around the booking — around the return.

01 · Booking, from the client's side

The public booking page of a Bucharest salon, with services and prices in lei
The public booking page: the client picks the service, the person and the time, and confirms it herself. No account, no app to install.

The approach

The product has three surfaces, designed for three different people.

For the client — the booking page. She picks the service, the person and the time, at any hour of the day or night. She gets the confirmation, and a reminder the day before.

For the owner — the morning dashboard. Not a control panel with twenty charts, but the answer to a single question: what do I do today? The day's takings, the diary, the gaps that can still be filled, and the short list of clients who have drifted past their rhythm — each with the message already written, ready to send.

For the salon — its own website. Every salon gets a site with its services, prices, team and opening hours, wired directly into online booking.

The application was designed for the phone from day one. The owner does not sit down at a computer to find out what needs doing; she looks at her phone, between two clients.

The solution

A design decision: a product for an aesthetic industry

A salon sells taste. Software that walks into a salon has no business looking like an accounting form — and much of what exists on the market looks exactly like that: corporate blue, rounded cards, a panel that could just as easily belong to a logistics company.

We deliberately went the other way and built an editorial design system rather than an application one:

  • Palette: ivory, burgundy and gold. Salon colours, not admin-panel colours.
  • Typography: a display serif for headlines, a grotesque for body text, a monospace for figures and labels. Times, prices and durations live in monospace, like a printed docket.
  • A signature motif: a gold diamond and a fine rule that draws itself on scroll. It appears in all three languages and on every surface, holding the product together without repeating a logo endlessly.
  • No emoji. Nowhere, on no screen, in no language. It is a rule, not a preference.

Three languages, three markets — not a translation

The easiest mistake in an international product is to build in English and lay a translation layer over the top. It shows immediately: wrong currencies, phrasing that reads like a manual, the week starting on somebody else's day.

We treated language and market as properties of the salon, not as settings belonging to the visitor. Each salon has its own language, currency and timezone, and the application never infers anything about the person opening it: the salon decides. A salon in Cluj sees prices in lei and an interface written in Romanian — not translated from Italian. A salon in New York sees dollars and an interface written for its own market.

The same rule applies to the product site: the RITORNI product site exists in full in Italian, Romanian and English, with structure and content of its own for each market.

03 · Three markets

The same pricing page in Italian, Romanian and English, each in its market's currency
The same page, three languages, three currencies. The language is not detected from the browser — the salon decides it.

One design system, sites that look nothing alike

Every salon gets its own website. The real challenge was not building one site, but building a system that produces sites which do not recognise each other.

The test we set ourselves: put two sites side by side, hide the palette, and a stranger has to say within two seconds which is the hairdresser and which is the barber. If they cannot, the system has failed and what you actually built was the same site in another colour.

To pass it, each trade has its own art direction — not just another colour: a different opening composition, a different rhythm of sections, a different signature motif, a different photographic treatment. The hairdresser opens on an editorial double page. The barber puts the price list straight into the opening, like a board on the wall. The aesthetic clinic runs on a calm, clinical band.

The three trades covered today are a starting point, not a limit: every new salon gets its own direction.

Three demonstration sites side by side: hairdresser, aesthetic clinic and barbershop

You can open them and check for yourself — these are demonstration sites, with fictional salons: hairdresser, aesthetic clinic, barbershop. The same three exist in Italian and in English as well — nine in total, from a single system.

Key moments

The greyscale test

The easiest thing to do with a design system is to produce the same site in different colours. We wanted the opposite, so we kept the test simple and verifiable: side by side, without colour, someone who knows nothing about the project has to name the trade within two seconds. Composition, rhythm and typography have to do the work, not the palette.

It is the only proof an outsider can run without taking our word for it — which is why it is on this page.

04 · The proof

The same three demonstration sites without colour: hairdresser, aesthetic clinic, barbershop
The test, run on the page: without colour, the hairdresser opens with a serif and a photograph, the aesthetic clinic with a centred headline and a calm band, the barber with condensed capitals and the price board. Demonstration sites, fictional salons.

Translations cannot fall behind

The three language dictionaries are bound together through the type system: a new feature shipped in only one language does not compile. There is no “we'll translate it next week” — either it ships in every language, or it does not ship.

It is a constraint we imposed on ourselves and it cost us time at the start. It has paid for itself on every release since.

AI that never receives personal data

The product uses AI assistance for the messages sent to clients. The model never receives the client's name, her phone number, or the salon's name. It receives the service type, the rhythm and the language, and writes with placeholders; the application fills them in locally once the answer comes back.

Every feature that uses AI also has a hand-written, deterministic version that takes over if the external service does not respond. The product does not stop because somebody else stopped.

The figures say the same thing everywhere

The same amount, calculated in two places in the application, has to produce the same result — otherwise the product lies politely. The calculation rules are covered by automated tests that run on every change, and the booking flow is verified end to end before every release.

Technologies

Application         Next.js · React · TypeScript
Database            PostgreSQL, hosted in the European Union
Salon websites      WordPress with a custom theme, driven by presets
Product site        Static, three languages, per-market structured data
AI assistance       Via API, with no personal data in the request
Testing             Unit tests and end-to-end verification of booking
Languages           Italian, Romanian, English

The result

RITORNI is in production. The product site is public in three languages, the application is running, and the website system covers three trades in each of the three markets.

We keep building it — feature by feature, market by market.

Two doors

Do you run a salon? See the product, the pricing and how it works: open ritorni.eu.

Do you have a project? We have been building digital products since 2017 — strategy, design, development, launch. RITORNI is the evidence that we build them for ourselves too, not only on an invoice.