/culefilo

Discover the top 3 restaurants serving your favorite food near you. Just enter your craving and location in our free AI-powered app, and start your culinary adventure today!

Primary LanguageTypeScript

Cule Filo - AI-powered restaurant search engine

Discover the top 3 restaurants serving your favorite food near you. Just enter your craving and location in our free AI-powered app, and start your culinary adventure today!. Our submittion to the Cloudflare AI Challenge.

Demo: https://cule-filo.pages.dev

Screen.Recording.2024-04-13.at.18.09.12.mov

Team: @sjdonado @gjhernandez @krthr

Features

  1. Search your favorite meal Screenshot 2024-04-13 at 17 23 33

  2. Real time search logs Screenshot 2024-04-13 at 17 11 58 Screenshot 2024-04-13 at 17 12 59

  3. See and share your results

Screenshot 2024-04-13 at 17 13 41

Design

graph TD
    A[Start] --> B{Job state?}
    B -->|Created| C[Update job state to Running]
    B -->|Running or Finished| D[Return encoded message]
    C --> E[Search for places with original query]
    E --> F{Number of places found?}
    F -->|Less than 3| G[Generate suggestions list - llama-2-13b-chat-awq]
    F -->|3 or more| H[Enhancing results]
    G --> I{Number of suggestions?}
    I -->|Greater than 0| J[Search for places with suggestions]
    I -->|0| K[Log error]
    J --> L{Number of places found?}
    L -->|Less than 3| G
    L -->|3 or more| H
    H --> M[Fetch place reviews]
    H --> N[Fetch place photos]
    M --> O[Summarizing reviews - bart-large-cnn]
    N --> P[Photos to text - uform-gen2-qwen-500m]
    P --> Q[Choose thumbnails - llama-2-13b-chat-awq]
    Q ---> R[Collecting results]
    O ---> R
    R --> S[Update job state to Success]
    S --> T[Return encoded message]
    K --> H
Loading

Functional requirements

  • Search Results Relevance: The application should return at least one result that is relevant to the user's search query.
  • Place Descriptions Based on Reviews: The application should generate descriptions for each place based on the available user reviews. These descriptions should provide a concise and informative summary of the place's characteristics and user experiences.
  • Contextually Relevant Image Selection: The application should select and display an image for each place that is contextually relevant to the user's search query. This image should accurately represent the place and enhance the user's understanding of the search results.
  • Search History: The application should maintain a history of the user's previous searches. This feature allows users to easily access and revisit their past searches, enhancing the overall user experience.

Non Functional requirements

  • Request Completion Time: The application should strive to complete search requests within an average time of 30 seconds or less. This ensures a smooth and responsive user experience, minimizing waiting times for search results.
  • Intuitive, Minimalist, and Responsive UI/UX: The user interface and user experience should be designed to be intuitive, minimalist, and responsive. The application should provide a clean and clutter-free interface that is easy to navigate and understand. It should also be responsive, adapting seamlessly to different screen sizes and devices.
  • Search History Storage in Key-Value Store: The application should store the user's search history in a key-value (KV) store. This allows for efficient retrieval and management of search history data, ensuring fast access to previous searches.

Local setup

  1. Configure secrets .dev.vars
PLACES_API_KEY={PLACES_API_KEY}
AUTOCOMPLETE_API_KEY={AUTOCOMPLETE_API_KEY}
  1. Install dependencies
npm install
  1. Build with Vite + run bindings with Wrangler:
npm run preview

Deployment

  1. Create a Cloudflare account
  2. Create an application under 'Workers & Pages'
  3. Checkout the master branch
  4. Create KV namespace binding: CULEFILO_KV
  5. Enable Workers AI Bindings: AI
  6. Run npm run deploy