Recommendation system for tourists 

The aim of this project is to create a "local first" website or "desktop application" recommender system. This application uses the same cities as in Labs 2–4 with  same data. Your task is to create a similar places search (recommendation solution) with a graphical interface using PageRank, KMeans, and KNN algorithms.

Functional requirements 

Implement software, where user may view information about cities and their places of interest (POI). Examples of possible UI wireframes attached. 

User has to be able to sort places based on score of interest (calculated using PageRank algorithm from local data). 

User has to be able to select POI and see: 

main information (i.e. image(-s), title, location, description, …); 

similar POI in same city, based on structural information (locally stored information about places); 

similar POI in other cities based on unstructured information (images); 

similar POI in same city, based on unstructured information (images). 

User has to be able to navigate in the system (from one place to another; to the city view, etc.). 

Non-functional requirements

Data collector for information about places must be implemented. Information about places has to be stored in database (sqlite, postgresql, duckdb). Preference to store data using higher normal forms, i.e. if there are place categories, where the each place may have more than one category and categories may be the same for more than for one place, the DB tables may be designed as city (city_id, name, …), place (id, name, …), category (id, name, …), place_category (place_id, category_id);
Separate process for data processing has to be implemented (creating index of similar places and storing in database in separate table, i.e. similar_places (main_place_id, similar_place_id, sim_score). Data processing (similar places indexes calculation, interest score, etc.) has to be implemented using parallel computing with collective communication.
The user interface communicates directly with the database.
Any framework could be used for user interface, i.e. Django, Flask etc. 
Only relevant and validated data have to be stored in database and provided for final user (at least 50 places per city should be of good enough quality).
Documentation 

Collected data analysis (data amounts, methods to process data, all other collected data relevant information). 

System documentation (project structure and used algorithms for specific functions; installation guide; user interface guide) has to be provided. 

-----------

Grading criteria:

UI Implementation and Navigation
The user interface is functional and allows users to view and navigate between cities and POIs effectively. Provides a clear, intuitive navigation experience, including access to city and place views, and supports user interactions as outlined in the wireframes.
Maximum score1
POI Sorting and Display
Correctly implements the PageRank algorithm to calculate and display POI scores. Allows users to sort POIs based on the calculated scores and view main information including images, titles, locations, and descriptions.
Maximum score1.5
Similar POI Recommendations
Provides recommendations for similar POIs in the same city based on structural information.

Provides recommendations for similar POIs in other cities based on unstructured information (images).

Provides recommendations for similar POIs in the same city based on unstructured information (images).
Maximum score1.5
Data Collection and Storage
Implements a data collector that gathers and stores information about POIs in a well-structured database. Uses higher normal forms for database design and ensures at least 50 high-quality places per city.
Maximum score1
Data Processing and Parallel Computing
Implements a separate process for data processing, including indexing of similar places and storing results in a database.

Uses parallel computing with collective communication to handle data processing tasks.

Maximum score2
User Interface and Database Integration
Ensures that the user interface communicates directly with the database. Utilizes a suitable framework (e.g., Django) for building the user interface.
Maximum score1
Collected Data Analysis
Provides a detailed analysis of the collected data, including data amounts, processing methods, and relevant information. Includes insights into the data quality and any challenges encountered.
Maximum score1
System Documentation
Includes comprehensive system documentation covering project structure, algorithms used, and installation guide. Provides a user interface guide with instructions on how to use the system effectively.
Maximum score1