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
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.
- 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 outA CSV agent reading raw inventory files.
- 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 outThe original node based LangGraph flow.
- 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.
- 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.
- 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
What we built
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.
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.
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.
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.
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
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
Data and retrieval
Cloud and infrastructure
Apps and APIs
How it shipped
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.
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.
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.
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.
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.
Related work
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.
