The project needed to show both sides of a tourism chatbot decision: a custom fine-tuned model that could learn destination voice and a production-ready managed model that could answer quickly with citations.
Task
Build one tourism chatbot demo that supports both managed and fine-tuned models with source-grounded answers and citations.
Action
Crawled Visit Grand Junction pages, built a FAISS retrieval index, and generated a tourism-specific Q&A dataset with an open-source LLM through Ollama.
Fine-tuned a Mistral 7B/Qwen-style chatbot path with LoRA and deployed the custom model behind AWS SageMaker/Lambda for cold-start and model-control comparison.
Added a Bedrock backend as the default live path, keeping the same RAG/citation experience while providing faster always-available responses for the website demo.
Built the web interface, backend selector, health checks, warm-up state, streaming answer handling, and citation rendering so both models can be compared in one demo.
Result
The project now demonstrates both architectures: Bedrock as the practical live production path and LoRA/SageMaker as the custom fine-tuning path.
Viewers can compare managed-model reliability, streaming responses, and citation behavior against the custom model's cold-start and deployment tradeoffs.
The demo keeps source-grounded answers and citation links while making the model choice transparent through the backend selector.
Travel Assistant
Explore Grand Junction with a source-grounded chat. Inputs and responses are saved on AWS.