Multilingual Restaurant Reservation Ledgers: Intuitive Host UI That Cuts Thai Staff Training Cost by 70%

Multilingual Restaurant Reservation Ledgers: Intuitive Host UI That Cuts Thai Staff Training Cost by 70%
BLUF: Training cost is GM shadow hours, not a language course
Bangkok Japanese restaurants do not take 14 days to certify a Thai host because English or Japanese is missing. They take 14 days because kanji handwritten notes and a foreign SaaS console run through browser translate raise cognitive load at peak. Add the GM standing next to the iPad, daily oral translation of remarks, and recovery from mis-seating, and a 40-seat room spends more than 220,000 THB a year that never appears on a software invoice. A brochure claim of “23 languages” usually describes the guest booking widget. It is not the host iPad. The 70% cut is not a language school. It is a static trilingual chrome, a locale locked to the device, allergens and seat types as pictograms, and destructive actions behind a GM PIN. Overlaying Google Translate breaks layout and does not map private room, combine, or bussing into floor Thai.
1. Count the loss as GM shadow hours, not as training days
Ekkamai and Thong Lo yakiniku and washoku rooms of about 40 seats run a split crew: Thai floor, Japanese GM, reservation remarks in kanji, guests mixing secretary LINE and traveler English. Handing a new hire an iPad and saying “learn this” produces a 14-day denominator. Those 14 days are not the product manual. They are the GM standing beside the host, converting Japanese notes into Thai on the spot, apologizing for a party walked to the terrace, and repeating the same briefing for next month’s hire.
JobsDB (updated August 2026) puts a Thai waitperson between 13,000 and 18,000 THB a month. Floor hourly pay is about 85 THB. That is not the body of the training cost. The body is the Japanese GM. A Sukhumvit Japanese-shop GM at 100,000 THB a month and 176 hours prices at about 570 THB per hour. That rate sits on every evening of note decoding.
Four layers matter.
- Formal onboarding. 14 days times 2 hours of GM shadowing. Four hires a year (10 floor staff, 40% turnover) is 112 hours, about 63,800 THB.
- Thai leader as buddy. The same 14 days times 3.5 hours. A leader at 22,000 THB a month (about 125 THB per hour) is about 24,500 THB a year.
- Daily language mediation. Before peak, the GM reads Japanese remarks aloud and orally translates allergy, no-smoking, and ranked-seat notes. 35 minutes a day times 26 days times 12 months is 182 hours, about 103,700 THB. This is the largest line.
- Mis-seating recovery. A VIP walked to a smoking terrace, a private room swapped with a counter, a crustacean flag missed and then discounted. Five GM hours a month is about 34,200 THB a year. Check discounts themselves (two events a month at 3,000 THB is 72,000 THB a year) sit on a separate row.
Hiring ads, uniforms, and first-week productivity loss at 7,500 THB per hire, four hires, is 30,000 THB. Even a paper ledger with zero software still carries about 256,000 THB of people cost. Handing out a language app does not cut shadow hours if the screen stays Japanese.
The 70% claim is not “turnover disappears.” Drop items 1 through 4 (about 226,000 THB of training labor, hiring excluded) to two-day mastery plus exception-only mediation and you land near 41,000 THB a year. That is an 82% cut on the labor row. Leave hiring in the denominator and the cut is about 70%. That is how this article places the number.
2. Floor notes, Reddit, and X describe the same misread
Shop failure and public threads point at one structure.
On the floor. Friday 18:40. The Japanese GM writes “no smoking / ranked seat / left-handed / no shrimp” in the ledger remarks. The Thai new hire skips the kanji and walks the party to an open terrace (smoking allowed). The same night, a host iPad opened with the browser’s “Translate to Thai” wraps button labels until Cancel and Confirm swap coordinates. After a reservation is deleted, the GM returns to 14 days of standing beside the next hire.
On the floor side of the boards. r/Serverlife repeats a pattern from Spanish-speaking hosts on English POS: they memorize button position, they do not read the label. On a screen that cannot switch language, a mis-tap is gaze economy, not a skill gap. r/restaurateur reports that a 40-page multilingual SOP is printed and never opened. Paper manuals go stale the week the menu changes. r/KitchenConfidential describes line cooks skipping English allergy text on tickets. A paragraph of warning becomes Friday 19:00 noise.
On Thai translation quality. r/Thailand and r/learnthai keep the same complaint: Google Translate Thai can be grammatical and still not be floor Thai. Thai is context-heavy. Short remarks fail first. “Private room” as ห้องส่วนตัว survives. Combine-tables, closing the check, bussing, and ate (side dish) return a different sense. r/Bangkok and r/ThailandTourism carry guest posts of the form “I told LINE, the table never heard it” and “nobody could read the reservation note, so they asked the same questions at the table.”
On the operator side (X). Japanese-shop accounts in Thailand post a self-check the day after a seating accident: “do not leave the note in Japanese, put it on an icon.” What they refuse is not multilingual product. They refuse (a) being asked to read a paragraph at peak, (b) the GM’s head as the only book of record, (c) a shared iPad that snaps back to Japanese at every login, and (d) a cancel control the same size as a seating tap for a new hire.
3. Feature comparison: five ways to “go multilingual”
“A multilingual reservation system” is a means, not a product. Implementation decides how many days a new hire seats alone and how many GM hours sit on the month. Conversion used below: 1 USD = 34 THB, 1 JPY = 0.23 THB. Prices are August 2026 published lists and the single-shop band in circulation. Thailand contracts for foreign engines are quotes, not list cards.
| Dimension | Paper ledger + Japanese notes | Foreign console + browser translate | Foreign engine (TableCheck class) | SEA public SaaS (Eat App class) | Rezabo multilingual ledger |
|---|---|---|---|---|---|
| Book of record on the floor | Kanji notes. Unread at peak | DOM swapped after paint. Button hit areas drift | “23 languages” claimed. Often the guest widget | English-first. WhatsApp conversation is the spine | Static Thai / English / Japanese resources. Locale locked per device |
| New-hire mastery | 14-day GM shadow as default | Retrain every time the overlay wraps | Onboarding is GM-facing English or Japanese. Floor gets a second translation | Videos in English. Thai LINE ops are a separate project | Seat / move / clean as three taps. Solo in two days |
| Culinary dictionary | GM’s mouth | Generic MT. Combine-tables maps to the wrong sense | F&B glossary is usually out of contract | Menu localization is shop labor | Private room, combine, allergen tokens in a shop glossary |
| Allergy handoff | Handwritten “no shrimp” | Translated sentence dies at the pass | Notes persist. Pictogram enforcement is a setting | Notes persist. Kitchen ticket is another line | Crustacean, nut, dairy, wheat as red pictograms, always on |
| Destructive actions | Eraser. No audit | New hire can delete on the same button | Roles exist. Shared login voids them | Plan and config dependent | Cancel and un-combine behind a 4-digit GM PIN |
| Published price band | Software 0. Shadow hours are the cost | Software 0. Layout accidents are the cost | Japan list (ex-tax): setup 30,000 yen; ≤30 seats 18,000 yen/mo; 31–100 24,000; 101+ 30,000. Min 6 months. Training is a quote. Thailand is a quote | Annual: Starter $48/mo (300-cover cap, 100 WhatsApp); Essential $111 (unlimited, 250); Pro $209 (500). Monthly 69 / 139 / 272 | Ledger 1,900 THB/mo, unlimited reservation count. LINE OA plan and PSP cost sit elsewhere |
| Usage and training trap | None. Instead, 220,000+ THB of shadow hours | None. Mistranslation retraining remains | Zero cover fee is own-channel only. Onboarding pack and extra users are extra rows | Starter’s 300 covers stop Friday intake. Conversation overage is a bundle or Pro | No per-reservation usage. Headcount growth does not move the ledger fee |
| Offline | Paper works. Language still needs the GM | Network required. Translate API drop restores English | Device rules are contractual | Cloud assumed | UI strings cached on device. Remark translation only needs server ack |
Read the table as one sentence. Paper looks fee-free and prices the GM at 570 THB an hour every day. Browser translate buys the feeling of “we Thai-localized” and breaks iPad tap targets. TableCheck-class language counts are demand-side convenience, not the three-action host screen. On the Japan seat bands, 31 seats jump the monthly from 18,000 yen to 24,000 yen, and a six-month minimum remains. Eat App has no cover usage fee in the body of Essential, and SEA case volume is real. Constraints are USD billing, WhatsApp conversation caps, LINE Official Account and PromptPay not being the spine, and Free / Starter cover caps (100 / 300) that halt intake mid-month. Rezabo’s 1,900 THB is ledger rent. It is not a language course and not a demand channel. The value is that count does not move software OPEX, and locale plus pictograms shrink the shadow-hour denominator.
4. Pricing-plan traps: 23 languages, “training included,” extra users
Pin which screen the language count applies to
A language count is five different layers: guest web widget, back-office console, host iPad, kitchen ticket, LINE confirm copy. A contract that Thai-localizes the widget and leaves the seating grid in English does not move training cost. Take the demo on the shared host iPad, not on the guest path.
Vendor onboarding is GM-facing. It is not the floor’s two days
Foreign-engine onboarding is often two administrator days in English or Japanese, with 80,000 to 200,000 THB on the year-one quote. The attendee is the GM. The hours that GM then spends re-interpreting into Thai return to Section 1’s shadow line. “Training included” is not a training-TCO cut. Put two contract rows in writing: Thai three-minute videos for the floor, and a role that exposes only Seat, Move, and Clean.
Per-user billing punishes practice accounts
Seat-count billing and concurrent-login billing put five training accounts on the invoice. At 40% turnover, practice users grow every month. A flat unlimited-count ledger still has the same hole if device licenses are a separate row. Force the quote to answer, in one line, whether training terminals are billable.
Eat App annual discount and WhatsApp caps
Annual Essential at $111 a month (about 3,770 THB) sits next to a 1,900 THB ledger and looks comparable. Starter at $48 a year-equivalent stops at 300 covers a month. A 40-seat Friday and Saturday hit the cap before the month ends. WhatsApp 100 / 250 conversations a month go unused in a shop that completes booking inside LINE, while English-UI re-training remains. Conversation overage is a ~$100 bundle or a jump to Pro. Do not put unused messenger quota into a training-cost comparison.
Browser translate is not a “Thai plan”
Chrome translation is zero contract cost. It also fights a PWA Content-Security-Policy, breaks hydration, and shifts button hit areas. On a Friday when the translate API lags, the screen falls back to the source language (English or Japanese). That is a failure mode, not a feature.
5. Three-year training TCO for a 40-seat Thong Lo room
Assumptions: 40 seats, 10 floor staff, four hires a year, GM at 570 THB/hour, leader at 125 THB/hour, dinner check 1,800 THB. Official LINE sits on a separate row as Thailand-region Basic (1,280 THB/month, 15,000 messages). Figures are a synthesis of published rates and floor interviews, not a vendor invoice.
| Annual cost line | Paper + Japanese notes | Foreign engine + billed onboarding + browser translate | Eat App Essential annual | Rezabo flat + static trilingual |
|---|---|---|---|---|
| Software / ledger | 0 | Japan 31–100 seat band transplanted: about 66,240 THB/year (24,000 yen × 0.23 × 12) plus ~30,000 yen setup. Thailand is a quote. Onboarding 80,000 to 200,000 THB in year one | $111 × 12 = $1,332 (about 45,300 THB) | 19,000 THB (annual plan, 2 months free) |
| GM shadow + daily mediation | ~167,500 THB | If the console stays English, close to paper. Second-language interpreting remains | If English UI remains, mediation remains | Two-day mastery + exceptions only: ~30,600 THB |
| Buddy hours | ~24,500 THB | Same | Same | ~2,500 THB |
| Mis-seating recovery + check discounts | Labor 34,200 + discounts 72,000 | Depends on roles. Shared login returns to paper | Remains if notes never reach the kitchen ticket | Labor ~8,200 + discounts targeted at 12,000 THB/year |
| Hiring cash | 30,000 THB | 30,000 | 30,000 | 30,000 (retention is not guaranteed) |
| Year-1 shape | ~328,000 THB | Software + training land first; if shadow hours remain, year 1 exceeds 400,000 | Software ~45,000 + shadow hours can still look like paper | Ledger 42,000 + training labor ~41,000 + hiring 30,000 + discounts 12,000 ≈ 125,000 THB |
| 3-year shape | ~980,000 THB | Year-1 training amortizes. English-UI mediation repeats every year | WhatsApp quota leftover. If the training row remains, the annual discount does not pay for itself | Ledger 126,000 THB. Training row sticks in the 40,000s per year |
The breakpoint is blunt. On software price, paper wins. The moment GM hourly rate is added, the ranking flips. Negotiating a foreign engine’s monthly fee does not erase Section 1’s 182 hours if chrome stays English and remarks stay generic MT. Do not overstate Rezabo’s side either. 1,900 THB a month is an unlimited-count ledger. LINE Official Account message packs, PromptPay MDR (commonly 1.65% plus VAT 7% at Thai PSPs such as Omise), and Wongnai POS or Ocha sales matching sit on other rows. This is not a substitute for a language school.
Corporate contracts add VAT 7%. A 3,500 THB body invoices as 1,900 + 133 VAT = 2,033 THB and can sit inside WHT 3%. Do not mix the training-TCO table with the tax-invoice table.
6. Rate limits and API constraints that belong in the quote pack
Sales copy says “real-time translation” and “unlimited languages.” Published and field limits disagree. Put these rows in due diligence before legal signs.
| Constraint | Browser translate / generic MT | TableCheck-class engine | Eat App-class SEA SaaS | Rezabo multilingual ledger |
|---|---|---|---|---|
| UI chrome source | Runtime DOM swap. Layout untestable | Guest widget i18n. Host grid language is contractual | English console as default | Build-time JSON: th-TH / ja-JP / en-US |
| Translation billing | Google Cloud Translation ~USD 20 / million characters. Glossary is extra | In-product copy. Custom F&B glossary is a professional-services line | Shop-side menu work | Shop glossary first. MT only for unregistered tokens |
| Published API ceiling | Translate API quotas and 429s. Peak Friday is when they fire | Public notes: 10,000 requests / 5 minutes per API component. Limits do not pool | WhatsApp 100 / 250 / 500 conversations. Cover caps 100 / 300 on Free / Starter | Webhook ingest burst-controlled. Retries idempotent on reservation_id |
| Webhook semantics | N/A. Overlay is client-only | Create / change / cancel can arrive twice for one external ID | Messenger delivery receipts are not a seat lock | Paid / confirmed / released retry. Same ID consumes one seat |
| Device locale | Browser Accept-Language. GM Safari poisons the next shift |
Account-scoped. Shared login snaps language | Account-scoped | device_id profile. PIN changes role, not language |
| LINE confirm copy | Not in scope | Not the Thai OA spine | WhatsApp is the spine. LINE is extra | Flex templates in three languages. Rich-menu chat-bar labels measured at 14 characters |
| Time and calendar | Browser locale. Buddhist Era and Gregorian mix | Engine TZ is contractual. JST leftover is common | Cloud TZ. Shop must pin Asia/Bangkok |
Server canonical Asia/Bangkok. Display only follows device locale |
| Offline chrome | Translate API drop restores source language | Device rules in the contract | Cloud assumed | UI strings in the Service Worker. Untranslated remarks show source + “untranslated” badge |
| Destructive API | Same button, no server re-auth | Role-gated if not shared-login | Plan dependent | reservation.cancel absent from host role. PIN re-checked server-side. Offline cancel refused |
Three traps sit inside that matrix.
Glossary-free MT on remarks is a food-safety incident, not a UX miss. “Bussing” returns a non-cleaning sense. “Ate” becomes an addressee. Put the shop glossary first (private room = ห้องส่วนตัว, combine = รวมโต๊ะ, clean = เคลียร์โต๊ะ) and send only misses to MT.
10,000 requests / 5 minutes per component is generous for one shop and tight for a naive poller that refreshes every table every five seconds. Limits do not pool. A CRM extract that shares a window with a booking poller will 429 one of them. Honor Retry-After. Do not retry create.
WhatsApp conversation caps and LINE Official Account quotas are different products. A shop that completes booking inside LINE will not exhaust Eat App’s 250 conversations and will still pay for English-UI retraining. Do not treat unused messenger quota as training savings.
7. Operational traps and edge cases that do not appear on the pricing page
Worked incident, Friday 18:40, four-top T12, remarks “禁煙・上座・海老不可”:
- 17:55. Japanese GM types the kanji into the shared console while logged in as himself. Locale is
ja-JP. He hands the iPad to a Thai new hire without switching language. - 18:40. The hire cannot parse the remark, seats the party on the open terrace (smoking, no ranked seat). Kitchen ticket prints the English MT of “no shrimp” as a sentence. The line skips it.
- 19:10. The guest flags a shared-oil shrimp garnish. Check discount 3,000 THB. GM returns to 14-day shadowing because “the staff cannot read Japanese.”
The product that would have stopped this is not a language course. It is a device-locked Thai chrome, a crustacean pictogram that cannot be seated past without an ack, and a kitchen ticket that prints the badge, not a paragraph.
Write these into the quote pack and the floor SOP
- Shared iPad on one GM account. If locale rides the account, the second the GM logs in Japanese and hands the tablet over, kanji returns. Lock language on the device profile. Split authority with a PIN.
- Browser translate in production. Thai runs 20% to 30% longer than English. Labels wrap. Confirm and Cancel swap coordinates. On a PWA the translate layer collides with the cache.
- Generic MT on remarks. Combine, bussing, and ate take the wrong sense. Shop glossary first. MT is the overflow, not the book of record.
- Guest-widget language count treated as host UI. “23 languages” is for the booker. Force the quote to say whether host-screen Thai is native-reviewed or machine-translated.
- Destructive actions the same size as seating taps. Cancel, cross-day move, and un-combine as primary buttons reproduce position-memory mis-taps. Close them behind a 4-digit PIN or a GM role.
- Buddhist Era mixed with Gregorian. Thai staff see พ.ศ.2569. Japan HQ reports see 2026. Canonical date is Gregorian. Display only follows device locale. Mix them and tomorrow’s booking looks a year off.
- Two-day vendor onboarding read as two-day floor mastery. The attendee is the GM. Second-language interpreting hours are not a reduction.
- Per-user billing of practice terminals. A contract that grows accounts every time you train grows the invoice with turnover. Put training-terminal billability in the quote table.
- Allergy as a translated free-text sentence. A Thai rendering of “no shrimp” does not cover stock, shared oil, or garnish. A translation without a pictogram and a severity code did not hand the warning off.
- Japan-time webinars written as “unlimited training.” 14:00 JST is Bangkok lunch peak. Unattended training is contract consumption, not skill.
8. Technical snippets: chrome is a static resource, remarks are a view
UI chrome is a static resource. It is not runtime MT. Keep i18n keys (action.seat, action.move, action.clean) as th-TH / ja-JP / en-US JSON and bundle at build. Throwing chrome at Google Cloud Translation at runtime makes button-position regression tests impossible, and an API outage becomes an inability to trade. Translation API list price near USD 20 per million characters still leaves the culinary Glossary as a separate SKU. Do not send “combine” without a glossary.
type Locale = "th-TH" | "ja-JP" | "en-US";
interface DeviceProfile {
deviceId: string;
locale: Locale; // locked to the iPad, not the signed-in user
role: "host" | "leader" | "gm";
}
interface DietaryHazardToken {
tokenId: "ALLERGEN_CRUSTACEAN_SEVERE";
pictogram: "ICON_SHRIMP_HAZARD_RED";
kitchenPrint: "CRUSTACEAN_STRICT_EXCLUSION";
ackRequiredBeforeSeat: true;
}
const chrome: Record<Locale, Record<string, string>> = {
"th-TH": { "action.seat": "นั่งแล้ว", "action.move": "ย้ายโต๊ะ", "action.clean": "เคลียร์โต๊ะ" },
"ja-JP": { "action.seat": "着席", "action.move": "移動", "action.clean": "開放" },
"en-US": { "action.seat": "Seated", "action.move": "Move", "action.clean": "Cleaned" },
};
export function t(device: DeviceProfile, key: string): string {
return chrome[device.locale][key] ?? chrome["en-US"][key] ?? key;
}
export const HOST_FORBIDDEN = ["reservation.cancel", "reservation.uncombine"] as const;
Remarks are a display concern. They are not the reservation event of record. Persist source_locale and source_text as required. Thai display prefers a glossary hit. Only unregistered tokens go to MT. Overwriting the source with the translation deletes the GM’s original and makes the next morning’s Japanese check impossible. Re-translation of the same remark id is idempotent. What the WebSocket fans out is a view of the translation, not an inventory event.
LINE and translators redeliver. Persist the event id before you mutate a remark view.
{
"id": "evt_note_tr_01JJ8K2N8X7Q3M0P",
"type": "reservation.remark.translated",
"reservation_id": "rsv_suk_20260821_t12",
"source_locale": "ja-JP",
"source_text": "禁煙・上座・海老不可",
"glossary_hits": [
{ "token": "NO_SMOKING", "th": "โต๊ะห้ามสูบบุหรี่" },
{ "token": "RANKED_SEAT", "th": "ที่นั่งหลัก" },
{ "token": "ALLERGEN_CRUSTACEAN_SEVERE", "th": "ห้ามกุ้งและเครื่องทะเล", "pictogram": "ICON_SHRIMP_HAZARD_RED" }
],
"mt_overflow": [],
"idempotency_key": "rsv_suk_20260821_t12:remark:v3"
}
Device locale belongs on device_id. If cookie Accept-Language or the browser setting is canonical, the GM’s Safari brings Japanese in and the next shift starts in kanji. Offline, cache chrome in the Service Worker. Untranslated remarks render as source plus an “untranslated” badge. Do not blank the source.
query HostGrid($shopId: ID!, $deviceId: ID!) {
deviceProfile(deviceId: $deviceId) {
locale
role
capabilities
}
seatingGrid(shopId: $shopId) {
tables {
id
status
allergens { tokenId pictogram ackRequired }
remarksView(locale: DEVICE) {
sourceLocale
sourceText
displayText
untranslated
}
}
}
}
mutation AckAllergen($tableId: ID!, $tokenId: ID!, $pin: String) {
ackDietaryHazard(tableId: $tableId, tokenId: $tokenId, managerPin: $pin) {
ok
code
}
}
SQL compare-and-swap is the book of record for cancel, not the iPad. Comment the intent in block comments so a DBA does not “simplify” the predicate. Host role has no reservation.cancel. PIN verification is not a client visual. The server re-checks the role. Applying cancel locally while offline empties inventory on reconnect. The floor SOP is: on a dropped network, move seats; cancel waits for the GM.
BEGIN;
/* Intent: host role cannot cancel. PIN is re-checked against gm_pins.
Offline clients must not apply this update from a local queue. */
UPDATE reservations r
SET status = 'cancelled', cancelled_at = now(), cancelled_by = :gm_user_id
WHERE r.id = :reservation_id
AND r.status IN ('confirmed', 'seated')
AND EXISTS (
SELECT 1 FROM gm_pins p
WHERE p.shop_id = r.shop_id
AND p.pin_hash = crypt(:pin, p.pin_hash)
AND p.revoked_at IS NULL
);
/* 0 rows: already cancelled, or PIN / role failed. Do not invent a seat. */
COMMIT;
LINE confirm copy is three templates, not one string run through MT. Flex Message text boxes wrap differently by language. A 20-character Japanese line becomes two lines in Thai. Rich-menu chat-bar labels have a 14-character limit. “ご予約はこちら” does not fit. Measure “จองโต๊ะ”, “Reserve”, and “予約”. Phone numbers are not available from liff.getProfile(). Do not teach a training-terminal SOP that assumes guest profile fetch.
Time, phone, and name. Server canonical timezone is Asia/Bangkok. Leaving a Japan-HQ SaaS on JST makes a 20:00 slot render as 22:00. Phones normalize leading 0, +66, and spaces to E.164. Do not auto-merge Japanese “Sato.” Teaching “same surname is the same person” on a training screen copies an allergy onto a stranger.
9. UI rules that get a hire to solo seating in 48 hours
Cutting cognitive load is the opposite of adding features. The floor’s first screen holds three actions.
- Seated. Tap the table. Color: green empty, yellow reserved, red seated, grey bussing.
- Move. Drag with adjacency constraints. Do not propose a combine that kills a two-top.
- Cleaned. After the check, release for the next party. Cancel is not on this screen.
Allergens (crustacean, nut, dairy, wheat), seat types (private room, counter, terrace), VIP, and no-smoking render as food pictograms in circulation under European display rules, plus seat icons, not as ISO-style warning chrome. A sentence of “no shrimp” can sit beside the icon. At peak, the icon is the book of record. Remarks the GM types in Japanese leave the host terminal as glossary Thai standard phrases. Unregistered tokens keep the source.
Day 1 (90 minutes × 2). Repeat Seat, Move, Clean on the live device. Do not show create or cancel. Log in as the GM and confirm the shared iPad stays Thai. If this check fails, Day 2 is wasted.
Day 2 (90-minute peak drill). 19:00 combines, red allergen icon to the kitchen, 15-minute delay resale, VIP gold marker on the ranked seat. Cancel cases use the GM PIN only. When the drill ends, the GM leaves the floor.
Day 3 onward. Solo. GM intervention is untranslated badges and PIN prompts only. Weekly, add at most ten unregistered tokens (signature dishes, bottle SKUs) to the glossary. A 50-token weekly glossary job turns operations into a translation company.
The checklist is five items and stops there: empty-color read, seated tap, move, point at the allergen icon, clean after the check. Anything beyond that is a GM-role procedure. It does not belong in the new-hire denominator.
10. FAQ the shop lead should close before signing
Q1. Can a Japanese GM who cannot read Thai still run the book?
Lock the account or the device locale to Japanese. The same reservation is Japanese for the GM, Thai for the host, pictogram for the kitchen ticket. The book of record is the reservation id, not the screen language.
Q2. Can signature dishes and bottle SKUs be translated?
Register Japanese, English, and Thai in the shop glossary. Sending unregistered proper nouns to MT turns them into a different dish. Cap weekly adds at ten, in writing, before go-live.
Q3. Can a new hire deleting a reservation be stopped?
Require a GM PIN for cancel and un-combine on the server. Refuse cancel while offline. Hiding the button in the UI is not enough.
Q4. Are Eat App or TableCheck multilingual features insufficient?
Guest-side language, WhatsApp, and OTA sync are other products’ strengths. A Bangkok floor that completes on LINE and a Thai iPad still carries English-UI second-language interpreting in the training TCO. Place cover caps and the onboarding-training row next to the monthly fee.
Q5. May we write turnover improvement into the contract?
No. The 70% in this article is shadow hours, mediation, and recovery labor. Retention moves with wages, shifts, and how the GM speaks on the floor. Do not make it a UI SLA.
Closing
Thai staff training cost is the wrong number if you measure language-school days. The unit is the 570 THB/hour GM reading remarks aloud. In a 40-seat room, 14 days of shadowing plus daily interpreting plus mis-seat recovery exceed 220,000 THB a year that never prints on the software invoice. Browser translate and a “23 languages” claim do not move that row. Guest-widget language, the host iPad’s three actions, and the remark glossary are different layers.
The 70% cut is not a story in which turnover vanishes. Formal mastery falls from 14 days to 2, daily mediation becomes exceptions only, destructive actions sit behind a PIN, and allergens move from sentences to pictograms. Only a ledger that meets those conditions stops buying the same 14 days at every hire. Rezabo’s 1,900 THB a month is unlimited-count ledger rent. LINE message packs and payment MDR sit on other rows. It does not sell covers and it does not sell language skill. Look first at whether Friday 19:00 host screens stay Thai, and close on three actions, with the GM off the floor.
If you know current new-hire mastery days and how many minutes a night the GM reads remarks aloud, the Bangkok team can price remaining shadow hours against a two-day flat ledger.
Bangkok Restaurant No-Show Prevention Checklist (15 Rules)
An operational field guide for dining venues in Thailand: sync kitchen prep strictly with dynamic PromptPay QR deposits and automated LINE reminders to eliminate food waste.
- Strict synchronization of Friday 16:00 kitchen prep with paid bookings only
- Dynamic QR verification replacing static slip matching and slip forgery
- High-retention refund deadline rules and seamless tourist card routing
Delivered instantly via LINE Official Account (Instant 3-sec access)