Practical AI and eCommerce insights — recommendation engines, LLMs, EU AI Act compliance, and retail AI strategy for Irish businesses.
Conversational Commerce | AI Shopping | Ireland
Meta Description: The future of conversational commerce in Ireland and the EU — Michael English (IMPT.io CTO) on AI chatbots, voice commerce, WhatsApp shopping, and LLM-powered shopping assistants.
Target Keywords: conversational commerce Ireland, AI shopping assistant Ireland EU, WhatsApp commerce Ireland, voice commerce Ireland, chatbot eCommerce Ireland, Michael English conversational commerce
Conversational commerce — using messaging, chat, and voice interfaces for product discovery and purchase — represents the natural evolution of eCommerce. People communicate through conversation; traditional eCommerce forces them to communicate through search boxes, filters, and product grids.
The convergence of LLMs, messaging APIs (WhatsApp Business, Instagram DM, iMessage), and voice interfaces has created a conversational commerce landscape that is growing rapidly in Ireland and across the EU.
The most mature conversational commerce channel. AI chatbots on eCommerce websites have evolved from rigid rule-based FAQ bots to sophisticated LLM-powered shopping assistants.
Generation 1 (rule-based, 2015-2021): Decision tree chatbots answering predefined questions. "Did you mean: Track your order / Return policy / Contact us?"
Generation 2 (NLU-enhanced, 2019-2022): Intent classification (Dialogflow, Rasa) + entity extraction (product names, sizes, colours). Could understand "I want to return my blue jacket" but failed on ambiguous or multi-step queries.
Generation 3 (LLM-powered, 2023+): Full natural language understanding, product catalogue integration via RAG, context persistence across conversation turns, and genuine product expertise capability.
The jump from Generation 2 to 3 is transformative. A Generation 3 shopping assistant can handle:
"I'm looking for a gift for my mum, she's 65, loves gardening, and I want to spend around €50-60. She already has garden gloves so I don't want those."
A rule-based or NLU-only bot cannot handle this. An LLM with product catalogue context can.
WhatsApp has 2.2 billion monthly active users globally, including significant Irish adoption (approximately 85% of Irish smartphone users use WhatsApp). The WhatsApp Business API enables:
Irish WhatsApp Business examples:
Implementation:
Instagram Shopping allows product tagging in posts and Stories; Instagram DM (direct messages) enable customer enquiries and purchase completion. For Irish fashion and lifestyle brands with significant Instagram presence:
Voice commerce via smart speakers (Amazon Echo, Google Home) has underperformed early predictions. Conversion rates for voice-initiated product discovery to purchase are low outside replenishment scenarios (reordering familiar products).
However, voice integration within Irish retailers' own apps and websites shows more promise:
Customer Message
↓
[Intent Classification] — Is this product query, support, order status, other?
↓
Product Query? → [RAG: Semantic Search of Product Catalogue] → [LLM with product context]
Support Query? → [Knowledge Base Retrieval] → [LLM with FAQ context]
Order Status? → [Order API Lookup] → [Template Response]
Out of Scope? → [LLM: Polite redirect to appropriate channel]
↓
[Response Generation] (LLM)
↓
[Guardrails Check] — Hallucination detection, safety, brand compliance
↓
Customer Response
The key to a genuinely useful shopping assistant is accurate, fresh product information. Retrieval-Augmented Generation (RAG) solves this:
import anthropic
from openai import OpenAI
import json
# Initialise clients
anthropic_client = anthropic.Anthropic()
openai_client = OpenAI()
def create_product_embedding(product: dict) -> list:
"""Create semantic embedding of a product for search."""
# Rich text representation
product_text = f"""
{product['name']}.
Category: {product['category']}.
Description: {product['description']}.
Price: €{product['price']}.
Materials: {product.get('materials', 'N/A')}.
Colours available: {', '.join(product.get('colours', []))}.
Sizes available: {', '.join(map(str, product.get('sizes', [])))}.
In stock: {'Yes' if product['stock'] > 0 else 'No'}.
Use cases: {product.get('use_cases', '')}.
"""
response = openai_client.embeddings.create(
model="text-embedding-3-small",
input=[product_text.strip()]
)
return response.data[0].embedding
def shopping_assistant_response(
customer_message: str,
conversation_history: list,
relevant_products: list,
store_policies: str
) -> str:
"""
Generate a shopping assistant response using Claude.
"""
products_context = "\n\n".join([
f"Product: {p['name']}\n"
f"Price: €{p['price']}\n"
f"Description: {p['description']}\n"
f"Available sizes: {p.get('sizes', 'N/A')}\n"
f"Available colours: {p.get('colours', 'N/A')}\n"
f"In stock: {'Yes' if p['stock'] > 0 else 'No - Currently unavailable'}\n"
f"Product URL: {p.get('url', '')}"
for p in relevant_products
])
system_prompt = f"""You are a helpful shopping assistant for an Irish eCommerce retailer.
You are an AI assistant (as required by EU AI Act transparency requirements).
Your role:
- Help customers find the perfect product for their needs
- Be honest about stock availability
- Recommend specific products with clear reasoning
- Handle returns, orders, and general queries helpfully
- Use a warm, helpful tone appropriate for Irish customers
Store policies:
{store_policies}
Available products matching the query:
{products_context}
Guidelines:
- Never invent products or details not in the context
- If no products match, say so honestly and suggest alternatives
- Include product URLs in recommendations
- Keep responses concise (100-200 words) unless more detail is asked for
- You are an AI assistant — don't claim to be human if asked"""
# Build messages with conversation history
messages = conversation_history + [
{"role": "user", "content": customer_message}
]
response = anthropic_client.messages.create(
model="claude-haiku-4-5", # Fast, cost-efficient for chat
max_tokens=600,
system=system_prompt,
messages=messages
)
return response.content[0].text
LLMs can hallucinate — confidently stating incorrect information. For shopping assistants, this might mean inventing a product specification, creating a non-existent discount, or providing incorrect stock availability.
def validate_response(
response: str,
context_products: list
) -> dict:
"""
Check LLM response for potential issues.
Returns {'valid': bool, 'issues': list}
"""
issues = []
# Check for invented prices (not in product context)
import re
price_mentions = re.findall(r'€(\d+(?:\.\d{2})?)', response)
valid_prices = {str(p['price']) for p in context_products}
for price in price_mentions:
if price not in valid_prices:
issues.append(f"Potentially fabricated price: €{price}")
# Check for size/colour claims not in product data
# (More complex checks would go here)
return {
'valid': len(issues) == 0,
'issues': issues,
'response': response
}
import requests
class WhatsAppBusinessAPI:
"""Integration with WhatsApp Business API via Cloud API (Meta)."""
def __init__(self, phone_number_id: str, access_token: str):
self.phone_number_id = phone_number_id
self.access_token = access_token
self.base_url = f"https://graph.facebook.com/v18.0/{phone_number_id}"
def send_text_message(self, to: str, message: str) -> dict:
"""Send a text message to a WhatsApp user."""
payload = {
"messaging_product": "whatsapp",
"to": to, # Format: 353831234567 (country code, no +)
"type": "text",
"text": {"body": message}
}
response = requests.post(
f"{self.base_url}/messages",
headers={
"Authorization": f"Bearer {self.access_token}",
"Content-Type": "application/json"
},
json=payload
)
return response.json()
def send_product_message(
self,
to: str,
product: dict,
catalogue_id: str
) -> dict:
"""Send a product card via WhatsApp."""
payload = {
"messaging_product": "whatsapp",
"to": to,
"type": "template",
"template": {
"name": "product_recommendation",
"language": {"code": "en"},
"components": [{
"type": "body",
"parameters": [
{"type": "text", "text": product['name']},
{"type": "text", "text": f"€{product['price']}"},
{"type": "text", "text": product['url']}
]
}]
}
}
return requests.post(
f"{self.base_url}/messages",
headers={"Authorization": f"Bearer {self.access_token}"},
json=payload
).json()
def send_order_confirmation(
self,
to: str,
order_id: str,
order_total: float,
estimated_delivery: str
) -> dict:
"""Send order confirmation via WhatsApp."""
message = (
f"✅ Order Confirmed!\n\n"
f"Order #{order_id}\n"
f"Total: €{order_total:.2f}\n"
f"Estimated delivery: {estimated_delivery}\n\n"
f"Track your order: https://yourstore.ie/track/{order_id}\n\n"
f"Reply to this message if you have any questions!"
)
return self.send_text_message(to, message)
The next generation of conversational commerce will be multimodal — combining text, images, and voice seamlessly:
Image-based shopping via chat:
Customer sends a screenshot of a product they saw on Instagram → AI identifies the item → Returns matching products from catalogue with direct purchase links
Voice + visual in-store:
Customer points phone at product in physical store, asks "Do you have this in blue size M?" → AR + inventory lookup → Answer in under 2 seconds
Video shopping assistance:
AI appears as an avatar in video call format for high-consideration purchase decisions (furniture, electronics, bespoke products)
import anthropic
import base64
def match_product_from_image(
image_path: str,
product_catalogue_description: str
) -> dict:
"""
Match a customer-provided image to products in catalogue.
"""
with open(image_path, 'rb') as f:
image_data = base64.b64encode(f.read()).decode('utf-8')
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=500,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": image_data
}
},
{
"type": "text",
"text": f"""The customer has sent this image looking for something similar.
Our product catalogue includes:
{product_catalogue_description}
Based on what you see in the image, describe:
1. The key visual attributes (colour, style, material, category)
2. Which specific products from our catalogue best match
3. What to say to the customer
Be specific and honest about the match quality."""
}
]
}]
)
return {"analysis": response.content[0].text}
| Metric | Target Benchmark | Measurement Method |
|---|---|---|
| Conversation-to-purchase rate | 5-15% | GA4 conversation → purchase funnel |
| Average response time | <3 seconds | Server-side timing logs |
| Customer satisfaction (CSAT) | >4.2/5 | Post-conversation survey |
| Containment rate | >60% | Conversations resolved without human escalation |
| AI Disclosure compliance | 100% | Audit log of disclosure message delivery |
| Average order value (chat) | +15% vs non-chat | AOV comparison cohort analysis |
Conversational commerce is moving from experiment to mainstream infrastructure in Irish and EU eCommerce. The technology inflection point driven by LLMs has made genuinely useful AI shopping assistants achievable for retailers at all scales.
The regulatory environment (EU AI Act chatbot disclosure, GDPR for conversation data) provides clear compliance requirements that are straightforward to implement. The business case — improved conversion, higher AOV, reduced support costs — is well-documented.
Irish retailers who invest in conversational commerce now build customer interaction capabilities that compound over time: each conversation provides training data, each refinement improves the experience, and the switching cost for customers grows as they become accustomed to the personalised assistance.
The conversation is the future of commerce. Build it now.
Michael English is Co-Founder & CTO of IMPT.io. He builds AI infrastructure for eCommerce and sustainable finance. Based in Clonmel, Co. Tipperary, Ireland.
Keywords: conversational commerce Ireland, AI shopping assistant Ireland, WhatsApp commerce Irish retailers, chatbot eCommerce Ireland EU, LLM shopping assistant, voice commerce Ireland, Michael English conversational commerce