Case Studies → Multi Truck Group
LOCAL SEOGOOGLE BUSINESS PROFILEREPUTATION MANAGEMENT2022

Multi Truck Group — #1 Local Pack
in 11 Canadian Cities

Transformed a 3.2★ invisible Canadian freight company into a 4.8★ Local Pack leader across 11 cities — from Vancouver to Halifax — in 90 days through systematic Google Business Profile optimization, citation cleanup, and AI-assisted review generation.

+312%Maps Views
3.2→4.8★Rating
TOP-311 Cities
+94New Reviews

THE CHALLENGE

Client’s Challenge

Multi Truck Group is a Canadian coast-to-coast LTL/FTL freight carrier with 12 operational depots and decades of route experience. On paper — a solid regional player. In Google’s Local Pack — invisible. The 3.2★ aggregate rating, crusted with a decade of unanswered one-star rants, put them below the “trust threshold” Google’s Possum filter enforces for the 3-pack.

Their three biggest competitors — Day & Ross (DR 68), Manitoulin Transport (DR 61), and TFI International (DR 74) — weren’t better operators. They just had 300-800 reviews at 4.4-4.6★ and a single NAP across 40+ citations. Multi Truck Group had 47 reviews, inconsistent address formatting on 18 of 50 directories, and a single GBP for the head office — zero local profiles in the other 11 cities they actually served. The AI-assisted dispatch app they built in-house was award-worthy; nobody could find them on Google to use it.

  • 3.2★ aggregate on 47 reviews — below Possum filter’s 4.0★ trust floor
  • 18/50 citations with NAP mismatch — BrightLocal audit flagged every major directory
  • 1 GBP for 12 cities — no local relevance signals in Toronto/Vancouver/Calgary/Montreal/Ottawa/Edmonton/Winnipeg/Halifax/Victoria/Saskatoon/Hamilton
  • 6 months of zero GBP Posts — Google ranks fresh profiles higher
  • 3 photos total across all profiles — Google benchmark is 20+ for engagement
  • Negative reviews unanswered for up to 11 months — reputation bleed + trust signal damage
  • Competitors sitting at DR 61-74 with 300-800 reviews — can’t out-spam, must out-system
  • 90-day window — Q4 freight season starting, CEO committed revenue forecast to the board
ClientMulti Truck Group
IndustryFreight / LTL & FTL Carrier
MarketCanada — 11 major cities
Year2022
Duration3 months intensive + ongoing retainer
ServicesLocal SEO, GBP Optimization, Reputation Mgmt, Landing Pages
StackPython, GBP API, BrightLocal, Twilio SMS, Anthropic Claude

OUR METHODOLOGY

How We Solved It

A 6-phase 90-day intensive: audit and baseline every signal Google reads, rebuild the citation foundation, engineer a review-generation pipeline that respects the customer, then layer local landing pages and monitoring on top. Every phase measured against the Possum-filter trust floor and the 11-city Local Pack board.

01

GBP Audit & 12-City Expansion

BrightLocal baseline across 50 directories + Google Business Profile rebuild for every operational city — one HQ profile became 12 local profiles with city-specific service areas, hours, and depot photos.

Baseline: 18/50 citations NAP-mismatched, Google Possum trust score flagged at red. New profiles launched with 25+ geotagged depot photos each (driver trucks, loading bays, dispatch office), GBP Posts schedule (2/week per city), FAQ seeded with top Ahrefs/Semrush “near me” queries. Separate categories set (General Freight, LTL Carrier, Trucking Company) — Google rewards specificity.

12GBP Profiles
300+Photos Added
2/wkGBP Posts Cadence
3 cat.Category Stack

02

Citation Cleanup & Foundation

85 Canadian directories synchronized to a single NAP canonical — the trucking / freight / logistics vertical stack plus every Tier-1 general-business citation Google still reads in 2022.

Canonical NAP locked in the internal CRM — address format, suite number, phone with +1 prefix, CA.gov-registered business number. Duplicate listings claimed and merged on 9 directories (BrightLocal detected 14 “possum siblings” confusing Google). Schema LocalBusiness + Service markup deployed on every city landing page. Industry-specific stack: CanadianFreight.ca, TruckNet, FreightWaves directory, DAT One, TCA member list.

85Directories
14Duplicates Merged
100%NAP Consistency
12×Schema’d Pages

03

AI Review Generation Pipeline

Twilio SMS trigger fires 24h after load-delivery confirmation; Claude Haiku 4.5 generates a personalised, conversational ask referencing the driver’s name and the specific route — no template spam.

Pipeline: dispatch system emits `delivery.completed` → webhook queues review job with Redis → 24h delay → Claude Haiku composes SMS under 160 chars referencing driver + Origin→Dest + a thoughtful one-line appreciation → Twilio sends → shortened GBP review URL with tracking ID. Opt-out path honoured per CASL/CAN-SPAM. Reply-rate: 18% (industry benchmark 3-5% for generic templates), 4.7★ average across 94 inbound reviews.

94New Reviews
4.7★Inbound Avg
18%Reply Rate
CASL ✓Opt-Out Honoured

