Case study · A multi-market fresh-produce company
Customer Service Portal: Claims, Refunds, Coupons
Service console across three markets for claims, refunds, coupons and tech support — wraps WooCommerce, the claims DB and Make.com as sources of truth.
Headline outcome
One service console for executives across three markets. Source systems stay authoritative, every action audit-logged in two places, and AI does the first pass on every claim photo.
The brief
GrowXLabs built a customer service portal that lets a multi-market fresh-produce company run service operations across three markets from a single console — wrapping their existing WooCommerce stores, claims database, and Make.com automation as sources of truth, with AI doing the first pass on every claim photo and a full audit trail behind every action.
The team had been working out of a fragile no-code stack — a Glide app on top of a tangle of spreadsheets and ad-hoc tools — to handle quality claims, refunds, coupons, and customer tech support across all three markets at once. The data they needed lived in the source systems, but the people doing the work didn't have a console that talked to all of those systems together. Worse, when they jumped into WooCommerce directly to issue a coupon or process a refund, none of those actions were getting tracked anywhere — the audit trail had a hole in it.
They asked us to build one console that would close that hole, move faster than the no-code stack, and leave the source systems exactly where they were.
What we built
A single service portal built on three principles:
- One console for the service team. Orders, quality claims, refunds, coupons, customer tech support, and an admin/configuration panel — all in one app, market-scoped so an executive only sees the market they're working in. A KPI dashboard sits on top.
- Source systems stay the source of truth. The portal never owns customer or order data. Order detail is fetched live from the e-commerce store every time it's opened. Claims write back to the claims database. Coupons and customer emails are issued through Make.com. Supabase is used as a fast read-cache for list views — never as the system of record.
- Every action is audit-logged in two places. Every refund, claim update, and coupon action is written both as a note on the source order ("[Service Portal] refund issued by …") and as an immutable row in an internal activity log. The audit hole the team had before is closed.
Coupon lifecycle from one place
The portal handles the full coupon lifecycle — create, update, and cancel coupons — without anyone needing to log into WooCommerce. Previously, the service team did this directly in WooCommerce admin and none of those actions were getting tracked: coupons appeared in the system with no record of who issued them, when, or against which claim. That was a real audit gap.
Now every coupon action runs through the portal:
- Coupons are created against a specific claim, with the customer, amount, expiry, and reason captured automatically.
- Updates and cancellations are one-click and instantly reflected in WooCommerce.
- Every action lands as an order note on the customer's source order and in the internal audit log.
The team gets the speed of doing it in one place, and the business gets a complete trail behind every coupon ever issued.
Refunds, with duplicate prevention built in
Refunds are issued directly from the portal — one click, hits the e-commerce store, logs the order note. The dangerous edge case in any refund tool is the same one: an executive double-clicks the button, the network is slow, and the customer gets refunded twice. We hardened against it on three layers:
- Database — a CHECK constraint that prevents both a refund and a coupon being recorded against the same claim.
- Edge function — idempotency keys on every refund call to WooCommerce; the second click no-ops instead of issuing a second refund.
- UI — the refund button disables the moment a refund is in flight and stays disabled once one has been issued for that claim.
A double refund isn't possible from this portal. The team can move fast without that fear.
#1031849 · A. Lindgren
Where AI does the first pass
Every photo uploaded to a quality claim is run through a vision model that scores the issue — type (mold, damage, taste, weight, packaging), severity, and a confidence number.
- Claims with high-confidence routine issues flow through the standard executive path.
- Claims below the configured confidence threshold are auto-routed to admin for human approval before any compensation goes out.
- The score is always shown to the executive and the admin — never hidden, never blindly trusted.
The executive gets a pre-filled summary of what the photo shows and the suggested category. They confirm or override in one click. Manual classification on routine claims effectively disappears.
How we measure the team
Service-executive performance is tracked directly inside the portal:
- Claims resolved per executive — volume signal.
- Average AI confidence score across the claims an executive raises — quality signal.
The second metric is the more interesting one. An executive whose average confidence is consistently low is raising borderline or weak claims. An executive whose average is consistently high is reading customer issues correctly. The data is right there in the dashboard, alongside resolution time and market split, so coaching conversations are grounded in evidence rather than impressions.
Dashboard
What changed for the service team
From three different no-code apps and a folder of spreadsheets, to one console that knows about every market, talks to every source system, and leaves an audit trail behind every action.
The bigger structural win: source systems are now the single source of truth. Service executives no longer jump into WooCommerce to issue coupons or refunds, so the audit hole is closed. Time saved per claim is significant — what used to mean tool-switching across multiple tabs is now done in one console with AI-assisted classification and one-click resolution.
The team is faster, the work is better tracked, and the business has full visibility into how each executive is operating.
How we built it
Production stack from day one. Security and audit posture were non-negotiable.
- React + TypeScript on Vite, Supabase backend. Postgres for read-cache and internal tables, Supabase Auth for sign-in, Supabase Storage for ticket debug attachments. Row-level security on every table; market-scoped policies; an INSERT-only audit log.
- Supabase Edge Functions for every external call. Zero third-party credentials in the browser. Every WooCommerce, claims-API, Make.com, or AI request goes through a Deno edge function with secrets stored only in Supabase. The portal client only ever talks to Supabase.
- Three WooCommerce store integrations. One per market, with order fetch, refund creation, coupon create/update/cancel, and order-note logging. Each store treated as an independent source of truth.
- Claims REST API integration. Read and write against the company's existing claims database — list refresh, single-claim live refresh, and writes that go straight back to source.
- Make.com webhook for customer comms. Coupon issuance and customer emails dispatched through the company's existing automation platform; the portal never sends customer messages directly.
- OpenAI Vision for claim photo analysis. Confidence-gated; routine flows through, low-confidence routes to admin.
- Sentry for frontend error tracking. Every error tagged with route, user role, and market.
Closely related: our build for a field operations company — a different stack, same operating principle of wrapping a multi-tool reality in one console with proper audit and AI assistance. More on the kinds of systems we ship in our services.
Frequently asked
How do you build a customer service portal for WooCommerce?
We build it as a standalone app with a Supabase backend that talks to WooCommerce's REST API through Supabase Edge Functions — never directly from the browser. The portal owns workflow, AI assistance, and audit; WooCommerce stays the source of truth for orders, refunds, and coupons. For this build we used React + TypeScript on Vite with Supabase Postgres, Auth, and Storage.
Why build a custom service portal instead of using Zendesk or Gorgias?
Off-the-shelf helpdesks are ticket-shaped — they don't natively integrate with WooCommerce orders, write back to a custom claims database, or trigger Make.com automations on resolution. A custom portal gives the team one console that talks to all those systems together, with audit trails written into both source systems and an internal log. The trade-off is build cost; the payoff is a workflow that matches how the business actually operates.
How can AI help with quality claim resolution in e-commerce?
We run every uploaded claim photo through a vision model that classifies the issue (mold, damage, taste, weight, packaging) and assigns a confidence score. High-confidence claims flow through the standard executive path; below-threshold claims auto-route to admin for human approval. Manual classification on routine claims effectively disappears, while humans still own every judgement call.
How do you keep WooCommerce as the source of truth when adding a custom portal on top?
By treating the portal's database as a read-cache only, never as the system of record. Order detail is fetched live from WooCommerce every time it's opened. Every refund, coupon, and order-note write goes through a Supabase Edge Function back to WooCommerce. Nothing in the portal's database is authoritative for customer or order data — list-view caching is the only thing it does locally.
How do you measure customer service team performance using AI?
Two visible metrics per executive: claims resolved (volume) and average AI confidence score across the claims they raise (quality). The second metric is the differentiator — a low average flags executives who consistently raise borderline claims; a high average means they're reading customer issues correctly. Coaching becomes evidence-based instead of impression-based.
Other case studies
Field Operations Platform for Multi-Project Staffing & Coordination
A unified field operations platform that lets a small admin team run multiple parallel projects with hundreds of people deployed across different locations. One system for staffing, scheduling, in-app attendance, end-to-end travel and carpool coordination, AI-reviewed expenses and onboarding, AI-summarised field notes, live earnings, compliance, automated daily reporting, and direct Claude access for admins via the Model Context Protocol (MCP).
Role-Aware Claude MCP + Company Second Brain
A Claude.ai connector that lets every member of an operations team chat with live production data — each person scoped by role, with a company second brain on top.
Bin Trim Field Audit App
A mobile-first field auditing tool for waste management operations — GPS-tagged inspections, AI-assisted anomaly flagging, and automated compliance reporting.
Start a conversation
Ready to build something
that actually works?
No hard sell. We listen, understand your challenge, and tell you honestly whether we can help — and how.