cool-restaurant

byJesse Parnes

build a restaurant recommender app for London. It uses information from your profile and how you've rated other restaurants to estimate what it thinks you will rate a restaurant, based on how people similar to you / with similar tastes rated the restaurant. You should be able to input what you're looking for.

No preview

Comments (0)

No comments yet. Be the first!

System Requirements

System Requirement Document
Page 1 of 7

System Requirements Document (SRD)

cool-restaurant

1. Introduction

The cool-restaurant project is a restaurant recommender application designed for users in London, UK. The app leverages user profiles, past ratings, and collaborative filtering to provide personalized restaurant recommendations. Users can also input specific preferences, such as cuisine type, location, and budget, to refine their search. This document outlines the system requirements for the development of the cool-restaurant application.

The goal is to create a seamless, engaging, and intuitive experience for users, ensuring they can discover restaurants that align with their tastes and preferences.

Page 2 of 7

2. System Overview

The cool-restaurant application will:

  • Provide a generic list of restaurant recommendations for casual browsing.
  • Offer personalized recommendations based on user profiles, past ratings, and collaborative filtering.
  • Allow users to refine their search with filters such as cuisine type, proximity, and budget.
  • Require users to log in and create a profile to access personalized recommendations.

The system will utilize advanced recommendation algorithms and a user-friendly interface to deliver accurate and relevant suggestions. The backend will handle data processing and collaborative filtering, while the frontend will focus on delivering an intuitive and visually appealing user experience.

Locale-specific considerations include:

  • Default currency: GBP (£).
  • Default timezone: GMT.
  • Location-specific data for restaurants in London.

3. Functional Requirements

User Stories:

General Users:

  • As a User, I should be able to log in and create a profile.
  • As a User, I should be able to view a generic list of restaurant recommendations.
  • As a User, I should be able to receive personalized restaurant recommendations based on my profile and past ratings.
  • As a User, I should be able to input specific preferences (e.g., cuisine, location, budget) to refine my recommendations.
  • As a User, I should be able to rate restaurants to improve future recommendations.
Page 3 of 7

Admins:

  • As an Admin, I should be able to manage the restaurant database (add, update, or remove entries).
  • As an Admin, I should be able to monitor user activity and system performance.

Guests:

  • As a Guest, I should be able to browse a limited, generic list of restaurant recommendations without logging in.

4. User Personas

1. Guest

  • Description: A user who has not logged in or created a profile.
  • Primary Goals: Browse a generic list of restaurant recommendations.

2. Registered User

  • Description: A user who has logged in and created a profile.
  • Primary Goals: Receive personalized recommendations, refine searches using filters, and rate restaurants.

3. Admin

  • Description: A system administrator responsible for managing the backend and ensuring smooth operation.
  • Primary Goals: Manage the restaurant database and monitor system performance.

5. Visuals Colors and Theme

The cool-restaurant app will feature a modern, vibrant, and inviting color palette to reflect the dynamic and diverse food scene in London.

Page 4 of 7

Color Palette:

  • Background: #F9F5F0 (Warm Cream)
  • Surface: #FFFFFF (Pure White)
  • Text: #333333 (Charcoal Black)
  • Accent: #FF6F61 (Coral Red)
  • Muted: #B0BEC5 (Soft Grey-Blue)

This palette ensures readability, warmth, and a touch of excitement, aligning with the app's purpose of exploring culinary delights.

6. Signature Design Concept

The cool-restaurant homepage will feature an interactive map of London as its centerpiece.

Key Features:

  • Dynamic Map: A live, zoomable map of London with restaurant pins that glow softly in the accent color (#FF6F61).
  • Hover Effects: Hovering over a pin displays a tooltip with the restaurant's name, rating, and a thumbnail image.
  • Personalized Layers: Logged-in users will see pins color-coded based on their predicted rating (e.g., green for high, yellow for medium, red for low).
  • Search Animation: When users input preferences (e.g., "Italian near Soho"), the map dynamically zooms and highlights relevant areas with animated ripples.
  • Micro-Interactions: Subtle animations, such as pins bouncing slightly when clicked and smooth transitions between map layers, enhance the user experience.

This design ensures the homepage is both functional and visually captivating, making a strong first impression.

Page 5 of 7

7. Non-Functional Requirements

  • Performance: The app should load the homepage within 2 seconds on a standard broadband connection.
  • Scalability: The system should support up to 1 million active users.
  • Availability: The app should maintain 99.9% uptime.
  • Security: User data must be encrypted both in transit and at rest.
  • Localization: The app should support UK-specific formats for currency (£) and time (GMT).

8. Tech Stack

Frontend:

  • React for Web

Backend:

  • Python
  • FastAPI

Database:

  • MySQL (with Alembic for migrations)

AI Models:

  • GPT 5.4 for user-friendly responses
  • Claude 4.6 Opas for collaborative filtering
Page 6 of 7

AI Tools:

  • Langchain
  • Litellm for LLM Routing

Orchestration:

  • Docker for local development
  • Kubernetes for server-side orchestration

9. Assumptions and Constraints

Assumptions:

  • Users will primarily access the app via mobile devices.
  • Restaurant data will be sourced from a reliable third-party API.
  • Users will provide honest ratings to improve recommendation accuracy.

Constraints:

  • The app will initially focus only on restaurants in London.
  • Budget constraints may limit the use of advanced AI models.
Page 7 of 7

10. Glossary

  • Collaborative Filtering: A recommendation algorithm that predicts user preferences based on similar users' behavior.
  • Generic Recommendations: A list of restaurants suggested without considering user-specific data.
  • Personalized Recommendations: Tailored suggestions based on a user's profile and past interactions.
  • Filters: Search parameters (e.g., cuisine, location, budget) used to refine recommendations.
  • LLM Routing: A method for selecting the most appropriate large language model for a given task.
Login: Sign In
Dashboard: View Overview
Dashboard: Monitor Activity
Restaurants: Manage Database
Restaurants: Add Entry
Restaurants: Edit Entry