01 in production

Fleet transportation — customer workflow automation

Client  Large regional fleet operator (name withheld) Industry  Transportation & logistics Engagement  Workflow automation · analytics · feedback loops

Hundreds of vehicles, multiple depots, a booking desk that never slept — and most of it still running on phone calls, email threads, and spreadsheets passed between shifts.

The problem

On the customer side, that meant slow quote-to-booking cycles, repeat calls for the same trip details, and no consistent way to handle anything beyond a standard route. A corporate client asking for a multi-stop move with timing constraints would sit in a queue while someone manually checked vehicle availability, driver hours, and pricing.

On the manager side, leadership was flying blind in patches. Utilization lived in one report, on-time performance in another, and customer complaints in a shared inbox nobody owned. Depot managers had local workarounds. HQ had weekly slides that were already stale by the time they were presented.

Feedback was the other leak. Post-trip surveys went out manually — sometimes. Responses came back days later, if at all. By the time someone flagged a recurring issue with a route or a driver, the pattern had already cost them repeat business.

They didn't need a flashy platform. They needed customer workflows that could run without constant hand-holding, and a single place where managers could see what was actually happening across the fleet.

What we built

We split the work into two tracks that had to stay connected: customer-facing automation on one side, and managerial visibility on the other.

Customer side — L1 and L2 booking automation

L1 handled the high-volume, predictable stuff: trip requests with fixed parameters, status lookups, reschedules, and basic availability checks. If a customer already gave origin, destination, date, and load type, the system moved the booking forward without a human retyping it.

L2 picked up everything L1 couldn't safely close: multi-leg routes, contract pricing exceptions, tight delivery windows, and fleet reallocation. It didn't try to replace dispatch judgment — it gathered context, ran checks against vehicle and driver constraints, and handed managers a ready decision, not a blank form.

Managerial side — data capture and decision dashboard

We built a dashboard around metrics the operations team already cared about, not vanity numbers: OTIF (on-time in-full) by route, depot, and customer segment; fleet utilization; deadhead ratio; quote-to-booking time; first-contact booking completion; and CSAT with complaint recurrence tied back to specific routes and time windows. Every view was meant to answer a decision — reassign capacity, fix a problematic route, coach a depot, or repair a broken handoff.

Resource side — surveys and feedback loops

We automated post-trip feedback collection and routing. Responses were tagged by trip, vehicle class, and depot. Negative signals triggered review queues instead of dying in a spreadsheet, and recurring themes — late arrivals on a corridor, loading delays at a recurring pickup — surfaced weekly without anyone combing through forms.

Results
MetricBeforeAfter
Median quote-to-booking time6.2 hrs1.4 hrs
First-contact booking completion (standard trips)41%78%
OTIF (company-wide rolling 30-day)84%91%
Fleet utilization (active deployment hours)62%71%
Deadhead ratio18%13%
Post-trip survey response rate9%34%
Median time to close recurring complaint themes11 days3 days

Booking-desk load dropped enough that the same team could handle roughly 2.3× inquiry volume without adding headcount. Depot leads moved from stale end-of-week slides to using the dashboard daily for morning standups. The bigger shift was cultural: customer issues stopped disappearing into individual inboxes, and feedback actually looped back into scheduling and route planning.

What went wrong

We connected automation to messy source data. Booking flows went live while vehicle availability and driver-hour records were still inconsistent across depots. L1 started creating duplicate holds on the same asset, and dispatch spent two weeks cleaning up conflicts that looked like bugs but were really data hygiene we should have fixed first.

The first dashboard had too many KPIs. Version one showed everything on one page — utilization, OTIF, cost per mile, idle time, NPS, escalation rate, survey volume. Depot managers opened it twice and went back to their spreadsheets. We cut it to six decision-grade metrics before daily usage stuck.

L2 went out before L1 was stable. Sales pressure pushed a "full automation" demo. Complex bookings auto-routed while basic status updates still misfired on edge cases, so customers hit a polished front end with broken back-end handoffs. Escalations spiked for three weeks until we froze L2 and hardened L1.

