Psychologist’s private practice, online and on Koh Samui ·
A website that leads to the first message
People come to a psychologist by referral, not from search, and weeks pass between “you were recommended to me” and a sent message. The whole page is built around that one step.

The business
A family psychologist in private practice, in the field since 2016. He works in Russian, online and in person on Koh Samui in Thailand. The requests are the usual ones for a private practice: anxiety, couple relationships, burnout, self-esteem, crises, and loss.
Clients come by two routes, and both bypass search: on a recommendation from people they know, and from his own Telegram channel. That changes everything. A person who needs a psychologist doesn’t shop for “whoever is cheapest”: they get a link, open it, and spend weeks working up the nerve to message. Over that stretch, the website is all they have: they haven’t met the specialist yet, they are too shy to ask, and they have a lot of questions.
The audience, meanwhile, is mixed. Some live in Russia and work with him online: they need rubles and Moscow time. Others are already on the island and want to come in person: they need baht and an address. The time difference between Koh Samui and Moscow is four hours, and one wrong line in the schedule costs a missed session.
What it delivered
Instead of an empty “hello,” the specialist gets a complete request: what the person came with and when they would like to start. Price and time are visible right away in two currencies and two time zones, both for those in Russia and for those already on the island. There are no numbers for this work yet; the “Why no numbers” section explains why.
What this page has to do
It doesn’t bring people in. It removes the reasons why a person who already has the link never messages. The reasons are few, and they are the same for everyone.
Whether this applies to me
A person isn’t sure their story is a “good enough” reason to see a specialist. Until they have figured that out, they won’t message, and they won’t ask either.
Who this person is
A psychologist is let into the most personal things. Education, methods, experience, and a real face have to be visible before the first message, not “provided on request.”
What I would even write
The most underrated barrier. Putting something that is hard to talk about into a first message is work in itself, and many people stop right there.
| Metric | How many |
|---|---|
| Content blocks | 11 |
| Quiz questions | 3 |
| Answers to common questions | 10 |
| Diplomas and certificates | 4 |
| Session formats and currencies | 2 and 2 |
What I did
A quiz instead of an empty “hello”
Three questions: what you want to work through, whether you have worked with a psychologist before, and when you would like to start. What comes out is not “thanks for your answers” but a ready-to-send message: a greeting, the request, past experience, timing, and a line asking to book the free twenty-minute session. One button copies the text to the clipboard, and the other opens the messenger.
Both sides win. The person doesn’t have to put something that is hard to talk about into words from scratch: they pick from options, and the text comes together on its own. The specialist sees from the first line what the person is coming with and doesn’t spend the first session working out the request. Below the buttons, a separate line says that the answers are not sent anywhere automatically; on a site like this, that is important to say out loud.

Price and time are visible right away, in two currencies
Online is in rubles, in person on the island is in baht, with the length and what is included next to each. The free twenty-minute intro session sits in a separate card at the top: it is the first step, and it shouldn’t get lost among the prices.
Appointment hours are given in two time zones at once: 9:00–20:00 island time and 5:00–16:00 Moscow time. The difference is four hours, and without the second line, a person in Russia could easily book a time that doesn’t exist.

