An Austrian company that builds IT solutions for hotels and spas hired TwinCore to build an AI sales chatbot for ecommerce — a conversational assistant for its nopCommerce stores. Shoppers describe what they need in plain language; the bot finds the right product or service, answers store questions, adds products to the cart, and books services in chat with a QR ticket after payment. The store team installs the plugin, brands it, and goes live from the admin without a developer.

Country
Austria
Project duration
5 months
Team
  • 1 .NET developer
  • 1 Angular developer
  • 1 UI/UX designer
  • 1 QA engineer
Outcome
Shoppers describe what they want in plain language; the bot finds the product or service, adds a product to the nopCommerce cart or books a service in chat, and issues a QR ticket once the service payment clears

About the client

The client is an Austrian company that builds IT solutions for hotels and spas. Its offering includes nopCommerce online stores where guests buy products and vouchers and book treatments such as massages.

Single Plugin

covering both physical products and bookable services in nopCommerce

1 Widget

handling product search, store info, booking, cart, callbacks, and live-agent flows

Grounded AI

mapping every recommendation to a real product with accurate price and stock

Multi-LLM

configurable in the admin with the store’s own API key

AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas

What client received

  • Conversational product and service search

    Problem: On-site keyword search only matched product titles, so a shopper who described an item in their own words got few or no results.

    Result: The shopper describes what they want in free text and the bot returns matching products and services from the catalog, with price and availability. The more parameters a shopper gives, the tighter the match, so a query that returns a long list of loosely matched products in faceted filters returns a shortlist in one message.

  • Store-aware answers on delivery, hours, and returns

    Problem: Shoppers ask about opening hours, delivery times, and return policy before they buy, and product-only search cannot answer those.

    Result: The bot is grounded in store information alongside the catalog, so it answers delivery, hours, and policy questions in the same conversation, without sending the shopper to a separate FAQ page.

  • Booking overview and rebooking for returning guests

    Problem: Checking an upcoming appointment or adding another visit meant logging in and going through account pages, so a quick "what do I have this week" turned into navigation or a phone call.

    Result: A guest asks what is on their schedule and the bot replies with their upcoming bookings, including date, time, and duration. In the same message it can point out a free evening and offer to create a new booking, next to shortcuts to the full booking list and the webshop, so a schedule check turns into a rebooking opportunity.

  • Admin-controlled rollout, branding, and behavior

    Problem: Changing the assistant's look or behavior meant booking developer time for every tweak.

    Result: The team toggles the widget on or off, sets its color scheme and avatar, selects the LLM provider, and pastes its own provider API key (for example an OpenAI key) — all from the nopCommerce admin. Custom instructions that shape how the bot answers in specific cases are configured in the same place. Each hotel or spa store can get the widget in its own colors and avatar, running on its own LLM account.

  • Fallbacks that keep the lead

    Problem: When the bot cannot close a request, a dead end loses the shopper — for example when no slot is free, or when a question needs a human.

    Result: The bot captures a phone callback when there is no availability, and hands off to a live agent when a human should take over, so the store can retain the lead when automation cannot complete the request. The conversation stays intact through the handoff.

Solution

TwinCore built the assistant as a nopCommerce plugin (nopCommerce is an open-source .NET ecommerce platform) with an Angular chat widget on the front and a grounded retrieval layer behind it. The store installs one package; there is no separate service to host.

  • nopCommerce plugin — the widget, settings, and store-data access ship as one package installed from the admin
  • Angular chat widget — renders the conversation, product cards, option and date pickers, and the QR ticket on desktop and mobile
  • Store knowledge base — indexes catalog, prices, stock, and store information (hours, delivery, policies), refreshed when the underlying records change
  • Grounded answering (RAG) — matches a free-text request against the store index and answers from retrieved records; RAG is Retrieval-Augmented Generation, the pattern of grounding an LLM's answer in retrieved data
  • Provider-agnostic LLM layer — routes prompts to a configured provider through one interface, selected in the admin
  • Escalation paths — phone-callback capture when no slot is free, and live-agent handoff for cases a human should own
  • AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas screenshot 1
  • AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas screenshot 2
  • AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas screenshot 3
  • AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas screenshot 4
  • AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas screenshot 5
  • AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas screenshot 6
  • AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas screenshot 7
  • AI Sales Chatbot for Ecommerce and Reservation Systems: In-Chat Booking for Hotels and Spas screenshot 8