04

Reputation Management (<2h SLA)

Every review — 4★ or 1★ — answered inside 2 hours during business, 8 hours overnight. Claude Sonnet 4.5 drafts, an ops human approves. Negative reviews get a resolution path, not a corporate stonewall.

Zendesk integration pipes every inbound GBP review into a queue. Claude Sonnet 4.5 drafts a reply grounded in the actual review content (referencing the route, the issue, the driver if named). Ops lead reviews and approves inside 2 hours (or dispatches to CX manager for high-severity). Negative reviews route to a named account manager with a phone-call-within-4h commitment. Response rate: 100% inside SLA.

100%Reply Rate
<2hBusiness SLA
Human-Approved
4hCall-Back (Neg.)

05

11 Local Landing Pages

City-specific landing pages for Toronto, Vancouver, Calgary, Montreal, Ottawa, Edmonton, Winnipeg, Halifax, Victoria, Saskatoon, and Hamilton — each under 1,800 words, Core Web Vitals green, intent-matched to freight/LTL/FTL local queries.

Template: city hero (depot photo + skyline overlay) → coverage map of the metro → service-area suburbs list (SEO anchor-rich) → embedded GBP map → 3 localized reviews → quote form routed to the city dispatcher. Internal linking mesh: every city page links to 2 neighbour-province cities + all service pages. Average DR 24 at launch, hit DR 38 across Canada-wide pages in 120 days.

11City Pages
1,800Words Avg
DR 24→38Domain Rating
CWV ✓All Green

06

Monitoring, Reporting & Handover

Weekly Local Pack rank grid across 11 cities × 8 keyword clusters = 88 rank cells tracked in Looker Studio. GBP Insights streamed to Datadog, Slack alerts on rating drop or negative-review surge.

Looker Studio dashboard pulls BrightLocal grid + GBP Insights API + Search Console + GA4 into one Canadian-market view. Slack alert thresholds: any profile drops below 4.5★, any negative review unanswered for >1h during business, Local Pack position drops from TOP-3 in any of 11 cities. CEO receives a 1-page monthly PDF. Client ops team trained; full runbook for ongoing internal management delivered in month 3.

88Rank Cells
SlackAlerting
1-pgCEO Monthly
TrainedClient Ops

PROOF OF WORK

Our Implementation


review_automation.py
# WebCoreLab — Multi Truck Review Generation Pipeline
import anthropic
import redis
from twilio.rest import Client as TwilioClient
from datetime import datetime, timedelta

GMB_REVIEW_URL = "https://g.page/r/CXxxx/review"
TWILIO_NUMBER = "+16475550199"

class ReviewSystem:
    def __init__(self):
        self.claude = anthropic.AsyncAnthropic()
        self.twilio = TwilioClient(SID, TOKEN)
        self.queue = redis.Redis(host='localhost', port=6379)

    async def send_review_request(self, delivery: dict):
        # Personalised SMS 24h after delivery.completed webhook
        msg = await self.claude.messages.create(
            model="claude-haiku-4-5",
            max_tokens=200,
            messages=[{"role": "user",
                "content": f"Write a friendly SMS asking for a Google review. "
                           f"Driver: {delivery['driver']}. "
                           f"Route: {delivery['origin']} → {delivery['dest']}. "
                           f"Under 160 chars. Conversational, not corporate."
            }]
        )
        self.twilio.messages.create(
            body=msg.content[0].text + f"\n{GMB_REVIEW_URL}",
            from_=TWILIO_NUMBER,
            to=delivery['customer_phone']
        )

    async def respond_to_review(self, review: dict):
        # Auto-draft response within 2h, human approves
        resp = await self.claude.messages.create(
            model="claude-sonnet-4-5",
            max_tokens=220,
            messages=[{"role": "user",
                "content": f"Review: \"{review['text']}\" "
                           f"Rating: {review['rating']}/5. "
                           f"Driver: {review.get('driver','N/A')}. "
                           f"Write a warm, specific, professional reply. "
                           f"If rating < 4, offer a resolution path."
            }]
        )
        return resp.content[0].text

# Q3 2022 baseline vs Q4 2022 after deploy:
# Reviews: 47 → 141 (+94 inbound at 4.7★ avg)
# Aggregate rating: 3.2★ → 4.8★
# Response rate: 12% → 100% within SLA
# Local Pack presence: 0/11 cities → TOP-3 in 11/11

THE RESULTS

Measurable Impact

Measured 3 months after campaign launch

3.2→4.8★
Rating
94 new reviews at avg 4.7★
+312%
Maps Views
Google Maps profile views
TOP-3
11 Cities
Local Pack in all 11
+189%
Directions
Requests from Maps
+67%
Phone Calls
From Google Maps

“We went from invisible on Google Maps to dominating the Local Pack in 11 cities. The review pipeline was the game-changer — customers actually appreciate a personalised follow-up with their driver’s name on it, and the rating went from 3.2★ to 4.8★ in three months. Q4 booked at record revenue.”

— I.M., Operations Director, Freight Carrier (NDA)

Ready for Similar Results?

Book Free AI Audit →