Skip to content

Whiskey Sommelier Agent

Tell it a mood, a moment or a memory - "rainy Sunday with a book, I love smoky stuff" - and an AI sommelier picks bottles from our own closed inventory, ranks them with a match % and explains why each one fits you.

It is a hackathon proof of concept built to answer one question: what does a small, demo-reliable AI agent look like on Amazon Bedrock AgentCore, end to end, with infrastructure as code and real tests?

Current stage: MVP 1 (recommend) is built

Free-text chat → ranked, explained recommendations from the inventory, multi-turn refinement, guard-railed off-topic and distress handling. MVP 2 (ordering through AgentCore Gateway) is next. See MVP Status.

What's inside

Layer Technology
Agent Strands Agents on Amazon Bedrock AgentCore Runtime (direct code deploy, Python 3.14, ARM64)
Model Claude Haiku 5.5 on Amazon Bedrock (US cross-region inference profile)
Retrieval Bedrock Knowledge Base on Amazon S3 Vectors (Titan Text Embeddings v2), one chunk per bottle, metadata filters for stock and price
API API Gateway REST + Python Lambda (Powertools), throttled, contract-validated with Pydantic
UI React + Vite + Tailwind, private S3 bucket behind CloudFront (OAC)
IaC AWS CDK (Python), one stack, one-command deploy and destroy
Tests pytest unit tests + deepeval e2e golden prompts with LLM-judged quality metrics

Key design decisions

  • The LLM never writes bottle details. It returns only ids, scores, reasons and a serving suggestion. Code validates every id against the inventory, drops out-of-stock and duplicates, clamps and re-sorts scores, and fills the cards from inventory.json. Hallucinated bottles cannot reach the UI.
  • Guardrails in code, not only in the prompt. The in-stock filter is always on in retrieval, the 3-match cap and score threshold are enforced server-side, and every drop is logged.
  • Change behavior without touching infra. Prompts live in files, and model, threshold and N are runtime environment variables - one agent redeploy. Inventory changes need only make kb-sync.
  • Built to split. Recommend and order are separate modes (prompts, tools, code modules) in one agent today, structured so they can become two agents behind an orchestrator without changing the response contract.

Continue with the Architecture or jump to Getting Started.