https://menu-search.vercel.app/
Findish – Find Your Recipe based On Ingredients You Have!
Findish is an ingredient-based recipe search platform powered by Perplexity’s Sonar API.
It helps users discover dishes using the ingredients they already have by automatically extracting recipes from YouTube content—such as pinned comments, descriptions, and transcripts.
I’ve always loved cooking and wanted to be a chef back in the day.
So, I still watch cooking videos, learn new recipes, and try them out myself.
However, I often ran into a common problem: having leftover ingredients and no idea what to make with them.
I've seen a lot of people facing the same problem as I do.
So I thought:
What if I could build a website that helps people search for recipes based on the ingredients they already have with AI?
That’s how Findish was born:
An ingredient-first, bilingual (Korean-English) recipe search tool that helps people discover relevant YouTube cooking videos using what’s already in their fridge.
By combining unstructured YouTube content with Perplexity’s Sonar API, the tool transforms scattered text into structured recipe data—making cooking easier, smarter, and more fun.
-
YouTube Video Scraping
- We collect metadata, pinned comments, description boxes, and transcripts from Korean and English YouTube cooking videos.
-
Prompt Engineering + Sonar API
- We send that unstructured text to Perplexity's Sonar API, prompting it to extract the:
- Dish name
- List of ingredients
- Source location (pinned/description/transcript)
- Language
- We send that unstructured text to Perplexity's Sonar API, prompting it to extract the:
-
Ingredient Normalization & Storage
- Parsed data is stored in structured JSON/JS files (
menuData_kr.js,menuData_en.js), normalized to group similar ingredients (e.g., "chili powder", "gochugaru").
- Parsed data is stored in structured JSON/JS files (
-
Frontend Recipe Search
- Users can select ingredients using a smart tag-based search bar (React Select).
- Matching recipes are instantly displayed with dish name, uploader, tips, and video links.
- 🔍 Multi-ingredient search with dropdown
- 🌐 Korean / English support
- 💡 Modern UI/UX with dark/light mode
- ⚙️ Powered by Perplexity Sonar API
- 📁 Uses pre-parsed YouTube data for speed
- 👨🍳 Shows source of parsed data (comment/desc/transcript)
- Frontend: React, Tailwind CSS, React-Select
- Backend Script: Python, YouTube Data API, Perplexity Sonar API
- Deployment: Vercel (in progress)
We used Sonar API to extract structured recipe data from unstructured YouTube text.
Prompts were crafted to be robust across different video formats and languages.
We also implemented logic to:
- Detect language (KR/EN)
- Prioritize pinned comments > descriptions > transcripts
- Reject non-recipe promotional content
Example prompt:
This is a pinned comment from a Korean cooking YouTube video. Extract the name of the recipe and list the ingredients. If it's not a recipe, respond with "Only product advertisement or promotion."
-
Clone the repository and move into the project directory:
git clone [repo-url] && cd [project-folder] -
Install frontend dependencies:
npm install -
Create a
.envfile and alogsfolder in the root directory. -
Install required Python packages:
pip install requests python-dotenv google-api-python-client youtube-transcript-api langdetect -
Get the Channel ID of the YouTuber you want to fetch data from.
-
Run the automation script to fetch and parse YouTube data:
python youtube_automation.py -
Start the frontend development server:
npm start