The challenge
The OTOP cooperative in Phatthalung aggregates an SME network of agricultural processors across four core product groups:
- Phatthalung Sangyod rice — an indigenous strain GI-registered since 2006, high in anthocyanin, priced THB 95-140/kg (vs ordinary white rice at THB 35-45/kg).
- Palmyra sugar — from palmyra trees in Phatthalung/Nakhon Si Thammarat, produced by member villagers.
- Southern shrimp paste — premium-grade shrimp paste produced in Phatthalung — the network’s flagship product.
- Rubber OTOP products — latex pillows, mattresses and bedding from network SMEs.
The pain points were clear:
- Trade-fair-only sales. Revenue peaked only during OTOP fairs; other months produced almost nothing — average GMV THB 142,000/month before the project.
- Member SMEs lacked capital to digitise alone. Web build cost of THB 18,000-35,000 + Shopee Mall fees + 6-10% commission produced losses on low-margin products like palmyra sugar.
- The keyword “Sangyod rice” on Google. Top 1-3 results were out-of-province traders (Bangkok, Nakhon Ratchasima) buying cheap from villagers and reselling at markup — while the actual local producers ranked nowhere.
- Partial cold-chain requirement. Shrimp paste + fresh palmyra sugar (sold at 1.8x premium over standard) need temperature-controlled shipping; Kerry/Flash’s “controlled temperature” charge is expensive, pushing shipping cost above 18% of order value.
- No batch tracking for GI. Customers wanted proof they were buying genuine GI Sangyod rice, but the cooperative had no batch IDs or per-order certificates of origin.
Why the previous solutions failed
Shopee/Lazada Mall: the cooperative trialled a central store for 8 months — 6.5% commission + 2.5% payment fee + ~3% voucher subsidy = 12% per order. With palmyra sugar margin at 22%, true profit fell to 10%, and after packing/labour costs the operation lost money.
WooCommerce + Multivendor Plugin (Dokan/WCFM): beta-tested with 2 SMEs — performance tanked, checkout crashes from plugin conflicts, and monthly security updates that the cooperative had no IT staff to run.
ThaiOTOP.com (Department of Industrial Promotion / Ministry of Commerce): existed, but UX was hard to read, no technical-SEO optimisation, the cooperative was selling around THB 3,000/month through it.
Traditional custom development (Laravel/Django): a vendor had quoted THB 1.2M — beyond what the cooperative could afford.
We chose a headless commerce stack (Medusa.js + Astro) because:
- Medusa.js is open-source MIT — no vendor lock-in.
- Multi-vendor + multi-warehouse is designed in natively.
- The Astro static frontend passes Core Web Vitals easily → SEO ranking 2-3 levels above WooCommerce.
- Total cost stayed under THB 350,000 — within the cooperative’s budget.
Southern Whale’s approach
Pillar 1 — Multi-vendor headless commerce
Medusa.js as the backend handling inventory + order + payment for the vendor network under a single checkout — customers see one store, but the system splits orders by vendor.
The Astro static frontend pre-renders every product page across 480+ SKUs as HTML — so Google indexes immediately (WooCommerce dynamic pages take 3-7 days to crawl).
Pillar 2 — Consolidation warehouse + cold chain
Set up an 80 sqm central warehouse in Phatthalung — SMEs drop products off every Monday/Friday; cooperative staff handle consolidated packing + shipping.
For cold-chain items: insulated box + gel pack hold 4-8°C for 36 hours, shipped Kerry Express within 48 hours — cost per shipment THB 65 (vs Kerry Cold at THB 180).
Pillar 3 — GI batch tracking + per-order certificate
Customers ordering GI Sangyod rice receive a digital certificate of origin printed on the invoice with batch ID + QR code linking to farmer name, harvest year and GI Reg. No.
The QR code resolves to a traceability page on the site pulling from the batch_log table — a feature Shopee/Lazada simply cannot deliver.
Pillar 4 — SEO + content hub
32 cornerstone articles targeting clusters:
- Sangyod rice: “Phatthalung Sangyod Rice GI”, “How to cook Sangyod rice soft”, “Benefits of anthocyanin in Sangyod rice”
- Palmyra sugar: “Phatthalung palmyra sugar vs Phetchaburi palmyra sugar”, “How to store fresh palmyra sugar”
- Southern shrimp paste: “Phatthalung southern shrimp paste — quality and usage”, “Premium shrimp paste for chilli paste and curry”
- Rubber OTOP: “Phatthalung OTOP latex pillow vs Napattiga”
Schema.org Product + Offer + AggregateRating + Organization + BreadcrumbList on every page.
Tech rationale
- Astro frontend — pre-rendered, Lighthouse 96+, ranking above WooCommerce competitors on Google.
- Medusa.js backend — open source, multi-vendor native, no SaaS lock-in.
- PostgreSQL + Redis — Postgres for transactional data, Redis caching for availability/cart.
- Cloudflare R2 — image hosting at <USD 2/month for 480 SKUs.
- Stripe + PromptPay + COD — covers every payment behaviour Thai customers expect, especially COD which the 40+ cohort still prefers for orders <THB 1,500.
See /en/services/software-development/ for the headless commerce architecture pattern.
How we worked (week-by-week)
Week 1-3: Discovery + vendor onboarding workshop
- Multiple workshop rounds covering every SME in the network — 12-14 vendors per session, 4 hours each.
- Collected product data across 480+ SKUs, shot 3,200 product photos (our team + local freelancers).
- Mapped shipping zones + cold chain requirements.
Week 4-6: Medusa backend + database
- Schema design across 22 tables covering vendor, product, order, shipping, cold_chain_flag, gi_batch, certificate_log.
- Medusa multi-vendor plugin + custom commission calculator (3.5% for members, 6% for non-members).
Week 7-9: Astro frontend
- Product listing + filter (cold chain, GI, OTOP grade 4-5 stars).
- Mobile-first design — 78% target traffic from mobile.
- 3-step checkout (down from a default 6).
Week 10-11: Warehouse system
- Tablet-based inventory in/out app for warehouse staff.
- Pick list + packing label printer integration.
- Cold chain temperature log (checked twice daily).
Week 12-13: Content + SEO
- Wrote 32 cornerstone articles in Thai (the target market’s primary language).
- Schema.org rollout + canonical URL setup.
- GBP optimisation for the cooperative + flagship SMEs.
Week 14: Payment integration
- Stripe (international) + PromptPay (THB instant) + COD (Kerry/Flash callback).
- Tax calculator (VAT 7% for VAT-registered vendors, exempt for small members).
Week 15: UAT + vendor training
- 5-day UAT — invited 12 customer beta testers to try the full flow end-to-end.
- Training for network SMEs — 2 sessions focused on the mobile admin UI.
Week 16: Soft launch
- 10% → 50% → 100% rollout over 7 days.
- Acquisition layer — starting with TPC-recommended traffic (Tourism Authority Phatthalung) while SEO organic was still pre-kick-in.
Obstacles and pivots
Vendors shipping stock inconsistently: in the first week post-launch, 12% of SKUs hit stock-out because vendors (especially the 55+ cohort) weren’t used to rapid inventory checks → pivot to SMS + Line Notify every morning at 7:00am summarising items with <5 units left + 3-day demand prediction. The automation cut stock-out to 2.4%.
GI certificate forgery concern: the provincial Commerce Office worried the digital certificate could be forged → solved by registering batch IDs into a blockchain-light system using Cloudflare Workers + R2 immutable storage — every certificate has a publicly verifiable hash.
Customer shipping cost complaints: the THB 65 cold-chain shipping was initially complained about as expensive → pivot to free shipping threshold at THB 850 for cold chain (vs standard at THB 500) — average bundle price rose +28% and customers willingly absorbed the shipping cost.
Post-launch and ongoing
Month 4:
- GMV +218% (142K → 452K THB/month).
- Top 10 ranking for 14 core keywords.
- Phatthalung Sangyod rice took position 1 for the keyword “Sangyod rice GI”.
Month 8:
- GMV +370% (668K THB/month).
- Top 3 ranking for 18 core keywords.
- Active vendors increased — SMEs outside the cooperative are asking to join.
- Repeat customer rate 31% — above the food e-commerce benchmark of 12-18%.
Lessons learned:
- Multi-vendor marketplaces in the Thai SME context: the hard work is vendor training and logistics consolidation, not the tech. We spent 30% of project time on operational design, not code.
- Per-order GI certificates are a differentiator Shopee/Lazada cannot replicate — they lifted average Sangyod rice selling price 12% above baseline.
- See /en/services/seo/ for the pattern of beating “intermediary” sellers ranking on Google.
Ongoing 12-month retainer:
- Weekly system care + bug fixes.
- 6 articles per month.
- Q3 2026 roadmap: add EN export channel for Singapore + Hong Kong (demand from Thai restaurants at 4 weekly enquiries), launch B2B wholesale tier.