THEN
Home / Work / Galaxy Advertising
Deep case · website · client system

One website,
plus a system that actually runs the business.

Galaxy Advertising Co., Ltd. (GLA Thailand) is a Bangkok advertising and events company. We delivered two tracks: a 92-page trilingual website, and GLA EventOps — a multi-channel client system running on Cloudflare Workers. The first gets them found by clients and by AI; the second carries an enquiry all the way to a closed deal.

gla-thailand.com ↗app.gla-thailand.comTH · EN · ZHCloudflare Pages + WorkersWebsite + system, both shipped
Visit GLA ↗ Talk about my project →
92PAGESTrilingual pages across the site
4CHANNELSLINE · Messenger · Instagram · WhatsApp
3LANGUAGESThai, English and Chinese, fully aligned
215TESTSAll green before every release
Scope

The site gets you seen. The system gets you paid.

Plenty of companies stop at the website — and enquiries still end up scattered across four apps. Here both halves shipped.

WEBSITE

Public website

gla-thailand.com

A trilingual static site on Cloudflare Pages, served from the edge worldwide.

  • 92 HTML pages, with Thai / English / Chinese content and contact details aligned site-wide
  • Video hero sections on service and client-line pages, showing real production capability
  • Header and footer rebuilt, with social icons in each platform’s brand colour
  • Responsive layout reworked and checked page by page on mobile
  • Structured data and hreflang so search engines and AI can cite it cleanly
SYSTEM

GLA EventOps

app.gla-thailand.com

A multi-channel client system on Cloudflare Workers, taken from v0.5.0 to v0.9.4.

  • One inbox, four channels: LINE, Facebook Messenger, Instagram, WhatsApp Cloud API
  • Full quotation lifecycle: draft → send → public share link → closed
  • Bank statement CSV import with automatic matching to client and quotation
  • FTS5 full-text search across the entire message history
  • Client merge: several channel identities folded into one record
  • AI drafts, humans send — PDPA-safe redaction, the model never sends anything itself
Highlights

Six things that made the work measurably faster.

EventOps is not a generic CRM with a new skin — each piece follows how GLA actually works.

Unified inboxUNIFIED INBOXLive

LINE, Facebook Messenger, Instagram and WhatsApp Cloud API all land in one inbox. No more switching between four apps, and nothing slips through.

Quotation lifecycleQUOTATION LIFECYCLELive

Every quotation is tracked from draft to close, and can be published as a share link — the client sees their quote without creating an account.

Bank reconciliationBANK RECONCILIATIONLive

Bank statement CSVs import directly and incoming payments are matched automatically to the right client and quotation.

Full-text searchFULL-TEXT SEARCHLive

Every message across every channel is indexed with FTS5, so "the venue that client mentioned last year" is a few seconds away.

Client mergeCLIENT MERGELive

The same client reaching out on LINE and Instagram can be merged into a single record without losing history.

AI drafts, humans sendAI DRAFTLive

The model only writes drafts; a person approves before anything goes out, and personal data is redacted before it ever reaches the API.

Stack

The whole thing runs on Cloudflare.

No traditional servers — and no traditional server bill.

Cloudflare WorkersCloudflare PagesD1LINE Messaging APIMeta Graph APIInstagram Login APIWhatsApp Cloud APISQLite FTS5OpenAI API (drafting only)Zero runtime dependencies215 automated tests
Delivery

One track shipped, the other keeps moving.

01

Trilingual website live Done

92 Thai / English / Chinese pages deployed to Cloudflare Pages, with contact details, header and footer unified across the site.

02

EventOps v0.5.0 → v0.9.4 Done

Channel integrations, quotation lifecycle, bank reconciliation, full-text search and client merge landed release by release.

03

AI drafting and channel reliability In progress

AI draft generation went live behind a human-approval step; Instagram webhook dual-key signature verification and outbound routing were fixed.

Release discipline: every EventOps deployment requires all 215 automated tests to pass — one red test, no release. The site and the system share one set of brand assets, so moving from the public site into the app feels like the same product.
Want both tracks?

Get the website right, then plug the system in.

We can build just the site, just the system, or both together the way we did for GLA. Tell us the scope and we’ll come back with a plan.

Free consultation See the HAB contest case →