Inspiration
As someone who loves to travel, I often struggle with finding activities that truly resonate with my personal taste. Highly rated attractions in popular destinations often feel generic, leaving me disconnected from the experience. This frustration inspired me to build Cora, an AI-powered travel concierge that curates poetic, hyper-personalised itineraries based on what really matters to a person using your favourite films, music, and cuisines.
What it does
The project transforms cultural tastes into a fully fleshed‑out travel plan infused with the user's unique personality. After a user enters his or her favourite films, music artists, and cuisines along with the planned country or state destination, and trip length, the system infers the user's personal style (whether adventurous, romantic, minimalist, or energetic) and weaves that tone into a cohesive day‑by‑day itinerary.
Each day highlights a different neighbourhood, complete with two recommended cultural or artistic activities and two local food experiences, all explicitly named so the user knows exactly where to go. To set the mood, the project curates a playlist drawn from the user's favourite artists and suggests a book that complements the inferred tone of the user's journey. By leaning heavily on Qloo’s Taste AI™ at the core, this project unlocks genuinely personal, culturally deep travel recommendations that no generic guidebook can match.
Beyond textual guidance, the project fetches real images for each neighbourhood from Pexels, allowing the user to visualize the streets he or she will explore. It also calculates a sensible daily budget in the local currency, helping the user plan the expenses before travel.
When the personalized journey is ready, the project presents the full itinerary in‑app with no endless scrolling required and offers a “Download as PDF” button so the user can save or share the custom plan.
Even if an API hiccups or the inputs are sparse, the system handles failures gracefully and still delivers a meaningful, tailored travel experience.
How I built it
I architected Cora as a set of small, focused modules to keep each piece of functionality clean and easy to maintain. The frontend is powered by Streamlit, which allowed me to spin up interactive forms and dynamic elements in minutes with no boilerplate HTML or JavaScript required. I used Python throughout .
I created separate utility files:
- qloo.py to handle all Qloo Taste AI™ API calls, so the main app never worries about HTTP details.
- main.py for the Groq itinerary generator, where I build the LLM prompt, send it off, and parse the response.
- images.py to fetch neighbourhood photos from Pexels, keeping API logic isolated.
- pdf_downloading.py to wrap FPDF calls for generating a clean, printable itinerary PDF.
In app.py, I stitch those pieces together: collecting inputs, orchestrating API calls, and rendering results. I leaned heavily on st.session_state to preserve user data and generated outputs across reruns, ensuring a smooth, app‑like experience even in a stateless environment.
For deployment, I moved all sensitive keys into Streamlit’s secrets manager so that nothing lives in my public repository. Finally, after linking my GitHub repo to Streamlit Cloud, every push triggers an automatic rebuild, giving me a zero‑downtime, always‑up‑to‑date demo link to share with judges.
Challenges I ran into
One of the biggest hurdles was dealing with LLM hallucinations: the model occasionally suggested neighbourhoods or landmarks that simply didn’t exist in the chosen destination. To safeguard against these errors, I built in a manual cross‑check step, verifying each suggested location against real maps and guides. After comparing several models, I settled on deepseek-r1-distill-llama-70b because its recommendations consistently aligned with actual geography. This extra validation layer ensures every itinerary feels authentic and reliable.
Another challenge was managing secure deployment, including hiding API keys in production which I did using streamlit secret.
Finally, the model initially was output the thinking logic to users which is a bad UX so I used python to filter through the output and eliminated internal <think> tags so only the final itinerary is shown to users .
Accomplishments that I am proud of
Seamless API Orchestration: Successfully integrated three distinct services (Qloo Taste AI™, Groq LLM, and Pexels) into a unified experience that feels fluid and coherent to the user.
Visual Enrichment: Automated the fetching and inline display of real neighbourhood images from Pexels, transforming a plain text plan into an immersive visual journey.
Robust PDF Export: Built a clean, printable PDF generator (via FPDF) so users can carry their personalized itinerary offline or share it with friends.
Failure Handling: Implemented retry/backoff logic and fallbacks for sparse inputs and intermittent API timeouts, ensuring the app always delivers a usable itinerary.
Secure Deployment: Migrated all sensitive API keys into Streamlit’s secrets manager, maintaining a public repository without exposing credentials and achieving zero‑downtime updates on Streamlit Cloud.
What I learned
API Orchestration: I learned how to seamlessly combine multiple third‑party services, most critically Qloo’s Taste AI™ to translate simple user preferences into culturally rich recommendations.
Deep Cultural Insights: Working with Qloo taught me how a taste‑graph API can uncover hidden connections between movies, music, and dining, enabling truly personalized experiences.
Prompt Engineering: Crafting effective prompts that guide an LLM to produce structured, poetic itineraries showed me the importance of clear instructions, inference hints, and iterative refinement.
State Management: Leveraging st.session_state in Streamlit taught me how to maintain user inputs and generated outputs across reruns, creating a fluid, “app‑like” experience in a traditionally stateless environment.
Secure Deployment: Managing API keys with Streamlit’s secrets manager and deploying on Streamlit Cloud taught me best practices for keeping sensitive configuration out of version control while ensuring zero‑downtime updates.
What's next for Cora, Your Personal Travel Concierge
Integration with Google Maps: Embed interactive maps and real‑time routing so users can visualize and navigate their day’s path.
Group Trip Planning: Support collaborative itinerary building for friends and family to share and merge their cultural preferences.
Mobile‑First PWA: Build a Progressive Web App for offline access and a native‑like experience on smartphones and tablets.
LLMOps: Improving the deployment and management of the web app to improve latency and monitor accuracy.
What makes this project unique
Intelligent & Thoughtful Use of LLMs: Cora adapts its prompting strategy based on how many preference fields are provided, supplying “inference hints” that ensure concise tone deduction with sparse data and richer, more confident voice when more inputs are available. This dynamic prompt engineering yields itineraries that read like personalised travelogues rather than generic lists.
Deep Integration with Qloo’s API: By calling three Qloo Taste AI™ endpoints (movies, music, dining), Cora surfaces niche, privacy-first cultural recommendations that go far beyond popularity rankings, thereby unlocking hidden affinities across domains without ever handling personal identifiers.
Robust Technical Implementation: Modular Python code (qloo.py, main.py, images.py, pdf_downloading.py, app.py) maintained with Streamlit’s session state ensures a seamless, app-like UX. All API calls include retry/backoff and graceful fallbacks for rate limits or sparse inputs, and no secrets ever live in the repo thanks to Streamlit’s built-in secrets manager.
Originality & Creativity: Rather than a static checklist, Cora weaves each day’s activities into a cohesive, poetic narrative, enriched by neighbourhood photography and curated playlist links which transforms itinerary planning into a multi-sensory experience.
Real-World Potential: With built-in budget estimation, PDF export for offline access, and a clear roadmap for Google Maps integration and group-planning features, Cora is poised to evolve from hackathon prototype to a consumer-facing travel companion or white-label partner for agencies.
Log in or sign up for Devpost to join the conversation.