You are here: 01 / Work — laonmon.com

CASE 03 / WEB

laonmon.com — a trilingual website

The site you're reading. We made search engines read all three languages separately, and made sure the chatbot never invents a price.

Field
Company website
Platforms
Web
Languages
Korean (/) · English (/en/) · Japanese (/ja/)
History
Per-language URLs on September 25, 2026; multi-page redesign on October 2, 2026
The laonmon.com English home page on desktop and phone

Summary

What
LAONMON's company site — services and pricing, case studies, articles, contact form, AI assistant
Our role
Planning, design, development, search setup, chatbot, deployment, operation
Stack
React · TypeScript · Vite · pre-rendering (HTML generated at build time) · nginx · Kubernetes · a self-run AI

laonmon.com started as a single page, and the KO/EN/JP buttons only swapped the text on screen. People saw three languages; search engines saw one Korean page. A studio that builds websites can't make its case with a site search engines can't read, so we rebuilt this one to the standard of the sites we build for clients.

A URL for each language, and HTML built in advance

Problem
When only the text swaps, English and Japanese content can never appear in search results — the HTML crawlers read contains only Korean. /en and /ja returned 404.
What we did
We gave each language its own URL: / for Korean, /en/ for English, /ja/ for Japanese. At build time each language gets its own HTML with its own language tag, title, description and canonical URL, and hreflang tells search engines the three pages are versions of each other. The sitemap carries the same relationships. Sending first-time visitors to the version matching their browser language applies to people only, not crawlers: Google's renderer runs in English, so redirecting crawlers would make the Korean home page look like a redirect to the English one.
Why
Search engines can only index each language separately if every URL holds a single language. Pre-rendered HTML shows its content without running JavaScript, so neither search engines nor visitors wait for the first screen.
The same home page in Korean, English and Japanese on three phones

Missing pages answer with a 404

Problem
Single-page web apps often answer every URL with the home page and a 200 OK. After a Soft 404 warning in Search Console for another service on the same domain, we checked and found this site doing the same — to a search engine, an endless supply of identical pages.
What we did
We removed the rule that sent every URL to the home page, so only pages that exist will open. A missing URL now returns a 404 status with a page linking to home, services and articles, marked not to be indexed. In the October 2026 redesign, which added sub-pages, we kept the list of URLs in one place and had page generation, the sitemap and the menus all read from it.
Why
Search engines trust a site's structure only when real and missing pages are clearly told apart. With one list of URLs, adding a page no longer risks forgetting the sitemap or a menu.
The website service page on desktop and the app service page on a phone (Korean)

A chatbot that doesn't make up prices

Problem
A sales-page chatbot that quotes a wrong price is an incident in itself. The common approach, retrieval-augmented generation (RAG), splits documents into chunks and retrieves the ones closest to the question — miss the pricing paragraph once and the model invents a figure. And if the chatbot's content is managed apart from the page, a price change can end up updated in only one place.
What we did
Everything this site knows is small enough to load in one go (2,373 characters of Korean text when the chatbot launched on August 31, 2026), so we skipped retrieval and load it all. That content is generated at build time from the same source file as the text on screen, so changing a price on the page changes the chatbot's answer too. It's told not to guess beyond what it knows and to point to the contact form instead; tap "Send an enquiry" under an answer and your question is pre-filled in the form. The chat window says plainly that an AI is answering and that firm quotes come from a person. It runs on servers we operate with no external AI service, so more questions don't mean per-call fees.
Why
With prices coming from one source, there are fewer places to get them wrong. The first character appears in 0.55–0.74 seconds on the live site (measured October 2, 2026). If our articles grow too large to load in one go, we'll revisit retrieval then.

Results

  • Trilingual home pagesper-language URLs (/ · /en/ · /ja/), hreflang and canonical tags, sitemap
  • Sub-pagestwo service pages, three case studies, about, articles
  • Pre-renderingHTML built for every page; article pages ship no JavaScript
  • Missing pagesreal 404s with a non-indexed help page
  • AI assistantthree languages, same source as the page, hands off to the contact form
  • Contact formrecords which page and which route (search, blog, chatbot) an enquiry came from
  • Analyticscookie-free visitor statistics
  • Zero-downtime deploysthe new version starts fully before the old one is removed, and the old one waits a few seconds before closing. During a deploy on September 29, 2026, requests sent every 0.25 seconds (230 and 222 of them) all came back OK; before the fix, 1 in 196 failed.
  • Lightweight first loadhome-page JavaScript kept under a 89.7 KB (gzip) budget; 88.5 KB in the October 2, 2026 build
The full-screen mobile menu and website pricing cards (Korean)

If you're having a website built

The groundwork used on this site goes into yours. Meta tags, a sitemap and search-engine registration come with every tier, and missing pages and mobile load speed are handled the same way. We don't promise rankings; our job is making sure search engines can read your site correctly.

If you serve customers in other languages, we set up per-language URLs from the start. Adding them later means redoing your URLs and structure. Multilingual sites fall under Premium or added scope, so we agree the timeline during consultation.

We can also add a contact form that records which page an enquiry came from, so you can see whether ads or a blog actually bring in enquiries.

Next case

Life-Up

Habit app · iOS & Android · KO/EN/JA

CONTACT

LET'S
TALK.

Have a website or app in mind, a partnership idea, or a question? No logo or copy needed yet — tell us what you do and what you need, and we'll reply with scope, timing and a quote.