Beauty center and beauty salon, Da Nang and Koh Samui ·
An Instagram that answers instead of the receptionist
Prices, treatment prep, and answers to common questions moved from the website into the Instagram highlights of two accounts: complete, in one design, with nothing drawn and nothing typed by hand.

The business
Neva Beauty is a beauty center in Da Nang and a beauty salon on the island of Koh Samui. One brand, two countries, different sets of services: device-based aesthetic treatments and laser treatments in Vietnam, with a hair salon added to that in Thailand. The customers are Russian speakers who live nearby or have come for a long stay. They book through messengers.
Each location has its own website with everything laid out: services, prices, prep rules, answers to common questions. And each has an Instagram profile, @vn.neva.beauty in Da Nang and @th.neva.beauty on Koh Samui, which is where a person lands first: through a link from a friend, from an ad, or simply because it is easier to search there.
What it delivered
Everything on the website (prices, services, prep rules) now also appears on Instagram, where it had been missing: complete, neatly sorted, and in one design. Nothing was drawn or retyped, so the prices on the slides are the same as on the website, and no designer was needed.
The catch
A profile is built so that there is nothing in it to read: the feed answers the question “what’s new,” not “how much does it cost” or “how do I prepare.”
On Instagram, a price lives in a comment under a three-month-old post or in direct messages. A person who came in to choose a treatment writes a question instead of getting an answer, and waits, while the receptionist gives the same answer for the hundredth time.
Instagram does have a place for this kind of information: highlights, those circles under the profile bio. They do not slide down the way posts do, and they open with the first tap. The question was not where to put it but how to move everything from the website there: in full, with no errors in the numbers and without spending a long time in a graphics editor.
By hand, it is slow and comes with typos
A hundred and fifty slides with prices in a graphics editor is days of work, and on each one a number can go wrong. Nobody will notice the error: nobody rereads an image; only the customer sees it, and comes in with the wrong number in mind.
Two salons, double the work
Da Nang and Koh Samui have different services, different currencies, and different sets of highlights. Drawing by hand means doing everything twice and making sure the design of the two accounts does not drift apart.
Instagram cuts off whatever does not fit
A story is a vertical phone screen with hard edges. Text that takes up a paragraph on the website gets cut off at the bottom edge of a slide or runs into the interface. Checking that by eye, a hundred and fifty times, is impossible.
What I did
I sorted the information into nine topics
Each account has nine highlights. In Da Nang: prices, hair removal, rejuvenation, body, skin care, laser, about the center, prep guide, questions. Koh Samui has its own set, for different services: prices, hair, hair removal, device-based treatments, aesthetic treatments, body, about the salon, prep guide, questions.
Inside each are five to sixteen slides: what the treatment is, who it is for, how much it costs, how to prepare. In all, 75 slides in Da Nang and 92 on Koh Samui.

I moved the text and prices from the website without retyping anything
This is the key decision of the case study. The text and prices were not retyped by hand: a generator reads the very same files the website is built from and lays them out on slides by itself. The design is set once and is the same on every slide.
The practical point is simple: a typo has nowhere to come from. The numbers on the slides are the same as on the website on the day of the build; the laser hair removal price list, for example, matches line by line.
This is a snapshot, not a live connection. If a price changes on the website, the highlight will not update by itself: Instagram does not allow highlights to be changed by a program.

I rewrote the text for a phone screen
The website text is written with search in mind: “at the Neva Beauty beauty center (Da Nang)” is repeated in every other sentence, because that is how the center gets found in search. On a slide, this is hard to read and takes up half the screen.
The generator cleans the text as it goes: it collapses the search repeats down to “at Neva Beauty” and drops entire sentences that refer to a page of the website, since a story has no “see the section below.” Questions that the neighboring price list slide answers are left out too.

I checked that no slide is cut off
Before the build, every slide is measured: how much room it has and how much the text takes up. If the content does not fit, the build reports it and names the slide instead of silently cutting off the bottom line. A hundred and fifty images cannot be checked by eye, but this way the check costs nothing and repeats on every rebuild.
I drew the covers and set the avatars
The covers are those same circles. Instagram does not show the whole image; it cuts the central square out of it, so the icon sits exactly in the center and does not slip under the crop. Neighboring circles differ in shade: ones that sit side by side should not blur into a single blob.
Two sets were made: a main one and a backup one in a flat-line style. The avatars of both accounts were given the same look: a round seal with a symbol of the city. The finished highlights were uploaded to the profiles by hand, for the same reason: Instagram does not allow highlights to be uploaded by a program.