Survey timing was off at the start. Firing feedback requests immediately on trip completion kept response rates in single digits. Moving the prompt to 2–4 hours post-delivery, with one reminder, changed the curve completely — obvious in hindsight, expensive to learn in production.

We underestimated regional operating rules. One booking-logic path worked for urban depots and failed quietly for intercity routes with different documentation requirements. We had to map depot-specific rules explicitly instead of assuming one national playbook.

Lessons learned
  • Clean the operational data before you automate the customer layer. Automation multiplies boring errors — duplicate VIN mappings, stale availability, mismatched depot codes — at speed. A two-week audit upfront beats a messy month later.
  • Managers don't want more metrics. They want fewer, trusted ones. If a number doesn't change a decision that week, it probably shouldn't be on the home screen.
  • Automation tiers need sequencing, not a big-bang launch. L1 earns the right to run L2; stable routine handling builds the trust to let complex cases flow through programmatic checks.
  • Feedback loops are a product problem, not a survey problem. Timing, channel, and routing matter as much as the questions.
  • Transportation is regional even when the brand is national. Build rule flexibility early or pay for rework when scale hits.
02 in production

Construction — project intelligence & business development engine

Client  Mid-to-large construction corporate (name withheld) Industry  Commercial construction Engagement  Cross-team AI workflows · knowledge access · drawing-to-BOQ intake · BD pipeline

Multiple active sites, a lab team handling specs, site managers chasing progress, procurement moving orders through a chain that never quite lined up. Everyone working hard. Nobody working from the same picture.

The problem

Managers kept project context in WhatsApp threads, email chains, and site-visit notes. The lab team got updates late or not at all — a concrete-mix question needing a same-day answer would sit until someone forwarded a screenshot. When a supplier delay hit, the site found out after crews were already mobilized.

Project knowledge existed — drawings, BOQs, approval history, vendor quotes, site logs — but it was scattered. A junior engineer asking "what did we finalize for façade spec on Block C?" meant paging three people. Senior managers had no lightweight way to check alignment without calling a meeting.

On the business development side, the team was drowning in opportunity noise. Tender notices arrived from portals, contacts, and forwarded PDFs. Qualifying a lead meant manually opening documents and guessing fit. Good opportunities were missed because they arrived late; weak ones ate prep time anyway.

The slowest part of bid prep was always the same: getting from 2D tender drawings to a usable quantity position. Someone had to sit with architectural and structural sheets, run manual takeoffs, and build a draft Bill of Quantities before pricing could even start. Off-the-shelf tools existed, but none matched how this company structured BOQ sections, described line items, or handed work from BD into estimating.

What we built

We approached this as three connected systems — live project coordination, upstream business development, and a custom drawing-intake layer that fed the BD desk.

Project intelligence — manager-to-lab sync & material chain

AI workflows sat across the conversation and data layers, not inside a dashboard nobody would check on site. When a manager flagged a spec question or approval blocker, the workflow pulled relevant context and routed it to the lab queue with the right background attached — not a bare "please advise." Material-chain triggers linked BOQ line items to procurement status and site readiness, so a slipped cement delivery on a job with a pour in 48 hours escalated to the site lead and procurement instead of waiting for a weekly call.

A tiered-access knowledge base let anyone query by role and depth — a supervisor pulling today's approved drawing revision, a PM pulling full change history — with answers tied to indexed source records, not chatbot fluff. It deployed on WhatsApp, because that was already where managers, engineers, and coordinators talked. No new login, no training deck.

Business development engine

The engine continuously ingested market signals from public and licensed sources, normalized them into one opportunity feed, and scored each lead for fit against active sectors, geography, project size, and delivery capacity. Duplicates were collapsed and low-fit noise filtered before it hit anyone's desk. Each qualified opportunity arrived as a structured brief — scope summary, key dates, contract band, compliance flags, relevance score — so BD managers worked a daily prioritized queue instead of a raw dump. The team still made every bid/no-bid call.

Drawing intake — 2D recognition & BOQ generation

