Inspiration

I love planning trips and struggled to find a single tool combining music, movies, food, and travel tastes seamlessly. When I realized existing platforms only addressed one interest at a time, I decided to build CultureCross. My goal was to create a “taste map” that reflects all of my passions in one place.

What it does

CultureCross prompts me to select my favorite genres like jazz, indie films, street food, Italian cuisine, and adventure travel through an intuitive survey. It then queries Qloo’s knowledge graph and restaurant APIs to fetch tailored cultural insights and local dining spots. The app merges those results into a cohesive dashboard, delivering personalized recommendations that resonate with my tastes.

How I built it

I built CultureCross with React and TypeScript for a responsive web interface styled by Tailwind CSS and bundled via Vite. In src/services/qlooService.ts I integrated Qloo’s REST endpoints using Axios, normalizing varied JSON responses. I manage state and trigger parallel API calls in a custom React hook (useApp.ts). Deployment on Vercel ensures fast, global access.

Challenges I ran into

I grappled with API inconsistencies, some Qloo endpoints returned objects instead of arrays, leading to runtime errors. Phantom CORS restrictions and 404 responses when parameters were missing added complexity. Coordinating multiple asynchronous API calls in React hooks required careful cleanup and error handling. Ensuring the UI stayed responsive during data fetches and error states was another significant hurdle.

Accomplishments that I’m proud of

I achieved a clean, intuitive “cultural map” UI that guides users effortlessly. My Axios wrapper automatically retries requests and falls back to mock data on failures. I built a flexible entity-to-query mapping system that handles both tags and UUIDs seamlessly. Core recommendation flows now load in under $200, even with intermittent network conditions, boosting overall performance.

What I learned

I gained hands-on experience debugging real-world API quirks by normalizing unexpected JSON schemas. I implemented retry and circuit-breaker patterns around Axios, improving reliability. My mastery of React hooks deepened, especially coordinating parallel data fetches with cleanup logic. I also learned the power of combining explicit surveys with implicit behavioral data to drive truly personalized recommendations.

What’s next for CultureCross

Next, I plan to introduce user embedding vectors with decay factors to refine preference weights dynamically. I’ll integrate a secondary fallback API (like Yelp or Google Places) for broader coverage. Offline caching and a PWA mobile build are on the roadmap, along with richer cultural content museum tours, live events, and neighborhood itineraries to deepen the “taste to experience” connection.

Built With

Share this project:

Updates