Yavin Songkham
← All workClinic software · in daily use

LINE OA Studio

One web app that runs a three-branch dental clinic's customer side: every LINE and Facebook chat, bookings, patient records, the shop and marketing, with an AI that answers customers and helps staff.

Sole designer & developerOct 2026 – nowLive at PSDC & Paragon clinics

2½-minute tour of the real app on a demo database.

3clinic branches on one system
~27klines of code
~260server actions, each with a role permission
2chat channels in one inbox
24/7AI first reply in Thai
2–3 stypical AI reply time
The problem

The clinic's patients reach it through LINE and Facebook Messenger: price questions, bookings, reschedules, aftercare. Answering all of that by hand, across separate apps and outside opening hours, didn't scale for three branches.

I built one dashboard that the staff log into every day. It has three workspaces — LINE, Facebook and patient records — and a branch switcher, so each branch keeps its own customers, chats and settings in its own database.

What it does & how it works

Inside LINE OA Studio

One inbox, the AI answers first

One inbox, the AI answers first

  • LINE and Messenger messages arrive by webhook; signatures are checked before anything is stored.
  • The AI writes a reply from the clinic's knowledge base: services, prices, promotions, hours, Facebook posts and past staff answers (retrieval over embeddings).
  • Pain, price, booking and complaint questions are handed to a person; every admin gets an alert on their own LINE.
  • When staff type a reply the AI pauses for that customer, with a one-tap "let the AI continue".
  • The same person on LINE and Messenger is linked by phone and name; the side panel shows member number, points, next visit, tags and notes.

แชท LINE และ Messenger ในที่เดียว AI ตอบก่อน แจ้งเมื่อต้องให้คนตอบ

It learns from the team every day

It learns from the team every day

  • A morning job reads new chats and turns staff answers into knowledge, so the AI sounds like the team.
  • When a person corrects the AI within 12 hours, an AI judge turns it into a lesson for next time.
  • "Train the AI" inbox: questions the AI couldn't answer become new knowledge in one click.
  • AI calls go to a local model on the clinic PC first (through a secure tunnel), then fall back to Gemini / Groq.
  • A second check asks the model whether its answer is supported by clinic facts; if not, it hands over instead of guessing.
From a chat to a dentist's calendar

From a chat to a dentist's calendar

  • Patients book inside LINE: service, branch, dentist and free time slots, with a ticket and Google Calendar link.
  • Day view with a column per dentist, plus week and list views; drag to reschedule, blocked on days off.
  • Reminders the day before, then aftercare messages and a review request after the visit; recalls after N months.
  • One-tap confirm / arrived from the home screen; no-show rate tracked.
Customers, loyalty and the LINE shop

Customers, loyalty and the LINE shop

  • Customer list with member numbers, tags, AI auto-tagging, CRM stage and score, Excel / Google Sheets export.
  • Member points card drawn as a LINE Flex Message, with a canvas card designer (foil, patterns, fonts, stamps).
  • Coupons and counter QR codes; claim limits, per-user limits and atomic redemption.
  • Shop inside LINE: products with colour variants and service vouchers, PromptPay QR or bank transfer, two-step slip check.
  • Rich-menu builder: 8 ready designs, edits the live LINE menu, publishes straight to LINE.
Ads measured in patients, not clicks

Ads measured in patients, not clicks

  • Break-even calculator: budget → chats → bookings → visits → revenue and return on ad spend.
  • AI Ad Pilot plans campaigns per post and creates them paused for the owner to approve.
  • Ad guard checks every campaign's cost per chat and hook rate, and pauses ads that stop paying off.
  • Ad results stored per ad per day, so reports cover months; a weekly report goes to the owners' LINE.
  • Ad check for Thai medical-advertising law and Meta policy before anything runs.
"Paragon", the staff assistant

"Paragon", the staff assistant

  • Opens with a daily brief: chats waiting, today's appointments, orders to check, ad status per branch.
  • Plain-Thai requests become real actions: today's bookings with a confirm button, find a customer, draft a promotion.
  • Common requests are handled in code; anything else is rewritten into one known command, so it can only do what that staff member may do.

พิมพ์ภาษาไทยธรรมดา ระบบหาและทำงานให้ตามสิทธิ์ของผู้ใช้

Security and privacy

Security and privacy

  • Personal accounts, 2-step login (authenticator or LINE code), rate-limited sign-in, signed session cookies.
  • Page-level roles for ~260 server actions; automated tests block any action without a permission.
  • Patient records stay locked until the staff member re-enters their password; every opening is logged.
  • Password vault stores ciphertext only (browser-side AES-GCM); encrypted daily backups; audit log with undo.
  • Daily health check: token expiry, API version drift, LINE quota, DB size — alerts the owner on LINE.
More screens

Gallery

Dark mode, desktop
Dark mode, desktop
Facebook Messenger inbox
Facebook Messenger inbox
Locked patient-records workspace
Locked patient-records workspace
Phone layout
Phone layout
Rich-menu builder
Rich-menu builder
Member-card designer
Member-card designer
Dentist day schedule
Dentist day schedule
Card styles
Card styles
Booking inside LINE
Booking inside LINE
Stats and trends
Stats and trends
Automations
Automations
How it is built

Stack

React 19 + ViteNode.js on Vercel FunctionsPostgres (Neon), one DB per branchLINE Messaging API + LIFFFacebook Graph & Marketing APIGemini / GroqLocal LLM bridgeRAG (embeddings)Vercel Cron & Blob

Screens and the video come from the real app connected to a separate demo database with invented patients. No real patient data is shown.

Next projectpsdcdental.com →