← All work

Coast Technology

RV shoppers get units from live stock, with towing fit computed, not guessed

We built the white label AI sales assistant Coast Technology puts on its dealers' websites. It recommends only units in each dealer's hourly inventory feed, explains why each fits, leaves towing and payment math to tools and sends leads into Coast's CRM.

Automotive & DealershipsAI sales assistant for dealersBuilt from zero

Widget: bunkhouse RV search with matching inventory result card

The challenge

Dealer websites offered static forms and filters, while shoppers ask about towing, payments and follow ups, over inventory feeds that differ by dealer and change every hour.

What we did

A tool-using LangGraph agent over Elasticsearch keyword and vector search, fed by an hourly sync, with towing and payment fit computed by tools and a plain answer when nothing matches.

The outcome

The assistant runs in production on Coast's dealer websites from Coast's own AWS account, recommending real units from live inventory and handing leads and appointments to Coast's CRM.

Runs
In production, in Coast's own AWS account
Grounded in
Each dealer's inventory feed, website pages and documents
Built for
RV, marine and vehicle dealers, U.S. and Canada
Languages
English and Spanish

The starting point

Coast Technology sells RV, marine and vehicle dealers a CRM and marketing platform with lead management, appointment scheduling and inventory feeds. Coast's product lead told us much of that product was already built; the gap was an intelligent assistant on each dealer's website.

What had to change

Dealer websites relied on static forms and search filters, so shoppers got no personal help and dealers got thin leads. Coast wanted an assistant that guides like a salesperson rather than a search bar, remembers budget, tow vehicle and sleeping needs, and always explains why it recommends a unit.

What could not break

  • Answers never invent stock or prices
  • Each dealer's inventory, website, branding and leads stay separate from every other dealer's
  • Inventory changes hourly, and feeds differ by dealer in fields, prices and categories
  • The widget runs on third party dealer websites, next to other widgets
  • Token cost is tracked and kept under control

The calls we made

We framed the assistant as a salesperson who can only sell what is on the lot: every answer starts from the dealer's own indexed data, every number comes from a tool, and an empty search is said out loud instead of guessed around.

  1. 01

    Search, not a CSV agent

    Our first flow let a CSV agent read inventory files. In the first sprint we replaced it with Elasticsearch keyword and vector search, fed by an hourly sync of each dealer's inventory API, so answers come from indexed, filterable units with exclusion and new versus used rules.

    Ruled out

    A CSV agent reading raw inventory files.

  2. 02

    A tool-using agent

    A dealer's first structured test, seven real prompts, found context lost between turns, repeated units and a wrong tow class. We reworked context and filters and rebuilt the flow as an agent with lead, vector search and Elasticsearch filter tools, with state in a PostgreSQL checkpointer.

    Ruled out

    The original node based LangGraph flow.

  3. 03

    Dealer math in tools

    Towing fit is computed from the truck's payload, less a 500 lb reserve, with tongue or pin weight at 13 percent, against each unit's real GVWR. Payment filters handle monthly payments in the U.S. and biweekly payments in Canada. The model explains the results; it does not calculate them.

  4. 04

    Honest fallbacks

    Coast asked for no false out of stock answers. When nothing matches, the assistant says so plainly, for example when no Class B unit fits a budget, and an empty search never turns into a confident near miss.

  5. 05

    Re-index only what changed

    Stale prices traced back to the hourly sync, so each unit's content is now hashed with SHA-256 and only units whose content changed are re-indexed, which also cut embedding calls.

How the system fits together

asksmessagehourlypages, fileschanged unitssearch, filterstowing, paymenttool callsrecommendslead toolshown in chatShoppersAsk in plain wordson a dealer siteDealer inventoryfeedsInventory API orCSV, changes hourlyDealer sites anddocumentsPages, FAQs and PDFsper dealerChat widgetFloating launcher,detail page embedIngestion andhourly syncHash diff, changedunits onlyTool-using salesagentLangGraph,…Dealer math toolsTowing fit andpayment filtersElasticsearchKeyword and vectorsearch per dealerOpenAI modelsLanguage model andembeddingsUnit cards withreasonsCarousel and detailcards in chatClient CRMLeads andappointments…
PeopleClient's existing systemBuilt by DaticsData storeAI modelAnswers come only from each dealer's own indexed inventory and content, kept per tenant. Towing and payment numbers come from tools, and qualified leads leave for Coast's CRM.

What we built

01

Inventory grounded search

An hourly sync indexes each dealer's feed into Elasticsearch for keyword and vector search, re-indexing only units whose content changed. Each dealer's website pages, FAQs and documents are indexed per tenant, so one dealer's content never answers for another.

02

Tool-using sales agent

A LangGraph agent with lead, vector search and Elasticsearch filter tools keeps conversation state in a PostgreSQL checkpointer with a connection pool and reconnect handling. It asks follow up questions built from inventory facets and routes service, parts, finance, hours and trade questions to the right department.