A custom drawing-intelligence tool, tuned to this company's measurement conventions, read 2D tender sheets, identified measurable elements by trade section, and ran automated takeoff against their BOQ structure — substructure, superstructure, finishes, MEP allowances, external works — with standard units and descriptions aligned to how their bills are normally issued. Output was a draft BOQ ready for QS review, a takeoff abstract, and a scope summary. When a qualified tender landed with drawings attached, the workflow kicked off automatically and produced a full tender-intake bundle, so estimators started from a reviewed draft and spent their time on rates, risk, and exclusions — the work that actually wins or loses a bid.

Results
MetricBeforeAfter
Median manager-to-lab response (urgent)31 hrs6 hrs
Material delays caught before site impact~22%74%
Time to retrieve a verified project decision45+ min<2 min
Weekly alignment meetings per project4.11.6
Tenders reviewed per BD manager / week8–1235+
Bid prep lead time (ID to draft)11 days6 days
Drawing-to-draft-BOQ turnaround4–5 dayssame day
QS hours on first-pass takeoff / tender28–36 hrs9–12 hrs
Tender win rate (qualified pipeline)14%21%
Duplicate / conflicting lookups / month194

Site teams stopped treating the lab as a black box. BD went from reactive inbox-clearing to working a ranked pipeline — fewer random leads, more time on winnable ones. The drawing tool didn't replace the quantity surveyor; it removed the blank-page problem. Bid meetings started with quantities on the table instead of a promise to "have the BOQ by Thursday."

What went wrong

The WhatsApp bot answered too confidently, too early. The first version pulled from partial indexes and gave clean, wrong answers on drawing revisions that hadn't been uploaded yet. Two engineers acted on outdated spec guidance before we added source citations and an "unverified — escalate" fallback. Adoption dipped for three weeks.

Manager-to-lab sync assumed consistent input. Some managers sent tight, labeled updates; others dumped voice notes and photos with no project tag. The lab started ignoring automated tickets that still needed cleanup. Three lightweight required fields in WhatsApp — not a full form — dropped the noise fast.

Material-chain triggers fired on incomplete BOQs. Automations ran before line items were validated, sending false escalations to procurement for materials not yet on order. We gated triggers behind BOQ sign-off and rebuilt confidence notification by notification.

The BD engine surfaced volume before precision. Loose initial scoring produced 40+ "qualified" leads a week, and the team ignored the feed entirely. Tighter fit rules plus a human review gate for borderline scores brought it down to an actionable daily queue. Quality had to come before coverage.

The drawing tool struggled with bad tender PDFs. Scanned sheets, missing title blocks, and mixed scales produced confident-but-wrong quantities — one draft double-counted façade area because a reflected ceiling plan was read as a floor layout. Mandatory drawing-register validation and a low-confidence flag made QS review a hard gate, not a nice-to-have.

Auto-generated BOQs used the wrong measurement convention once. The company priced some contracts elementally and others by trade; the tool defaulted to trade sections, and one bundle had to be restructured by hand. Mapping contract type at intake — not after generation — fixed it.

Lessons learned
  • Meet teams where they already work. WhatsApp wasn't the "enterprise" choice on paper — it was the only channel that would actually get used on site. Convenience beat architecture every time.
  • AI handoffs need structure, not just intelligence. A small amount of required context at the point of capture saves a lot of cleanup downstream.
  • Automate detection, not decisions, on the material chain. Flagging risk early worked; auto-resolving procurement on unverified data created alert fatigue.
  • BD automation wins on qualification, not collection. The value wasn't "find more tenders" — it was to stop wasting senior time on tenders that were never a fit.
  • Project knowledge systems live or die on source trust. Citations and escalation paths aren't polish on a live site — they're safety.
  • Draft BOQ is not issued BOQ. The win was speed to a reviewable draft, not eliminating the QS. Teams that treated the output as final pricing got burned; teams that treated it as a head start saved days.
  • Customize to how the company bills, not how the software industry bills. Building around their BOQ sections, units, and BD handoff is what made the tool stick.
03 in production

Logistics — AI-driven adaptive learning & ERP training

Client  Large logistics & trucking enterprise (name withheld) Industry  Transportation & fleet operations Engagement  AI training platform · ERP adoption · role-specific enablement

