GPT-4 Hospitality Platform
A RAG-grounded GenAI platform across 30+ UK hotels that analyses 200K+ guest reviews a year — surfacing themes and drafting personalised, on-brand responses at scale.
What the platform does
Guest reviews scattered across booking platforms are ingested, embedded, and made queryable. For each review, the system retrieves relevant context (property details, prior responses, policy), grounds a GPT-4 call on it, and drafts a personalised response — while a parallel path extracts sentiment and themes into a live manager dashboard.
Why naive GPT-4 wasn't enough
Ungrounded generation produces plausible but generic responses that miss property specifics and risk off-brand or inaccurate replies. The platform needed retrieval-grounded generation so every draft is anchored in real context, plus structured theme extraction over 200K+ reviews annually.
System architecture
A retrieval-augmented pipeline: reviews are embedded into a vector index, relevant context is retrieved per review, and GPT-4 generates grounded output. A separate NLP path handles sentiment, NER, and topic modelling for the dashboard.
Retrieval & grounding
Grounding is the reliability control: the model responds from retrieved context, not free memory, keeping drafts accurate and on-brand.
def draft_response(review: Review) -> str:
ctx = retriever.similarity_search(review.text, k=5) # property + prior context
prompt = build_prompt(
review=review,
context=ctx, # grounding
brand_voice=BRAND_GUIDE, # on-brand constraint
)
return llm.generate(prompt, response_format=ResponseDraft) # structured output Architecture decision records
RAG over fine-tuning
Decision: ground GPT-4 on retrieved context rather than fine-tuning a bespoke model.
Consequence: property context stays fresh without retraining; responses are traceable to source context; lower cost and faster iteration.
Separate extraction path from generation
Decision: theme/sentiment extraction runs independently of response drafting.
Consequence: the dashboard updates even when drafting is paused; each path scales and fails independently.