03

Towing and payment fit

Tools match units to a truck's payload against real GVWR and filter by monthly or biweekly payment, with payment values on the unit cards. Tow answers give GVWR, dry weight and hitch weight.

04

Leads into Coast's CRM

Lead, contact and appointment webhooks carry the shopper's details, the filters applied, the vehicle and an AI summary of the chat into Coast's CRM. On the receiving side, leads are assigned by dealership location and passed on to each dealer's own CRM.

05

Website widget

A floating launcher and an embedded widget on vehicle detail pages that picks up the unit from its stock number, with inventory carousels, unit cards showing sleeps, dry weight, length, slides and stock number, filter tags, and appointment and contact forms inside the chat.

How it works

Ask

A shopper asks in English or Spanish, for example what their truck can tow or which units fit a monthly payment.

Search

The agent filters and searches the dealer's indexed inventory, by keyword and by meaning.

Compute

Tools work out towing fit and payment fit from real unit weights and payment values.

Recommend

The assistant shows matching units in cards and explains why each fits, or says plainly when nothing does.

Hand over

The shopper books an appointment or leaves contact details, and the lead goes to the client's CRM with a chat summary.

A closer look

A towing question, answered from stock (illustrative)Sample data
Shopper: Our truck has 1,650 lb of payload.
         What can we tow that sleeps 6?

Assistant: After a 500 lb reserve, with tongue weight at 13%
of the trailer, your truck fits trailers up to 8,846 lb GVWR.
These units on the lot sleep 6 and fit:

  Stock R2214, travel trailer
    GVWR 7,600 lb, dry weight 5,480 lb, hitch weight 640 lb
  Stock R2231, travel trailer
    GVWR 8,200 lb, dry weight 6,050 lb, hitch weight 710 lb
  Stock R4087, hybrid camper
    GVWR 6,900 lb, dry weight 4,920 lb, hitch weight 560 lb

Would you like to schedule a tour of one of them?

What changed

The assistant runs in production for Coast's RV, marine and vehicle dealers, recommending real units from live inventory and handing leads to Coast's CRM. A dealer's own test drove the rebuild around tools, and re-indexing only changed units fixed stale prices and cut embedding calls.

In production on Coast's dealer websites
Status
Only changed units re-indexed each hour
Prices
89 passing when payment filtering shipped
Tests

Under the hood

Datics role
Built with a partner agency
Agent
A LangGraph agent with tools on OpenAI models and embeddings, conversation state in a PostgreSQL checkpointer on AWS RDS, and token usage logged per conversation.
Search and sync
Elasticsearch keyword and vector search, Redis, and Celery with RabbitMQ for the hourly sync, which re-indexes only units whose SHA-256 content hash changed.
Safeguards
Per dealer data isolation, inventory exclusion and new versus used rules, profanity safeguards, and no confident fallback when retrieval comes back empty.
Hosting
Dev and production on AWS (EC2 with Docker Compose, RDS PostgreSQL, Elasticsearch, Redis, S3, CloudWatch) with CI/CD on GitHub Actions, moved from our account into Coast's own AWS account while dealers were live.

AI and models

LangGraphOpenAI

Data and retrieval

ElasticsearchPostgreSQLRedis

Cloud and infrastructure

AWS

Apps and APIs

FastAPINext.js

How it shipped

  1. Core assistant

    A proposal and feature breakdown from the client's requirements document, then a core assistant with Elasticsearch search, persistent memory, forms and the first dealer bot.

  2. Knowledge, admin and analytics

    Knowledge bases from files, CSV and URLs, the inventory API, dealership and user management, analytics, personas per use case and safeguards against wrong words.

  3. Live dealers on real prompts

    Contact and appointment forms in the chat, AI chat summaries, token usage logging, multi filter search and boat use cases such as fishing and tritoon, while live dealers tested the assistant on real prompts.

  4. A rebuilt agent and new modes

    The agent rebuilt around tools, dealer website pages as knowledge, an embedded widget on vehicle detail pages and a rebuilt reporting module.

  5. Dealer math and hardening

    Payment filtering, content hash syncing, towing matching, department routing, document knowledge bases and fixes from a security audit checklist.

Tested on real dealer prompts

A dealer's structured test and real dealer prompts drove the context, filter and towing work, and each round of testing notes went back to Coast inside its own requirements document.

A few live dealers first

We recommended stabilizing with a few live dealerships before scaling, then kept improving the assistant in production as more dealer bots were indexed with their website pages.

Checked against the market

We reviewed competing dealer chat tools for Coast and later audited the assistant against them, which shaped the next proposals: lead scoring, memory across visits and routing frustrated shoppers to a person.

What this unlocked

Lead scoring by purchase readiness, memory across visits and frustration detection with routing to a person are proposed next.

Have a product with the same kind of constraints?

Tell us what already exists and what you want it to do. We will tell you what it takes.

Book a 30-minute Product Review