A proprietary ERP patched together over years — a powerful system and a terrible teacher — with a workforce of high-turnover drivers, rotating dispatch shifts, and quarterly sales onboarding all using it differently.

The problem

The workforce was all over the map: drivers with high turnover, dispatch coordinators on rotating shifts, sales reps onboarding every quarter, and a small technical team keeping the platform alive. Everyone touched the ERP differently, and almost nobody had a clean path to learn it. Three problems kept showing up.

ERP complexity at the field level. Drivers and floor staff struggled with fueling and fleet modules — wrong entries, missed steps, duplicate logs. A bad fuel-stop record didn't stay a training issue; it showed up as dispatch delays, reconciliation headaches, and compliance flags downstream.

Training ate senior time. Experienced sales managers and ops leads hand-held new hires through playbooks and walkthroughs for hours every week — time taken directly out of revenue work and route planning.

One manual for everyone. Static PDFs and slide decks treated every role and pace the same. Sales reps skimmed, drivers never opened them, technical staff needed depth the manuals didn't have. Engagement was low and performance inconsistent across depots.

What we built

We built a custom AI-augmented learning platform that worked as a 24/7 tutor — role-aware, source-backed, and tied to how the company actually operated.

RAG-powered knowledge engine

We indexed the full internal library — ERP manuals, module guides, sales playbooks, safety protocols, dispatch SOPs — into a retrieval-backed Q&A layer. Employees could ask plain questions like "How do I log a fuel stop?" and get step-by-step answers with source references. If the answer wasn't in the knowledge base, the system said so — which mattered on compliance-sensitive workflows.

Role-specific training paths

Different curriculum tracks by function: sales got outreach simulations and CRM/playbook drills tied to their real motion; drivers got interactive ERP navigation and fueling-compliance walkthroughs on mobile-friendly modules; technical staff got deeper maintenance, troubleshooting, and escalation paths. Same platform — different entry point, depth, and certification bar.

Adaptive learning logic

The system tracked where each user struggled in real time — failed items, repeated help requests, slow steps — and adjusted difficulty, surfacing extra practice when someone stalled on fuel logging or dispatch handoffs. Fast movers weren't forced through remedial slides; people who needed reps got them without waiting for a manager to notice.

AI assessment & admin visibility

Tests were generated from the same source material, scored instantly with qualitative feedback on gaps rather than a bare pass/fail. Leadership got a readiness dashboard — completion by role, module-level weak spots, certification progress, and heatmaps of where live-ERP errors still clustered after training. The loop closed between what we taught and what still broke in production.

Results
MetricBeforeAfter
Median time to operational proficiency (new hires)~4.5 wks~1.3 wks
ERP user-error reports (fleet & fueling)baseline−90%
Internal ERP how-to support tickets140 / mo28 / mo
Senior-manager hours on manual onboarding~18 hrs/wk~3 hrs/wk
Fuel-stop logging accuracy (audit sample)81%96%
Module completion rate (role-assigned paths)52%89%
Employee confidence in role tooling (survey)85% higher

Onboarding shifted from a manager-led bottleneck to a mostly self-serve path with checkpoints. Drivers cleared ERP certification before their first solo route instead of learning through mistakes, and training became something people actually used mid-shift when they hit an edge case — not a one-time orientation event.

What went wrong

Early answers pulled from outdated manuals. The knowledge base launched before every document was reconciled to the current ERP version. For about ten days the tutor confidently explained a fuel-logging flow replaced two releases ago, and driver trust dropped hard until we added version tags and a "last verified" stamp on every answer.

Drivers needed it on the road, not at a desk. The first build assumed stable connectivity and a full browser session. Load times at fuel stops and patchy signal made it frustrating, so we shipped lighter mobile modules and cached the highest-frequency guides offline. Driver usage moved only after that.

Adaptive pacing was too aggressive at launch. The algorithm advanced people quickly to keep engagement up, and assessment failures spiked on dispatch and compliance modules — people passed screens without retaining steps. We slowed progression and added mandatory practical checkpoints.

