TravelGlow Devpost Submission

Inspiration

Travel changes more than our schedule—it changes the environment our skin has to handle. A traveler can leave a cool, dry city and arrive somewhere hot, humid, and high in UV, yet most skincare advice remains generic and reactive.

I created TravelGlow to answer a simple question:

What might my skin need before I reach my destination?

My goal was to combine YouCam’s cosmetic skin analysis with destination conditions and turn that data into a practical, explainable travel-preparation experience.

What it does

TravelGlow creates a personalized Travel Skin Forecast for an upcoming trip.

A traveler can:

  • Enter their home city, destination, and travel dates.
  • Compare environmental conditions such as temperature, humidity, and UV.
  • Upload or capture a clear, front-facing selfie.
  • Analyze their current cosmetic skin condition using YouCam.
  • See how the environmental shift between home and destination may interact with their skin.
  • Receive an explainable skincare packing list.
  • Explore relevance-ranked product recommendations with purchase links.
  • View a demo analytics dashboard showing recommendation engagement.

TravelGlow provides cosmetic travel-planning guidance and does not provide medical advice or diagnosis.

How I built it

TravelGlow is a full-stack TypeScript web application built with:

  • Frontend: React, TypeScript, Vite, and React Router
  • Backend: Node.js, Express, Zod, and REST APIs
  • Database: PostgreSQL
  • Skin analysis: YouCam Skin Analysis API
  • Environment data: WeatherAPI.com
  • AI explanation layer: Gemini
  • Infrastructure: Docker, Docker Compose, and nginx

At the center of TravelGlow is a deterministic Travel Skin Engine. It combines normalized YouCam skin-analysis results with temperature, humidity, UV, and the environmental differences between a traveler’s home and destination.

The Travel Skin Engine—not Gemini—determines the actual concern levels and skincare recommendations. This keeps the results predictable, testable, and explainable.

Gemini receives only the structured findings produced by the engine and transforms them into concise, user-friendly explanations. If Gemini is unavailable, the underlying forecast can still be displayed.

The forecast also powers a personalized skincare packing list and a relevance-based product recommendation system. Products are ranked according to the traveler’s actual skincare needs and destination conditions. Any simulated partner placement is clearly disclosed and cannot make an unsuitable product eligible.

PostgreSQL stores trip details, skin-analysis results, environmental data, forecasts, product recommendations, and analytics so previously generated trip results can be retrieved without unnecessarily repeating the entire workflow.

TravelGlow is packaged with Docker so the application can be run consistently from the repository using the documented setup.

Challenges I ran into

One of the biggest challenges was integrating several services with different response formats and failure modes. I created normalized internal models so the rest of TravelGlow does not depend directly on any one provider’s response structure.

YouCam’s asynchronous analysis workflow also required handling image uploads, analysis-task creation, polling, validation, error states, and normalization of the returned skin scores.

Another important challenge was deciding how generative AI should be used. I did not want Gemini independently inventing skin concerns or recommendations. Instead, I separated deterministic decision-making from natural-language explanation and validated the structured output returned by Gemini.

I also spent time making the application reliable outside the ideal development environment. Docker-based testing helped me identify issues involving file uploads, nginx configuration, browser security policies, and service-to-service networking before submission.

Accomplishments that I'm proud of

I am especially proud that TravelGlow goes beyond a single API demonstration. It creates a complete journey from trip planning to skin analysis, environmental comparison, forecasting, packing recommendations, product discovery, and analytics.

Some of the accomplishments I am most proud of include:

  • Building a deterministic and testable Travel Skin Engine.
  • Using the environmental difference between home and destination as a core personalization signal.
  • Separating skincare decision-making from generative-AI explanation.
  • Creating traceable forecasts tied to the underlying skin and environmental data.
  • Supporting graceful fallback behavior when an optional external service is unavailable.
  • Processing selfie uploads with privacy-conscious handling.
  • Building a personalized skincare packing-list generator.
  • Creating relevance-first product recommendations with transparent explanations.
  • Clearly disclosing simulated partner placement.
  • Tracking first-party recommendation and product-click analytics in PostgreSQL.
  • Building responsive loading, empty, error, and 404 states.
  • Containerizing the full application with Docker and Docker Compose.
  • Providing mock modes for reliable demonstrations alongside real API integration.

What I learned

I learned that personalization becomes much more useful when separate signals are combined around a specific context.

A skin score alone provides limited direction, and weather data alone is generic. But combining a user’s current skin condition with the environmental shift they are about to experience can create a much more useful preparation plan.

I also learned the value of separating decisions from explanations. Deterministic rules make the system easier to test, reason about, and audit, while generative AI can make those same results easier for users to understand.

Finally, I learned that building a polished AI application involves far more than making a successful model call. Input validation, privacy, fallback behavior, persistence, accessibility, deployment consistency, and honest disclosure are all important parts of the product.

What's next for TravelGlow

Future improvements could include:

  • Weather forecasts aligned more precisely with the user’s actual travel dates.
  • Historical climate normals for trips planned far in advance.
  • User accounts, saved trips, consent controls, and deletion workflows.
  • Longitudinal skin snapshots and post-trip feedback.
  • Broader validation of Travel Skin Engine rules across different skin tones and destination types.
  • Clinician-reviewed expansion of skincare guidance.
  • Regional product availability and live retailer inventory.
  • Saved packing progress and offline/PWA support.
  • Expanded privacy controls for third-party image processing.
  • Testing whether TravelGlow’s recommendations genuinely help travelers feel better prepared.

Built With

Share this project:

Updates

Submission history