GIG's ~37,000 reviews are an extraordinary, hidden and unused asset — insight, content and action sitting idle behind a star average. This pilot proves it: 1,000 reviews, labelled in 18 minutes on a local model at zero cost, already surface things the 4.48/5 headline hides. The real moat is human service and speed; the fixable money is in renewal and price-value perception, not claims; and at ~362 new reviews a month this is a live feed of customer truth nobody is mining. Scaled to all 37k — and run live — it becomes a standing engine for content, SEO/GEO, service recovery and positioning.
Said plainly, so nothing here is mistaken for more than it is. Each gap has a cheap fix.
| Question | Why not | Fix |
|---|---|---|
| How many reviews got a reply / were resolved? | No reply/resolution field in this export (6 fields only) | Re-export from eKomi with merchant-reply + reply-timestamp |
| How fast does GIG see & action them? | Internal cadence isn't in review data | Ask the team — and the live alert (§10) makes it measurable |
| Did the unhappy customers actually churn? | No retention/renewal outcome here | Join order_id to the renewal/policy system |
| Which product line is each review? | order_id encodes it, but we lack the codebook | GIG's product-code mapping (§15) |
J-curve: a wall of 5★ (726) with a hard 1★ pocket (55) larger than 2★+3★ combined — lovers and a committed-detractor minority, not a soft middle.
78.2% positive (±2.6%), 16.5% negative (±2.3%) at 95% confidence, n=1000.
"Representative service" and "speed/efficiency" dominate the conversation. "Other" (194) is inflated by the 29.2% of reviews that are ≤3 words — tighten the taxonomy before the 37k run.
Where the red concentrates is where to act. Service and speed are praise engines; renewal, pricing and digital carry the visible negativity.
% of each theme's reviews that name a concrete, fixable problem. By density, pricing, coverage and claims top the list; by volume the most actionable complaints sit in renewal (45) and pricing (35). Read both: density tells you where a theme is mostly grievance, volume tells you where the queue is longest.
The model reads the words, not the stars. 1–2★ are 100% negative (label sanity check passes), but 40 reviews scored 4★ while writing a clearly negative review and 15 did so at 5★ (a further 47 read neutral). This "satisfied-but-complaining" cohort is churn risk a CSAT score can't see.
Cadence: ~11.9 reviews/day (median 11.9, peak 23), ~83/week, ~362/month, across 82 of 84 days. At ~83/week, this 1,000-review pilot ≈ the most recent 12 weeks — i.e. effectively the latest reviews, not a sample. ~12 weeks reads direction only; too short for seasonality or YoY.
| Method | Valid here? | Note |
|---|---|---|
| Descriptive distributions + proportion CIs | Yes | n=1000 → ±~3% on a proportion at 95% |
| Chi-square: theme × sentiment / rating × theme | Yes | Small themes (claims n=32) = low power — caveat |
| Rating↔text-sentiment concordance | Yes | Doubles as label-quality validation (clean monotonic) |
| Length × sentiment test (H5) | Yes | Short reviews 90.4% positive vs long 73.2% |
| Weekly control charts | Limited | 12 weeks; direction only, no seasonality |
| Regression implying causation | No | Observational, self-selected reviewers |
| True NPS / product / branch cuts | No | No 0–10 scale, no product/branch field (needs GIG join on order_id) |
Bonus: the labelled corpus is in-tenant grounding data for a GIG support/FAQ assistant — PDPL-safe because nothing leaves GIG.
This report is GIG's own voice. The head-to-head needs a matched sample of competitor reviews — same pipeline, same taxonomy, same local model — then GIG-vs-market crosstabs on rating, sentiment, theme mix and actionable density. That's a data-acquisition step (public Trustpilot for named UAE motor insurers), not an analysis step. Decision needed: the competitor set and the go to source it.
The pilot is a snapshot. The same pipeline runs live — catching every at-risk review within hours of it posting, at $0.
How it works on the kit you already own:
qwen3:14b labels each (theme · sentiment · actionable · reason). No data leaves GIG; $0 per run.sentiment = negative, rating ≤ 2, or actionable = true.order_id and a one-line suggested action + draft reply.To go live: automate the eKomi pull (API or scheduled export). Classify → filter → alert is already proven (it's what produced this report). Can be prototyped against the existing export this week.
When someone asks ChatGPT, Gemini, Perplexity or Google's AI Overview "best car insurance in the UAE" or "is GIG any good", GIG should be the named, cited source. The review corpus is the raw material — customers have already written the questions and the proof.
FAQPage + AggregateRating (4.48/5 from 1,000+ verified reviews) + Review schema → rich-result eligibility and clean machine extraction.Model it on WIRED's Autocomplete Interview: a host peels question cards off a board and answers them. GIG's version — "GIG Answers the Web's Most-Searched Car-Insurance Questions" — sources its cards from the actual review complaints. The grievance becomes the FAQ; the FAQ doubles as the GEO content above. One asset, three jobs: trust-building video, social cut-downs, and AI-citation fuel.
Worked example — the pricing finding, traced end-to-end. Note: price isn't the most frequent theme (service is) — but when customers complain, it's the most concentrated grievance (70.0% of pricing mentions are actionable). So we answer it head-on instead of hiding from it.
| Card | VO answer (15–25s each) | On-screen / visual |
|---|---|---|
| "Why is GIG car insurance so expensive?" | "It usually isn't — it's priced to your car, your history and your cover. Here's the three things that move your premium, and two you can change today to bring it down." | Premium broken into 3 bars; the 2 controllable ones highlight green. |
| "How do I renew my GIG car insurance?" | "Sixty seconds. We send your renewal before it lapses — confirm, pay, done. Here's exactly where to tap, and what to check before you do." | Phone screen, the renewal tap-path; a "check your no-claims" callout. |
| "Is GIG car insurance actually any good?" | "Judge for yourself — 4.48 out of 5 across 1,000+ verified customers, and what they mention most is fast, human service. Not our words; theirs." | Rating badge; 3 real (anonymised) 5★ verbatims animate in. |
Pattern: each card = one real customer question, answered in <25s, structured so an AI engine can lift the answer verbatim. Produce with the existing Higgsfield pipeline (per GIGGulfReels). The pricing card turns the book's sharpest complaint into a transparency moment — the fastest trust win in the data.
1 · Testimonial reel. Script — a verbatim 5★ review: "I didn't need to do anything. Everything went smoothly, and my policies renewed automatically."
2 · Pricing card (Autocomplete). Script: "Why's GIG so expensive? Honestly, it usually isn't. Your premium comes down to three things: your car, your history, and the cover you choose. And two of those, you can change today to pay less."
End-to-end pipeline. Every step is reproducible; the labelling and analysis cost $0 and no customer data left GIG-controlled hardware.
reviews-2026-06-02.csv (1,000 records) on 2 Jun 2026. ⚠ Selection rule not documented — window is 09 Mar 2026–31 May 2026; treat as a recent slice, not a verified "latest 1000".qwen3:14b via on-device Ollama (localhost:11434), thinking-mode off, temperature 0, JSON-constrained to the fixed taxonomy. 1,000 reviews in 18.5 min, 0 errors, $0 (≈$1.35 if run on a frontier API).PII / PDPL: review_screen_name holds customer names and order_id ties to a policy — personal data. Kept on GIG-side hardware throughout; must be access-controlled and redacted before any external mirror.
| Field | Origin | Description | Type | Populated |
|---|---|---|---|---|
review_date | source | Unix epoch (UTC), review submitted | integer ts | 100.0% |
order_date | source | Unix epoch (UTC) of the underlying policy order | integer ts | 100.0% |
review_rating | source | Star rating 1–5 | int 1–5 | 100.0% |
review | source | Free-text review body (EN + ~2% AR) | text | 100.0% |
order_id | source | Structured policy ref — encodes account, line code, product letter, policy no. | structured str | 100.0% |
review_screen_name | source | Customer display name — PII (PDPL) | text | 100.0% |
ai_theme | derived | One of 9 taxonomy themes | enum | 100.0% |
ai_sentiment | derived | positive / neutral / negative (from text, not stars) | enum | 100.0% |
ai_actionable | derived | True = names a concrete, fixable problem | bool | 100.0% |
ai_reason | derived | ≤12-word rationale for the label | text | 100.0% |
Six source fields from eKomi; four derived by the local model. Note order_date ≠ review_date — the gap between buying and reviewing is itself analysable (e.g. time-to-review).
order_id — the product keyStructure: {account}_{line}/{product}/{policy_no}/… — e.g. 112661_13/VA/911401827/0/0. Parsed cleanly on 98.9% of rows. This is the join key to product line — GIG's codebook turns it from inference into fact.
| Code | n | % |
|---|---|---|
VA | 483 | 48.3% |
VP | 226 | 22.6% |
ZT | 148 | 14.8% |
FR | 82 | 8.2% |
VN | 19 | 1.9% |
BS | 15 | 1.5% |
VF | 5 | 0.5% |
VX | 4 | 0.4% |
VM | 4 | 0.4% |
VI | 1 | 0.1% |
EC | 1 | 0.1% |
PL | 1 | 0.1% |
| Code | n | % |
|---|---|---|
13 | 672 | 67.2% |
60 | 104 | 10.4% |
65 | 99 | 9.9% |
75 | 68 | 6.8% |
12 | 27 | 2.7% |
14 | 10 | 1.0% |
66 | 8 | 0.8% |
67 | 1 | 0.1% |
| Code | n | % |
|---|---|---|
112661 | 385 | 38.5% |
98996 | 167 | 16.7% |
112641 | 165 | 16.5% |
119673 | 145 | 14.5% |
119732 | 49 | 4.9% |
119667 | 24 | 2.4% |
150309 | 18 | 1.8% |
112666 | 12 | 1.2% |
Themes (9, single-label, model picks one): representative service · speed/efficiency · renewal process · digital app/website · pricing/value · communication clarity · coverage/product · claims handling · other.
Sentiment (3): positive · neutral · negative — read from the review text, independent of the star rating.
Actionable (bool): true only when the review names a concrete problem GIG could fix — this is what separates a gripe from a steer.
Guard-railed: any off-taxonomy label is forced to other/neutral rather than allowed to drift, so every row is comparable and auditable. Known weakness: the 29.2% of ≤3-word reviews inflate other — tighten the theme list (or add a "too-short-to-classify" class) before the 37k run.