Sales simulations felt fake until we rewrote them. Generic role-play got ignored as "training homework." Once scenarios mirrored real objection patterns and account types from their playbooks, completion and scores improved together — the content layer mattered as much as the AI layer.

Readiness heatmaps landed wrong with middle management. Ops leads read team weak spots as surveillance, and two depot managers stopped assigning modules. Reframing the dashboard around "where to coach" — and giving leads control of remediation — got adoption back.

Tribal knowledge wasn't in any manual. Senior dispatchers knew workarounds the docs never captured, and RAG can't retrieve what was never written down. We ran structured capture sessions with tenured staff and fed those into the knowledge base.

Lessons learned
  • Training for ERP adoption has to live in the language people use. Drivers think in fuel stops, load checks, and handoffs — not "modules." Tutorials framed in their terms got used; manual language didn't.
  • Source-verified answers are non-negotiable on operational systems. A wrong training answer in logistics isn't embarrassing — it's expensive. Citations, version control, and explicit "I don't know" built more trust than smoother prose.
  • Adaptive learning needs guardrails, not just speed. Personalization works when it catches struggle early; it fails when it optimizes for completion over retained competence.
  • Role-specific paths aren't cosmetic. Sales, drivers, and technical staff needed different outcomes, certification criteria, and practice environments — not different skins on one course.
  • Automating training doesn't remove managers — it changes their job. The 15+ hours reclaimed weekly shifted from repeating basics to coaching on exceptions and account strategy.
  • Capture tribal knowledge before you scale the engine. RAG is only as good as what's indexed, and the last mile of training content often lives in people's heads until you go get it.
04 in production

Commercial property — tenant maintenance SLA engine

Client  Multi-building commercial property group (name withheld) Industry  Commercial real estate & property management Engagement  Maintenance intake · lease-backed SLA routing · contractor coordination

A portfolio of office and retail buildings — dozens of tenants, multiple property managers, a contractor roster that changed by trade and borough. On paper every tenant had a lease; in practice, maintenance ran on whoever answered the phone fastest.

The problem

Requests came in everywhere: tenant emails, WhatsApp voice notes to the building supervisor, front-desk scraps, calls straight to contractors who'd worked the building before. The same AC fault could get reported three times through three channels before anyone treated it as one incident.

Leases didn't help. HVAC response times differed from plumbing; common-area issues followed another clock; some retail tenants had after-hours clauses, office tenants didn't. PMs kept PDF lease extracts in personal folders and guessed at obligations under pressure. Breaches surfaced when tenants threatened to withhold rent — not when the clock actually started.

Contractors often showed up blind: no fault history, no prior ticket on the unit, no record of the part replaced six weeks ago on the same floor. Repeat callouts were common, and so were disputes over who was responsible — landlord, tenant fit-out, or shared services.

They didn't need a tenant-facing app tenants wouldn't use. They needed intake that respected lease terms, stopped duplicate chaos, and gave PMs a live picture of what was breaching, what was about to breach, and what kept breaking in the same units.

What we built

We built a maintenance SLA engine that sat between tenant intake and contractor dispatch — lease-aware, channel-agnostic, and tied to unit history.

Unified intake across channels

Requests were normalized from email, WhatsApp, web forms, and front-desk entry into one ticket structure — building, unit, category, urgency, tenant contact. Voice notes and messy messages were parsed into structured fields with a human confirm step when confidence was low. Duplicate detection ran against open tickets on the same unit and category, so three reports of one leak became a single incident with a timeline, not three dispatches.

Lease-backed SLA assignment

Each unit was linked to active lease terms. When a ticket landed, the engine pulled the relevant obligation — response window, resolution target, after-hours rules, landlord vs. tenant flags — and stamped a countdown. A retail HVAC item with a 4-hour clause got a different clock than a next-business-day office plumbing job. Where leases said "reasonable time," PMs set building-level fallback rules once instead of re-debating every ticket.

Priority queue & escalation

Tickets sorted by time remaining, repeat-fault weighting, and tenant tier. Approaching breach escalated to the assigned PM; breached tickets surfaced on a dedicated view with elapsed time and a blocker reason — contractor acceptance, access denied, parts delay, responsibility dispute.