Credentials open instead of being listed
Four diplomas and certificates: a bachelor’s degree in psychology, two professional retraining programs of 620 and 1,640 hours, and continuing education in cognitive behavioral therapy. Each one opens at full size on a click and can be paged through with arrows, keys, and a swipe. Trust in a psychologist starts with credentials, and they have to be visible.
Ten questions people ask before the first session
Not “how to order a service” but what a person is actually thinking: Is this something to be ashamed of? How do I know I need a psychologist and not a psychiatrist? What if it doesn’t help and I just waste my time? What if my partner is against couples therapy?
Every answer starts with the answer, with no warm-up. That makes it quicker to read, and an answer like that is exactly the kind that is easier to quote, for a search engine and for an assistant alike.
A separate check guards the address for in-person sessions
The page names only the island: no street, no building number, no coordinates. Not in the text, not in the structured data, not in the file for AI systems. This is the psychologist’s safety requirement, and it doesn’t rest on memory: with every edit, an automatic check searches the pages for a street, a latitude, and a longitude and says so if it finds anything. A year from now, when everyone has forgotten the agreement, the rule will keep working.
For the same reason, the site doesn’t record what visitors do: that is the analytics option that captures mouse movements and what is typed into fields. The site is about personal matters, and watching people on it is uncalled for.
The site explains itself to search engines and AI assistants
The structured data is put together as one connected graph of thirteen nodes: who the specialist is, what the services are, what the prices are in two currencies, what the qualifications are, and what the appointment hours are. It passes the official validator without a single error or warning. Separately, there is a summary file for AI systems, and such systems are explicitly allowed access to the site.
The point is simple: a person can ask not only a search engine but also an assistant, “recommend a family psychologist who works online.” For such an answer to draw on the site, the site has to be easy to quote.
The page became two and a half times lighter
The fonts are trimmed down to the characters that are actually on the page: 49 KB instead of 203. Before, because of the single ₽ sign, the browser downloaded an extra hundred kilobytes of Vietnamese and phonetic Latin characters. The diploma scans are served in two versions, a light one for a regular screen and a detailed one for Retina displays, and the photo from the first screen no longer holds up the text on phones, where you have to scroll down to see it anyway.
The heaviest file on the page turned out not to be mine: it is the analytics script, 87 KB. It no longer loads together with the site but waits until the page has appeared on screen or the person clicks something. No statistics are lost along the way: events pile up in a queue and go out once the script is up and running.
The site checks itself with every edit
With every edit, a set of automatic checks runs: whether all the prices, appointment hours, and session formats are in place, whether the text on the page matches what a search engine sees, and whether a price in the text has drifted from the price in the markup. An outdated number or a mismatch will not go unnoticed.
Do people come to you by referral too, and then hesitate for a long time before messaging?
Message meWhere the site was silently losing people
An ordinary check reads the text of the page. These three failures can’t be found that way: the site looks like it works, but the person never gets as far as a message.
A white screen instead of the site
If the code did not reach the visitor (an ad blocker, a corporate proxy, a dropped mobile connection), the page stayed blank. The person left without ever learning that there was a site at all.
The button lied
“Copied ✓” was shown even when copying had failed. The person went off to the messenger with an empty message, at the very step the page was made for.
No way through with a keyboard
For those who move around the page with a keyboard rather than a mouse, the quiz hit a dead end three times: the “Next” button disappeared out from under them, and there was nowhere left to go.
A separate check grew out of this. A real browser goes through the site: it completes the quiz, opens the diplomas, moves through the page with a keyboard, looks at whether the layout falls apart on narrow screens, and reads the error log. If something fails, the check names exactly what broke. When it was written, the site as it was then failed almost every item in it: the check catches real failures instead of putting on a show.
None of these failures can be seen by opening the site and clicking through it with a mouse. They all live where an ordinary check doesn’t go, and that is exactly where the site loses people, the ones later described as “just didn’t message.”
Why this case study has no numbers
Analytics has been in place since day one; it’s just that as of September 10, 2026, there is almost no one to count.
I looked at the period from May 9 to September 10, 2026: four months. It includes a short stretch of advertising, but that has nothing to do with how the page itself works, and I don’t count those visits. The rest of the time, only a handful of people a week open the page: with numbers like that, the share of people who message shifts with a single person, and no conclusions can be drawn from it.
Almost no one came from search during this period either, and that is to be expected. The top spots for searches like “online psychologist” are held by large directories of specialists, with thousands of pages and years behind them; there is no room there for a new domain with one page. A one-page brochure website doesn’t win general searches and isn’t supposed to: its work starts after a person already has the link, from someone they know, from the channel, or from a chat.
What can be seen as of September 10, 2026, though, is that the page does its job: the site opens at psy-krasnogor.pro, the quiz can be completed to the end and produces a ready-to-send message, the prices on the page and in the structured data match, and the address for in-person sessions is nowhere to be found. It makes sense to pull the numbers no earlier than the winter of 2026/27, and that is when they will be added here.
What this gives the business going forward
Won’t it fall apart in a year?
There is almost nothing in it to break. It is one finished page with no database, engine, or plugins asking for updates, and the quiz and the diploma gallery run right in the browser and do not depend on any server.
What does it take for people to start coming from search?
Content and time. One page answers searches about a particular specialist but doesn’t win the general ones: those take separate pages for separate topics, text published regularly, and at least six months of work. That is a separate task, and it is more honest to name it up front than to promise that a brochure website will get itself to the top.
How it works technically
HTML, CSS, and JavaScript with no frameworks, mobile-first, BEM, all values through CSS variables. The build is a short bash script: five style files into one minified bundle, and the scripts likewise; the Inter and Manrope fonts are cut from variable masters by a character list with fontTools. The markup is one schema.org graph of 13 nodes linked through @id: ProfessionalService, Person, Service, five Offer nodes in two currencies, FAQPage, WebSite. The privacy policy is kept out of search results with noindex rather than Disallow: a crawler doesn’t download a page that is forbidden in robots.txt and doesn’t read its meta tag, so the URL could still end up in search results. Checks with every edit: check-content.sh, nineteen sections of checks on the source and the built page, plus four Node validators with no dependencies at all: JSON-LD, FAQ in sync with the markup, a comparison of the offers with the price list on the page, and check-behavior.mjs, which drives a real Chrome through CDP. Hosting is GitHub Pages on a custom domain. Analytics is Yandex Metrica with deferred loading of its script and session recording turned off.
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 “Small business website: a full build, ready to run.”
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.