{"id":48362126,"url":"https://github.com/aurumz-rgb/ReviewAid","last_synced_at":"2026-04-19T09:00:54.684Z","repository":{"id":307132818,"uuid":"1026857063","full_name":"aurumz-rgb/ReviewAid","owner":"aurumz-rgb","description":"AI-Driven Full-Text Screening and Data Extraction for Systematic Reviews and Evidence Synthesis","archived":false,"fork":false,"pushed_at":"2026-04-18T09:39:47.000Z","size":9733,"stargazers_count":7,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-18T11:44:11.026Z","etag":null,"topics":["academic-research","ai-assistant","ai-tool","data-extraction","literature-review","medical-research","open-source","python","research-ai","research-automation","research-tool","screening-tool","streamlit","systematic-reviews"],"latest_commit_sha":null,"homepage":"https://reviewaid.github.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aurumz-rgb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-26T19:00:59.000Z","updated_at":"2026-04-18T09:33:40.000Z","dependencies_parsed_at":"2025-07-29T17:58:18.317Z","dependency_job_id":"d4f9104e-6b61-49f2-9d3e-3ae899a745d2","html_url":"https://github.com/aurumz-rgb/ReviewAid","commit_stats":null,"previous_names":["aurumz-rgb/reviewaid"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/aurumz-rgb/ReviewAid","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurumz-rgb%2FReviewAid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurumz-rgb%2FReviewAid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurumz-rgb%2FReviewAid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurumz-rgb%2FReviewAid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aurumz-rgb","download_url":"https://codeload.github.com/aurumz-rgb/ReviewAid/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aurumz-rgb%2FReviewAid/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32000740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["academic-research","ai-assistant","ai-tool","data-extraction","literature-review","medical-research","open-source","python","research-ai","research-automation","research-tool","screening-tool","streamlit","systematic-reviews"],"created_at":"2026-04-05T13:00:29.856Z","updated_at":"2026-04-19T09:00:54.657Z","avatar_url":"https://github.com/aurumz-rgb.png","language":"Python","funding_links":[],"categories":["Examples"],"sub_categories":[],"readme":"![Banner](assets/RA_banner111.png)\n\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)\n[![Streamlit](https://img.shields.io/badge/Streamlit-1.28+-red.svg)](https://streamlit.io/)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.18060972.svg)](https://doi.org/10.5281/zenodo.18060972)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/pteroisvolitans12/ReviewAid/graphs/commit-activity)\n[![Open Source](https://badges.frapsoft.com/os/v1/open-source.svg?v=103)](https://github.com/ellerbrock/open-source-badges/)\n[![CI](https://github.com/aurumz-rgb/ReviewAid/actions/workflows/python-app.yml/badge.svg)](https://github.com/aurumz-rgb/ReviewAid/actions/workflows/python-app.yml)\n[![Journal of Open Research Software](https://img.shields.io/badge/JORS-14(1):21-4b8bbe)](https://doi.org/10.5334/jors.672)\n\n\n**Code \u0026 Archive (Zenodo DOI):** [10.5281/zenodo.18060972](https://doi.org/10.5281/zenodo.18060972)\n\n**Journal of Open Research Software:** [10.5334/jors.672](https://doi.org/10.5334/jors.672)\n\n**ReviewAid Validation Repository:** [ReviewAid Validation GitHub Repo](https://github.com/ReviewAid/Validation)\n\n\n![OpenAI](assets/openai.png)\n![Anthropic](assets/anthropic1.png)\n![DeepSeek](assets/deepseek.png)\n![Cohere](assets/cohere.png)\n![Z.ai](assets/zai.png)\n![Ollama](assets/ollama1.png)\n\n\n**ReviewAid** is an AI-powered Research article full-text Screener and Extractor designed to streamline the systematic review process. Upload research papers, automatically screen for relevance, extract key data fields, and accelerate your literature review workflow — all in one intuitive, easy-to-use web tool.\n\n---\n\n\u003cdetails\u003e\n \u003csummary\u003e Quick Start\u003c/summary\u003e\n\n\n## ⚡ Usage (Online)\n\n1.  **Launch Online Streamlit hosted web app**\n\n\n2.  **Select Mode:**\n    *   **Full-text Paper Screener:** Choose this mode to screen papers based on PICO (Population, Intervention, Comparison, Outcome) criteria.\n    *   **Full-text Data Extractor:** Choose this mode to extract specific fields (Author, Year, Conclusion, etc.) from research papers.\n\n3.  **Workflow (Screener):**\n    *   Enter your PICO criteria (Inclusion/Exclusion) in the input fields.\n    *   Upload your PDF papers (Batch upload supported).\n    *   Click \"Screen Papers\".\n    *   Monitor the \"System Terminal\" for real-time logs of extraction, API calls, and processing status.\n    *   View the \"Screening Dashboard\" for a pie chart of Included/Excluded/Maybe decisions.\n    *   Download results as CSV, XLSX, or DOCX.\n\n4.  **Workflow (Extractor):**\n    *   Enter the fields you want to extract (comma-separated).\n    *   Upload your PDF papers.\n    *   Click \"Process Papers\".\n    *   Monitor the \"System Terminal\" for logs.\n    *   View extracted data in the dashboard.\n    *   Download extracted data as CSV, XLSX, or DOCX.\n\n5. **Configuration:**\n    *  For using API key, you can select the respective AI model in either Screener/Extractor.\n\n---\n\n## ⚡ Usage (run streamlit Locally)\n\n![Terminal](screenshots/terminal.png)\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/aurumz-rgb/ReviewAid.git\n   cd ReviewAid\n   ```\n\n2. **Create and activate a virtual environment (recommended)**\n\n   ```bash\n   python -m venv venv\n   source venv/bin/activate        # macOS / Linux\n   venv\\Scripts\\activate           # Windows\n   ```\n\n3. **Install dependencies**\n\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. **Start the Streamlit application**\n\n   ```bash\n   streamlit run app.py\n   ```\n\n5. **Configure Ai model along with API key inside the UI**\n\n   * Select **AI model** as the provider\n   * Use API key\n\n\u003c/details\u003e\n\n---\n\n\u003cdetails\u003e\n \u003csummary\u003eConfiguration\u003c/summary\u003e\n\n\n![OpenAI](assets/openai.png)\n![Anthropic](assets/anthropic1.png)\n![DeepSeek](assets/deepseek.png)\n![Cohere](assets/cohere.png)\n![Z.ai](assets/zai.png)\n![Ollama](assets/ollama1.png)\n\nSeamlessly switch between AI models in the default setup without an API key, and also connect external providers using API keys like:\n\n* [OpenAI](https://openai.com)\n* [Anthropic (Claude)](https://claude.ai)\n* [DeepSeek](https://www.deepseek.com)\n* [Cohere](https://cohere.com)\n* [Z.ai](https://z.ai)\n* [Ollama (local execution)](https://ollama.com)\n\n\u003e **Privacy Note**\n\u003e To protect user privacy, API keys are never stored at any time.\n\n\n| Feature              | Cloud Providers (OpenAI, Anthropic, etc.) | Ollama (Local Execution)          |\n| -------------------- | ----------------------------------------- | --------------------------------- |\n| Internet Required    | ✅ Yes                                     | ❌ No                              |\n| API Key Required     | ✅ Yes                                     | ❌ No                              |\n| Data Sent Externally | ✅ Yes (to provider API)                   | ❌ No (runs locally)               |\n| Setup Complexity     | Low (just API key)                        | Moderate (install Ollama + model) |\n| Performance          | Depends on provider infrastructure        | Depends on your local hardware    |\n| Privacy Level        | Standard API-based                        | Maximum (fully offline)           |\n| Cost                 | Pay-per-usage (API billing)               | Free after local setup            |\n\n\n### ✅ Tested \u0026 Supported Models\n\nThe following models were successfully tested for the supported tasks:\n\n* **OpenAI** — `GPT-4o`\n* **DeepSeek** — `deepseek-chat`\n* **Cohere** — `command-a-03-2025`\n* **Z.ai** — `GLM-4.6V-Flash`, `GLM-4.5V-Flash` , `GLM-4.7-Flash`\n* **Anthropic** — `Claude-Sonnet-4-20250514`\n* **Ollama (local)** — `Llama3`\n\n**Default model:** `GLM-4.6V-Flash`\n\n\n## ⚙️ Configuration File\n\nReviewAid does not require a separate configuration file.\n\nAll API keys and AI model selections are securely entered directly within the Streamlit user interface during runtime.\n\nNo `.env`, YAML, or JSON configuration files are required.\n\n\u003c/details\u003e\n\n---\n\n## 🚀 Features\n\n- **AI-based full-text screening:** Quickly filter large batches of research articles based on your custom inclusion and exclusion criteria.  \n- **Extraction:** Extract any part of the paper you want! \n- **Customizable data extraction:** Define exactly what data fields you want extracted, and let's AI do the heavy lifting.  \n- **Bulk PDF upload \u0026 management:** Easily upload and organize hundreds of research articles in PDF format.\n- **Clean, modern, and responsive UI:** Focus on your research without distractions thanks to a sleek interface built with Streamlit.  \n- **Privacy-first approach:** Your uploaded documents and API keys stay private and are never stored or shared.  \n- **Open-source and extensible:** Built on Python and Streamlit for easy customization and community contributions.  \n\n- **NOTE ‼️:** \n\n1. ReviewAid is used as a supplementary tool alongside manual screening and data extraction to minimise errors and improve research accuracy, without replacing human judgment. \n  \n2. Please restrict each submission to a maximum of **20 articles**. Submissions exceeding this limit will result in processing of only the first 20 articles, after which the process will **terminate** prematurely. Kindly adhere to this restriction. **Please respect this limit.**\n\n---\n\n\n## 📝 Important Notes\n\n- **Performance:**  \n  Depending on the number and size of PDFs uploaded and your internet connection, AI processing can take some time. Please be patient — progress indicators and terminal will keep you updated. \n\n\n- **Limitations:**  \n  The web is hosted on Streamlit and hence users may face **cold starts** when the user has to wait **30 seconds** for the web to initialise. \n  As per tool usage, the developer may decide to host it on better sources to avoid such **cold starts**.\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003e Running ReviewAid Locally with Ollama\u003c/summary\u003e\n\nReviewAid supports **local inference using Ollama**, allowing you to run the application **without any external API keys**. This is ideal for users who prefer offline usage, enhanced privacy, or full local control.\n\n### ✅ Prerequisites\n\nEnsure the following are installed on your system:\n\n* **Python 3.12+**\n* **Ollama** (installed and running locally)\n\n  * Download: [https://ollama.com](https://ollama.com)\n* At least one supported Ollama model (e.g., `llama3`)\n\nPull a model (example):\n\n```bash\nollama pull llama3\n```\n\nVerify Ollama is running:\n\n```bash\nollama list\n```\n\n---\n\n### ▶️ Running ReviewAid with Ollama\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/aurumz-rgb/ReviewAid.git\n   cd ReviewAid\n   ```\n\n2. **Create and activate a virtual environment (recommended)**\n\n   ```bash\n   python -m venv venv\n   source venv/bin/activate        # macOS / Linux\n   venv\\Scripts\\activate           # Windows\n   ```\n\n3. **Install dependencies**\n\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. **Start the Streamlit application**\n\n   ```bash\n   streamlit run app.py\n   ```\n\n5. **Configure Ollama inside the UI**\n\n   * Select **Ollama (Local)** as the provider\n   * Choose a local model (e.g., `llama3`)\n   * No API key is required\n\n---\n\n### 🔒 Privacy Advantage\n\nWhen using Ollama:\n\n* All inference runs **entirely on your local machine**\n* No data is sent to external servers\n* No API keys are required or stored\n\nThis makes Ollama the **most privacy-preserving configuration** supported by ReviewAid.\n\n---\n\n### ⚠️ Notes\n\n* Performance depends on your local hardware (CPU/GPU/RAM)\n* Large PDFs or batch sizes may take longer on CPU-only systems\n* For best results, ensure Ollama is running **before** launching Streamlit\n\n\u003c/details\u003e\n\n---\n\n## System Architecture \n\n![Layers1](screenshots/Layers11.png)  \n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003e Confidence Scoring System\u003c/summary\u003e\n\nThis system implements a **hierarchical four-tier confidence model** designed to maximize precision and minimize false classifications during automated paper screening and data extraction. The logic prioritizes **deterministic rule-based decisions** before progressively falling back to algorithmic and heuristic estimation only when necessary.\n\n\n## ❓ Overview\n\nThe confidence score reflects how reliably a paper has been classified or extracted. Scores range from **0.0 to 1.0**, where higher values indicate stronger certainty and lower values explicitly flag the need for manual review.\n\nThe system operates in the following order:\n\n1. Deterministic Rule-Based Classification  (Screener specific)\n2. LLM Self-Assessment  \n3. Heuristic Keyword Estimation  \n4. Low-Confidence Default  \n\nText: Tier 1 (Deterministic) \n→\n Tier 2 (LLM) \n→\n Tier 3 (Heuristic) \n→\n Tier 4 (Default).\n\nEach tier is only activated if the previous tier fails to produce a valid and reliable result.\n\n![Fig1](screenshots/Fig1.png)  \n\n\n## ✔️ Tier 1: Deterministic Rule-Based Classification (Highest Priority) \n\n**Purpose:** Eliminate ambiguity using explicit user-defined rules. For screener, Extractor starts directly from Tier 2.\n\n**Logic:**\n- The system performs a preliminary scan for **exclusion** and **inclusion** keywords.\n- If **exclusion keywords are detected without any corresponding inclusion keywords**, the paper is:\n  - Automatically classified as **Excluded**\n  - Assigned a **confidence score of 1.0 (100%)**\n- If **both exclusion and inclusion keywords** are present:\n  - This tier is **bypassed** to avoid false positives\n  - The decision is delegated to the AI-based evaluation\n\n**Rationale:**  \nExplicit rules provide deterministic certainty and override probabilistic inference when applicable.\n\n\n## ✔️ Tier 2: LLM Self-Assessment (Primary Mechanism)\n\n**Purpose:** Leverage the model’s internal reasoning and evidence-based judgment.\n\n**Logic:**\n- The Large Language Model (LLM) is explicitly instructed to:\n  - Evaluate its own screening or extraction decision\n  - Assign a **confidence score between 0.0 and 1.0**\n  - Base the score strictly on **explicit textual evidence**\n- The confidence value is parsed directly from the model’s structured JSON output\n\n**Rationale:**  \nThis tier captures nuanced contextual understanding that deterministic rules cannot, while maintaining transparency through self-reported certainty.\n\n\n## ✔️ Tier 3: Heuristic Keyword Estimation (Fallback)\n\n**Purpose:** Provide a probabilistic estimate when LLM confidence is unavailable.\n\n**Triggered when:**\n- The LLM fails to return a valid confidence value (e.g., formatting or JSON parsing errors)\n\n**Screener Logic:**\n- The system analyzes the users input **Inclusions and Exclusions criteria** and matches with the paper's full-text and determines the confidence level.\n\n**Extractor Logic:**\n- The system analyzes **Extracted data** with the paper's full-text and determines the confidence level.\n\n\n**Rationale:**  \nThis tier offers a best-effort estimate derived from text structure rather than semantic certainty.\n\n\n## ✔️ Tier 4: Low-Confidence Default (Last Resort)\n\n**Purpose:** Explicitly flag unreliable outputs.\n\n**Triggered when:**\n- Data extraction fails entirely (e.g., Regex failure or missing sections)\n\n**Logic:**\n- Assigns a **baseline low confidence score** (e.g., `0.2`)\n- Automatically flags the result for **mandatory manual review**\n\n**Rationale:**  \nPrevents silent failures by clearly signaling unreliability.\n\n\nThis layered approach ensures that high-confidence decisions are automated safely, while ambiguous or unreliable cases are clearly flagged for human oversight.\n\n\n---\n\n## ⭐ Confidence Score Interpretation\n\n| Confidence Score | Classification | Description | Implication |\n|------------------|---------------|-------------|-------------|\n| **1.0 (100%)** | Definitive Match | Deterministic rule-based classification / No ambiguity. | Fully automated decision |\n| **0.8 – 1.00** | Very High Confidence | AI strongly validates the decision using explicit textual evidence. | Safe to accept |\n| **0.6 – 0.79** | High Confidence | Criteria appear satisfied based on standard academic structure and content. | Review optional |\n| **0.4 – 0.59** | Moderate Confidence | Ambiguous context or loosely met criteria. | Manual verification recommended |\n| **0.1 – 0.39** | Low Confidence | Based mainly on heuristic keyword estimation. | High risk of error |\n| **\u003c 0.1** | Unreliable | Derived from fallback or failed extraction methods. | Mandatory manual review |\n\n\u003c/details\u003e\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eBulletproof Parsing Pipeline\u003c/summary\u003e\n\n**Purpose:** Safely parse API/AI responses, even if the JSON is broken or missing.\n\n![Fig2](screenshots/Fig2.png) \n\n### Flow\n\n1. **If `raw_result` is `None`**\n   → Use regex to extract data locally.\n\n2. **Clean the response**\n   → Remove Markdown, comments, and trailing commas.\n\n3. **Try standard JSON parsing**\n   → `json.loads`\n\n4. **If that fails, try JSON5**\n   → Handles loose / malformed JSON.\n\n5. **If that fails, use AI repair**\n   → Ask AI to fix the JSON.\n\n6. **Final fallback**\n   → Extract known keys using regex.\n\n### Guarantee\n\n* Never crashes\n* Always attempts to recover usable data\n\n\u003c/details\u003e\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eOCR – Advanced Image Data Extraction\u003c/summary\u003e\n\n**Purpose:** Extract structured data from images using OCR before parsing.\n\nThe system uses Optical Character Recognition (OCR) to convert image content into structured text for downstream processing.\n\nInitially, the project was built with **PaddleOCR** for higher accuracy. However, due to deployment limitations on Streamlit servers, it now uses **pytesseractOCR**, a Python wrapper for **Google Tesseract-OCR**.\n\nFor local deployment with higher accuracy, you can use the PaddleOCR version here: [ReviewAid-OCR](https://github.com/ReviewAid/ReviewAid-OCR)\n\n![pytesseractOCR](assets/pytesseract.png)\n\n### OCR Workflow (Tesseract)\n\n- Image is processed using the Tesseract OCR engine  \n- Text is extracted and cleaned for improved accuracy  \n- Output is structured and forwarded to the parsing pipeline  \n- Handles noisy, scanned, and complex images reliably  \n\nOfficial pytesseract repository: [madmaze/pytesseract](https://github.com/madmaze/pytesseract)\n\n\u003c/details\u003e\n\n---\n\n## 📸 Screenshots\n\n### User Interface\n![User Interface](screenshots/1.png)  \n\n\n### Screener\n![Screener1](screenshots/screener1.png)  \n\n![Screener4](screenshots/screener3.png) \n\n![Screener2](screenshots/screener2.png) \n\n![Screener3](screenshots/screener-results1.png) \n\n\n\n### Extractor\n![Extractor1](screenshots/extractor1.png)  \n\n![Extractor3](screenshots/extractor3.png) \n\n![Extractor4](screenshots/extractor-results1.png) \n\n![Extractor5](screenshots/extractor-results2.png) \n\n---\n\nCheck out the full **ReviewAid** walkthrough and demos on YouTube:\n\n[![Watch ReviewAid Demo](https://img.shields.io/badge/YouTube-Watch_Now-red?style=for-the-badge\\\u0026logo=youtube)](https://www.youtube.com/watch?v=M2S32pPaQE4) — *Using ReviewAid: How it works*\n\n[![Watch ReviewAid Configuration](https://img.shields.io/badge/YouTube-Watch_Now-red?style=for-the-badge\\\u0026logo=youtube)](https://www.youtube.com/watch?v=vNWXX8w1JNc) — *ReviewAid AI Models: How to configure*\n\n\n---\n\n## 🔗 Acknowledgements\n\n![ZAI](assets/GLM-4.6V-Flash.png)\n\nZ.ai GitHub: [zai-org](https://github.com/zai-org)\n\nI gratefully acknowledge the developers of **GLM (Z.ai)** for providing the **Default** AI model used in ReviewAid.  \n\nFor more information, please see the [GLM-4.6V-Flash paper](https://arxiv.org/abs/2507.01006) and [GLM-4.6V-Flash Hugging Face](https://huggingface.co/zai-org/GLM-4.6V-Flash).\n\nI would also like to thank [@Nightraven5115](https://github.com/Nightraven5115) for his thorough validation of ReviewAid, including batch testing, error checks, and confidence verification, which significantly improved the tool’s reliability and accuracy.\n\n---\n\n## 📌 Citation\n\nIf you use ReviewAid, please cite:\n\n**Sahu, V. and Balakrishnan, M. (2026) ‘ReviewAid: An Open-Source Tool for Efficient PICO-Based Screening and Data Extraction in Systematic Reviews’, Journal of Open Research Software, 14(1), p. 21.** Available at: [https://doi.org/10.5334/jors.672](https://doi.org/10.5334/jors.672)\n\n\n---\n\n##  License\n\n\u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\n  \u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/7/7e/Apache_Feather_Logo.svg\" alt=\"Apache 2.0 License\" height=\"120\"\u003e\n\u003c/a\u003e\n\nThis project is licensed under the *Apache 2.0 License*.\n\n---\n\n## 📨 Contact\n\nQuestions, feedback, or collaboration ideas? Reach out at [pteroisvolitans12@gmail.com](mailto:pteroisvolitans12@gmail.com) or open an issue on GitHub.\n\nContributions are always welcome!\n\n---\n\n*Happy reviewing! :)*\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faurumz-rgb%2FReviewAid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faurumz-rgb%2FReviewAid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faurumz-rgb%2FReviewAid/lists"}