Contractor brief generation

On dispatch, contractors received an auto-built brief: unit history, prior tickets on the asset, current photos and notes, access instructions, and a lease-responsibility summary — pushed through the channel they already answered, not a portal they'd never open.

PM dashboard

Property managers got a building-level operations view: live SLA breaches with age and owner, mean time to first action by building and trade, repeat-ticket rate by unit, contractor response lag, a responsibility-dispute queue, and upcoming lease-driven risk. Every view answered a decision — reassign, call the tenant, escalate to legal, or flag a building-systems problem worth capex review.

Results
MetricBeforeAfter
Maintenance SLA breach rate (response window)23%7%
Median time to first action (urgent)5.8 hrs1.6 hrs
Duplicate dispatches on same incident~31%6%
Repeat ticket rate (same unit, 90 days)19%9%
Contractor callbacks for missing context4.2 / job1.1 / job
Rent-dispute escalations tied to maintenance14 / qtr3 / qtr
PM hours on manual chasing & status~22 hrs/wk~6 hrs/wk

Complaints about silence dropped sharply — PMs started seeing breaches hours before the clock ran out instead of learning about them from angry emails. The repeat-fault view even caught a cooling-tower issue across one retail floor that had been treated as isolated tenant problems for months: one capex conversation replaced a dozen band-aid callouts.

What went wrong

Lease data wasn't as clean as the portfolio spreadsheet suggested. Early tickets pulled wrong SLA windows — an old revision still indexed, or a renewed term not linked to the unit. Two retail tenants got incorrect breach alerts before we added lease effective-date validation and a manual override log.

WhatsApp voice notes were harder than expected. Background noise in mall units and fast, mixed-language speech misfired on unit numbers and trade categories. We added a 30-second confirm screen for front-desk staff before the SLA clock formally started — slightly slower, much more accurate.

Contractors ignored the digital brief at first. Several still called the supervisor: "just tell me what's wrong." Uptake improved when we moved the critical info — unit, access code, fault summary — into the SMS job-acceptance message they already reacted to.

Building supervisors bypassed the system under pressure. When an anchor tenant called directly, supervisors dispatched their usual plumber and logged nothing. Rather than block informal relationships, we added a fast "retroactive log" path on mobile so capture happened even when the call came in hot.

"Reasonable time" clauses created arguments, not automation wins. The engine couldn't resolve ambiguous language, and disputed tickets piled up. We narrowed auto-SLA assignment to explicit time-bound clauses and routed ambiguous items to a human triage bucket with a 2-hour internal target.

Duplicate detection was too aggressive on common-area tickets. A water leak reported by three tenants got merged with a separate bathroom issue nearby because building and trade matched. We tightened merge rules to require a unit match or explicit common-area tagging.

Lessons learned
  • SLA automation starts with lease truth, not ticket volume. Get unit-to-lease linkage right before you automate countdowns.
  • Intake normalization beats asking tenants to use a portal. Meet the request at the channel they already use — email, WhatsApp, the front desk — and structure it on the back end.
  • Contractors are users too, but on their terms. A perfect brief in a portal they'll never open is useless; push minimum viable context through SMS or a phone summary.
  • Repeat-fault tracking is a capex signal, not a helpdesk metric. A unit throwing HVAC tickets every six weeks gives PMs leverage in landlord decisions, not just faster closes.
  • Ambiguous lease language needs a human lane. Automation handles explicit obligations well; "reasonable endeavours" needs a triage rule, not a fake precision timer.
  • Capture informal workflows or they'll undermine the system. Supervisors will always take a direct call from a big tenant — design for retroactive logging instead of pretending the bypass won't happen.

Want to see what this looks like for your operation?

Four engagements, same pattern: build close to the work, measure what moves. The fastest way to see if it fits your operation is a conversation.

thoughtscape
YVR · Canada
Bentall Centre
505 Burrard St, BC
ISB · Pakistan
1, Civic Center
Bahria Town Phase 4
Explore
Company
Contact
© 2026 Thoughtscape · All rights reserved
PrivacyTermsSecurity↑ top