The work covered the avatar and the highlights. The feed, posts, and ads were not part of it: the business runs them itself, and this case study does not extend to them in any way.
Need to spread what is already written across other channels, with no copying by hand?
Message meWhy this case study has no numbers
There are none, and there is nowhere to get them. Profile statistics do not separate highlight views from posts and ads, and nobody took a “before” measurement: before this work, there was nothing to measure.
I cannot and will not promise more bookings from this work. What it does for certain is spare the receptionist from repeating the same answers and show on Instagram the same prices as on the website, with no errors from typing by hand.
You can check it even without statistics: open @vn.neva.beauty and @th.neva.beauty, look at the circles under the bio, and compare the prices in them with the websites vn.neva.beauty and th.neva.beauty. The slides were built on August 17, 2026; the state of the profiles was checked on September 9, 2026.
What this gives the business going forward
A price changed. What do I do?
The highlight will not update by itself: Instagram does not allow highlights to be changed automatically. New slides are built from the updated files the same way, with no designer and no typing by hand, but they have to be replaced in the profile by hand.
Why not hire a designer for this?
A designer draws every slide by hand and copies the prices from the website, a hundred and fifty times, with the risk of a typo on each one. Here nothing was drawn or retyped: the design is set once, and the text and prices came from the website as they are.
Does this work only for Instagram?
No. The slide format is set separately from the content, so anything can be built from the same files: a printed price list for the front desk, a PDF to send out, images for another social media platform. There is no need to rewrite the text for every channel.
What if a third location opens?
It will get its own set in the same amount of time. The two accounts here were built by one and the same generator: different services, different currencies, different sets of highlights; only the mechanism is shared. A third set is one more file with services, not work from scratch.
How it works technically
Python 3.12 plus Playwright. The data source is content.yml and prices.json from the
same generator the website is built from: there is no separate copy of the content for
stories. A preparation layer strips the HTML down to text, collapses SEO repeats using
a table of regular expressions, drops sentences that refer to a page of the website, and
splits the material into slides. The layout is HTML and CSS; the Cormorant and Manrope
fonts sit next to the template as subsets, and there are no external requests during
rendering. Rendering is headless Chromium, a 1080×1920 viewport, device_scale_factor=1,
a screenshot of every slide as PNG, then JPEG. Before the build, a capacity measurement
runs: a script computes the available and required content height in the safe zone and
picks a scale; on overflow, the build names the slide and the size of the overflow in
pixels. The covers are a separate generator with two sets (an aurora inside the icon
stroke and a flat line); the icon is positioned at the center of the frame for Instagram’s
square crop, the safe diameter is 872 px, and the shades of neighboring circles are kept
apart by a table.
Who did the work
It’s just me behind jw-dev.pro, not a studio or an agency. That means you talk directly to the person doing the work: no manager, no brief relayed through third parties, and no passing the project to another contractor partway through.
My time zone is UTC+7, the same as Bangkok and Hanoi. I build websites, Telegram bots, and automation: a task rarely ends with a page, and it usually has to be connected to what you already have running.
As time goes on, the task sounds like “build a website” less and less often. One person needs a price to be changed in one place, not on twenty pages. Another needs the channel to run without them. A third needs the whole price list to sit inside Telegram, where their customers already go every day. That’s why the list of what I do is open-ended: if your task isn’t on it, that doesn’t necessarily mean it can’t be solved.
I write case studies so that they can be checked: what was there, what was done, and how it was measured. If there is analytics data, I give the numbers and the period they cover; if it is too early to measure, I say so. You won’t find “increased sales” here: that is a promise, not a result.
Need something similar?
Whether it’s a website, a bot, or something that is now done by hand, tell me what’s going on, and I’ll tell you whether it can be solved or not.
This kind of work is the service “One price list for your website and social media, with no retyping.”
Your request was not sent
Your text is not lost: go back and try again. Or contact me directly: on Telegram, on WhatsApp, or by email.
If it’s easier, contact me directly: on Telegram, on WhatsApp, or by email.
Not sure what’s wrong with your website? Check it for free on Telegram: @jw_site_check_bot.
Who owns everything afterward and what happens if I disappear: answers on the home page.