Previous slide
    Next slide

    The challenge

    The client wanted shoppers to reach a product or a bookable service by describing it, instead of clicking through category trees and filter facets. Standard on-site keyword search matches product titles and descriptions, so a shopper who describes an item by its use or specs can land on a short result list, and pre-sale questions about delivery or opening hours fall outside product search entirely.

    Two things made this harder than adding a support chatbot. First, selling from a live store means the assistant has to map a fuzzy request to real products with current price and stock, run a booking flow with dates and slots, write to the cart, and answer delivery and policy questions from indexed store data. Off-the-shelf chatbot tools could cover FAQ responses, but they did not provide the complete catalog, booking, cart, and QR-ticket workflow this project required.

    Second, connecting a raw LLM (large language model) straight to the storefront is unsafe: with nothing constraining it, the model can invent products, prices, and delivery terms that do not exist. The real work was grounding the model in the store's own data and giving it safe, controlled actions, not the chat bubble itself.

    How the AI sales chatbot for ecommerce works

    The same widget supports both physical-product purchases and service bookings, giving shoppers one conversational interface for both flows.

    Physical products. The shopper describes what they want, the bot returns matching products with price and availability, the shopper picks a variant and quantity, and the item is added to the standard nopCommerce cart. Checkout then follows the store's normal cart and payment flow.

    Bookable services. The shopper selects a service, then an option, a date, and an available time slot, and the booking is created in nopCommerce. Payment happens outside the chat. The bot first displays a QR code that opens the external payment page, and the payment details are also sent by email. After the payment provider confirms the transaction through a webhook, the bot returns a separate QR ticket for the booked service in the chat.

    The shopper can find a product or book a service without navigating catalog and category pages.

    Architecture and engineering decisions

    The build routes each shopper message through grounded retrieval before the model answers, and separates the two purchase paths behind one widget.

    • Product-type routing: one path for shipped goods (variant, quantity, nopCommerce cart) and one for bookable services (option, date, slot, booking, QR ticket).
    • External payment with webhook confirmation: services are booked in chat, paid through the store's payment provider outside the widget, and the ticket is released only after the provider's webhook confirms the payment.
    • Store knowledge base + RAG: product and service recommendations and store-information answers are grounded in catalog, availability, and policy data retrieved for the current query.
    • Provider-agnostic LLM layer: the admin selects the provider; the rest of the plugin is unchanged.
    • Admin configuration: on/off toggle, color scheme, avatar, LLM provider, provider API key, and custom behavior instructions.

    Engineering challenge: keeping recommendations accurate

    A core engineering challenge was making the model reliable enough for a live ecommerce storefront. An LLM will happily produce a plausible product name and price that the store cannot fulfill, and one wrong price shown in chat is a support ticket or a lost sale.

    The LLM does not create product, pricing, or availability data. Every recommendation is linked to a real nopCommerce product returned by the retrieval layer, including its product ID, price, and availability information. If retrieval returns nothing for a request, the assistant says so and offers the closest matches, a callback, or a live agent rather than inventing an answer.

    One tradeoff we made: provider-agnostic LLM layer over a hardwired API

    Wiring the bot directly to a single LLM API would have been faster to implement. TwinCore built a provider-agnostic layer instead. The admin selects a provider and pastes its own API key through a single configuration interface, so the store runs on its own LLM account and billing. It cost extra abstraction work up front.

    This gave the client several practical advantages: the store can switch provider for cost or model quality without a rebuild, keep data in a required region, and stay flexible when a vendor changes terms.

    Architecture and UI

    Screenshots use a seeded demo storefront rather than the client's live products. The widget, admin settings, and flows shown match production.

    Who this is for

    Hotels, spas, and treatment studios selling bookable services online are the core fit, along with the software providers that run webshops for them. A nopCommerce retailer whose catalog is large enough that filters and category trees get in the way fits too.

    The strongest fit is a store where shoppers struggle to find the right product, repeatedly ask pre-sale questions, or abandon a complex booking flow. Documented online cart abandonment averages about 70% (Baymard Institute), with a long or complicated checkout among the preventable reasons. Stores with short, simple catalogs are less likely to see the same benefit.

    Technologies used

    .NET
    ASP.NET Core
    Angular
    TypeScript
    OpenAI
    RAG
    nopCommerce plugin
    SQL Server

    Why TwinCore

    The project required more than an off-the-shelf support chatbot or a standalone AI search plugin. FAQ tools could not cover the complete catalog, booking, payment, cart, and ticket workflow, while building the required LLM and retrieval capabilities in-house would have required a specialized team.

    TwinCore fit on three points. First, prior nopCommerce plugin and storefront delivery, shown in the custom nopCommerce store for a DTC drinkware brand. Second, RAG and LLM engineering from the custom AI agent platform for business workflow automation. Third, a small senior team that could put a grounded, cart-writing widget in front of real shoppers rather than a scripted demo.

    Delivered outcomes

    • One nopCommerce plugin now handles product discovery, store questions, cart actions, and service bookings.
    • Store teams manage branding, behavior, and LLM configuration without developer involvement.
    • Requests that cannot be completed automatically continue through callback capture or live-agent handoff.

    Need an AI chatbot for your nopCommerce store?

    This call is for a nopCommerce store where shoppers give up on search, or where bookable services stall in a separate booking path. Book a 30-minute architecture call.

    We will map your catalog, store data, and cart and booking flow, name the grounding and LLM-provider setup that fits, and give a delivery and cost ballpark on the call. You leave with a concrete build outline, not a proposal cycle or a slide deck.

    Scroll to top