--- title: "Introduction" url: https://docs.catalyst.zoho.com/en/tutorials/museum-finder/introduction/ description: "Build a Museum Finder web application using Catalyst Functions that helps you find museums based on ratings and traveller type criteria, and automate its workflow using Catalyst Circuits." last_updated: 2026-08-17T12:16:04Z service: All Services type: tutorial related_links: - name: "Project Directory Structure" url: /en/cli/v1/project-directory-structure/introduction/ --- # Museum Finder ### Introduction This tutorial will help you build a museum finder application that lists museums in the United States of America, based on certain criteria that the users input. The application fetches information from public datasets hosted by Catalyst that contain records of ratings and traveller type suitability of museums from various websites. The application processes these in parallel and emails the results to the user. The application's workflow is automated using a [Catalyst Circuit](https://docs.catalyst.zoho.com/en/serverless/help/circuits/introduction/), which orchestrates and executes each task to be carried out automatically. Refer to the [Circuits help page](https://docs.catalyst.zoho.com/en/serverless/help/circuits/introduction) for detailed help on Circuits. The client application will look like this: ![catalyst_museumfinder_client](https://catalyst-docs-development.zohostratus.in/images/tutorials/museum-finder/catalyst_museumfinder_client.webp) You can access a working application and test its functioning here: [Try the App!](https://museumfinder.catalystserverlessapp.com/app/) The Museum Finder application utilizes components from the following Catalyst Services: 1. [**Catalyst Serverless**](https://docs.catalyst.zoho.com/en/serverless/): - **[Circuit:](https://docs.catalyst.zoho.com/en/serverless/help/circuits/introduction)** Automates the entire workflow. > **Note:** Circuits is currently not available to Catalyst users accessing from the EU, AU, IN, JP, SA or CA data centers. You will not be able to execute Cron, Event, or Advanced I/O functions in a Catalyst circuit. - **[Basic I/O Functions](https://docs.catalyst.zoho.com/en/serverless/help/functions/basic-io/)**: Contains the following Basic I/O functions in the **Java** runtime: - `RatingProcessor`: Processes the rating input provided by the user and selects museums that fulfil the criteria - `TravellerTypeRatingProcessor`: Processes the traveller type input provided by the user and selects museums that fulfil the criteria - `MergeDataSet`: Merges the results obtained from `RatingProcessor` and `TravellerTypeRatingProcessor` - `Mailer`: Emails the results to the user - **[Advanced I/O Function](https://docs.catalyst.zoho.com/en/serverless/help/functions/advanced-io/)**: An Advanced I/O function in the **Node.js** runtime that automatically triggers the circuit to execute when the user submits the input form 2. [**Catalyst Cloud Scale**](https://docs.catalyst.zoho.com/en/cloud-scale/): - **Web Client Hosting** The front end of the application will be hosted on Catalyst using the [Web Client Hosting](https://docs.catalyst.zoho.com/en/cloud-scale/help/web-client-hosting/introduction) component. You will be initializing the client as a Basic web app. #### Application Architecture * When the user gives an input choosing the museum rating and traveller type suitability they require, the `RatingProcessor` and `TravellerTypeRatingProcessor` functions fetch two independent public datasets that contain records of ratings and traveller type of museums. * Both functions are processed in parallel, and results matching the criteria requested by the user are selected from both datasets. * The results from `RatingProcessor` and `TravellerTypeRatingProcessor` functions are sent to the `MergeDataSet` function which selects the museums that appear in both functions' results and merges them as one result. * This result is passed to the `Mailer` function which sends the email to the user with the final museum list. * This entire workflow is automated by a circuit that we will configure in this application. After the user submits the input, the circuit automatically executes the functions, processes conditions, and generates results as depicted below: ![catalyst_museumfinder_architecture](https://catalyst-docs-development.zohostratus.in/images/tutorials/museum-finder/catalyst_museumfinder_architecture.webp)