{"id":30702493,"url":"https://github.com/fidelisaboke/african-culinary-chatbot","last_synced_at":"2026-05-03T22:33:44.326Z","repository":{"id":310256317,"uuid":"1036930277","full_name":"Fidelisaboke/african-culinary-chatbot","owner":"Fidelisaboke","description":"AI-powered recipe discovery chatbot that helps users explore African recipes.","archived":false,"fork":false,"pushed_at":"2025-09-01T09:22:28.000Z","size":177,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-01T11:45:16.068Z","etag":null,"topics":["chatbot","langchain","llm","retrieval-augmented-generation","streamlit"],"latest_commit_sha":null,"homepage":"https://african-culinary-chatbot.streamlit.app/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fidelisaboke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-12T19:49:27.000Z","updated_at":"2025-09-01T09:22:32.000Z","dependencies_parsed_at":"2025-08-19T00:31:46.128Z","dependency_job_id":null,"html_url":"https://github.com/Fidelisaboke/african-culinary-chatbot","commit_stats":null,"previous_names":["fidelisaboke/african-culinary-chatbot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Fidelisaboke/african-culinary-chatbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fidelisaboke%2Fafrican-culinary-chatbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fidelisaboke%2Fafrican-culinary-chatbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fidelisaboke%2Fafrican-culinary-chatbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fidelisaboke%2Fafrican-culinary-chatbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fidelisaboke","download_url":"https://codeload.github.com/Fidelisaboke/african-culinary-chatbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fidelisaboke%2Fafrican-culinary-chatbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32587819,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T22:12:39.696Z","status":"ssl_error","status_checked_at":"2026-05-03T22:09:10.534Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatbot","langchain","llm","retrieval-augmented-generation","streamlit"],"created_at":"2025-09-02T15:23:01.862Z","updated_at":"2026-05-03T22:33:44.306Z","avatar_url":"https://github.com/Fidelisaboke.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# African Culinary RAG Assistant\n![African Culinary Assistant](docs/images/app_header.png)\n## Project Overview\nThe African Culinary RAG Chatbot is an AI-powered, recipe discovery chatbot that helps users \nexplore, query, and retrieve African recipes with their ingredients, steps, and nutritional \ninformation. It uses a **Retrieval-Augmented Generation (RAG)** approach to combine semantic search \nover a curated recipe dataset with a Large Language Model (LLM) for context-aware answers.\n\nUsers can ask questions like _“How do I cook Egusi Soup?”_ or _“What ingredients do I need for Jollof Rice?”_ \nand receive both a natural language answer and the relevant recipe context.\n\n## Table of Contents\n- [Tech Stack](#tech-stack)\n- [Installation \u0026 Setup](#installation--setup)\n    - [Pre-requisites](#pre-requisites)\n    - [Setup Instructions](#setup-instructions)\n- [Basic Usage](#basic-usage)\n    - [Streamlit Application](#streamlit-application)\n    - [CLI Application](#cli-application)\n- [Project Structure](#project-structure)\n- [Example Queries and Answers](#example-queries-and-answers)\n- [Known Issues](#known-issues)\n- [Acknowledgement](#acknowledgement)\n- [License](#license)\n\n## Tech Stack\n- **Backend (AI)**: LangChain, HuggingFace Embeddings, ChatGroq\n- **Frontend**: Streamlit\n- **Data**: JSON recipes dataset of African cuisine, collected from recipes websites.\n\n## Installation \u0026 Setup\n### Pre-requisites\n- Python 3.10 or above\n- [Groq API Key](https://console.groq.com/keys)\n\n### Setup Instructions\n1. Clone the repository:\n```bash\ngit clone https://github.com/Fidelisaboke/african-culinary-chatbot.git\ncd african-culinary-chatbot\n```\n\n2. Create a Python virtual environment:\n```bash\npython3 -m venv .venv\nsource .venv/bin/activate  # Linux / macOS\n.venv\\Scripts\\activate     # Windows\n```\n\n3. Install Dependencies:\n```bash\npip install -r requirements.txt\n```\n\n4. Set environment variables\n- Copy `.env.example` to `.env`:\n```bash\ncp .env.example .env\n```\n- Set environment variables listed in the `.env` to your secret environment values.\n\n- Alternatively, create the `.streamlit/secrets.toml` file:\n```bash\nmkdir .streamlit\ntouch .streamlit/secrets.toml\n```\n- Add the Groq API Key and model name to the TOML file:\n```bash\nGROQ_API_KEY = \"your-api-key\"\n\n# GROQ Model - The app uses the one set by default\nGROQ_MODEL_NAME = \"llama-3.3-70b-versatile\"\n```\n\n## Basic Usage\n### Streamlit Application\n1. Run the app:\n```bash\nstreamlit run app.py\n```\n2. Click on the link displayed on the terminal to open the app in your browser.\n\n3. Browse recipes from the sidebar using the dropdown menu.\n\n4. Ask questions in the main input box about recipes, ingredients, or steps.\n\n5. View answers generated by the RAG assistant, along with retrieved recipe sources.\n\n### CLI Application\n1. Run `pipeline/main.py`:\n```bash\npython -m pipeline.main\n```\n- On running the file, the RAG pipeline will be initiated. This will take a few moments.\n- Once it's complete, the prompt will be displayed:\n![Terminal Initialization](docs/images/terminal_initialization.png)\n\n2. Type a recipe question as prompted and hit **Enter**. An answer to your question will be generated:\n![Terminal Answer](docs/images/terminal_answer.png)\n\n3. Type **exit** or **quit** to close the terminal app.\n\n## Project Structure\n```bash\n.\n├── .gitignore\n├── README.md\n├── app.py                      # Streamlit app\n├── data\n│   └── african_recipes.json    # Recipes dataset\n└── pipeline\n    ├── __init__.py\n    ├── chain.py                # RAG chain creation\n    ├── chunking.py             # Text splitting into chunks\n    ├── indexing.py             # Vector store setup\n    ├── main.py                 # CLI app\n    ├── recipes_loader.py       # Recipe loader\n    ├── retrieval.py            # Retriever setup with reranking\n    └── utils.py                # Helper functions\n└── vectors\n    └── chroma_db               # Persisted Chroma vector store\n```\n\n## Example Queries and Answers\n- **Query**: “How do I prepare Egusi Soup?”\n\n**Answer**: Returns Step-by-step instructions with ingredients and cooking steps.\n\n- **Query**: \"What are the ingredients for making Lasagna?\"\n\n**Answer**: Returns a response explaining that the context does not mention Lasagna (Currently, lasagna is not present in the dataset.)\n\n- **Query**: \"Which dish should I make for a family of 8?\"\n\n**Answer**: Returns a relevant recipe, based on the servings count of 8 (e.g. Jollof Rice in the dataset)\n\n## Known Issues\n- Ingredients, steps, or nutrition information may be missing for some recipes.\n- The system may return multiple similar recipes due to chunk-based retrieval.\n- Nutritional information is optional and not always complete.\n- Currently supports only the African recipes provided within the dataset.\n\n## Acknowledgement\nI would like to thank [NSK.AI](https://www.nskai.org/) for the RAG bootcamp, which taught me the skills to build this project.\n\nI would also like to thank the contributors and developers of the tools and resources used in this project:\n- [LangChain](https://www.langchain.com/) - for RAG and embeddings utilities\n- [HuggingFace](https://huggingface.co/) - for embeddings and cross-encoder models\n- [Streamlit](https://streamlit.io/) - for the interactive UI\n- African cuisine recipe contributors on [Allrecipes](https://www.allrecipes.com/) and other recipe websites\n\n## License\nThis project is licensed under the MIT License. See the [`LICENSE`](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffidelisaboke%2Fafrican-culinary-chatbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffidelisaboke%2Fafrican-culinary-chatbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffidelisaboke%2Fafrican-culinary-chatbot/lists"}