{"id":42822844,"url":"https://github.com/dmunish/reach","last_synced_at":"2026-01-31T07:01:17.627Z","repository":{"id":331562930,"uuid":"1127542343","full_name":"dmunish/reach","owner":"dmunish","description":"AI-powered disaster alert system for Pakistan that automatically processes official emergency warning documents.","archived":false,"fork":false,"pushed_at":"2026-01-27T22:09:14.000Z","size":4027,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-28T07:33:59.036Z","etag":null,"topics":["ai","data-aggregation","disaster-preparedness","disaster-risk-reduction","early-warning-systems","vlm"],"latest_commit_sha":null,"homepage":"https://reach-prototype.netlify.app/","language":"TypeScript","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/dmunish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-04T05:11:57.000Z","updated_at":"2026-01-27T22:09:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dmunish/reach","commit_stats":null,"previous_names":["dmunish/reacher","dmunish/reach"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dmunish/reach","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmunish%2Freach","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmunish%2Freach/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmunish%2Freach/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmunish%2Freach/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmunish","download_url":"https://codeload.github.com/dmunish/reach/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmunish%2Freach/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28932539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T04:05:25.756Z","status":"ssl_error","status_checked_at":"2026-01-31T04:02:35.005Z","response_time":128,"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":["ai","data-aggregation","disaster-preparedness","disaster-risk-reduction","early-warning-systems","vlm"],"created_at":"2026-01-30T07:00:33.194Z","updated_at":"2026-01-31T07:01:17.622Z","avatar_url":"https://github.com/dmunish.png","language":"TypeScript","funding_links":[],"categories":["Examples"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/dmunish/reach/blob/main/Assets/REACH-Banner.png?raw=true\" height=400 width=\"auto\" alt=\"REACH Banner\" /\u003e\n\u003c/p\u003e\n\n# REACH\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eReal-time Emergency Alert Collection Hub\u003c/b\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  An AI-powered warning system to bridge official disaster forecasts and the community in Pakistan.\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n  \u003cimg src=\"https://img.shields.io/badge/Status-In%20Development-orange?style=for-the-badge\" alt=\"Status\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Stack-React%20%7C%20Python%20%7C%20Supabase-blue?style=for-the-badge\" alt=\"Stack\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green?style=for-the-badge\" alt=\"License\" /\u003e\n\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n## \u003cimg src=\"Assets\\telescope-green.svg\" width=\"24\" height=\"24\" style=\"vertical-align: middle; filter: invert(1);\"\u003e The Problem\nPakistan faces a critical disconnect in its disaster management infrastructure. While agencies like NDMA and PMD generate vital data, the \"last mile\" of communication is broken.\n\n\u003ctable width=\"100%\"\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3 align=\"center\"\u003e\u003cimg src=\"Assets\\circle-pile-green.svg\" width=\"20\" height=\"20\" style=\"vertical-align: middle;\"\u003e Fragmentation\u003c/h3\u003e\n      \u003cp align=\"center\"\u003eCritical alerts are scattered across isolated agencies, or locked inside static PDF bulletins.\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3 align=\"center\"\u003e\u003cimg src=\"Assets\\snail-green.svg\" width=\"20\" height=\"20\" style=\"vertical-align: middle;\"\u003e Latency \u0026 Jargon\u003c/h3\u003e\n      \u003cp align=\"center\"\u003eReports are often verbose, technical, and require manual parsing, leading to dangerous delays in dissemination.\u003cbr\u003e\u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003ch3 align=\"center\"\u003e\u003cimg src=\"Assets\\locate-fixed-green.svg\" width=\"20\" height=\"20\" style=\"vertical-align: middle;\"\u003e Zero Targeting\u003c/h3\u003e\n      \u003cp align=\"center\"\u003eWarnings are broadcast at the national level, causing alert fatigue. Faulty systems to deliver geofenced alerts.\u003cbr\u003e\u003cbr\u003e\u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n## \u003cimg src=\"Assets\\cpu-green.svg\" width=\"24\" height=\"24\" style=\"vertical-align: middle;\"\u003e The Solution\nREACH is an automated pipeline that ingests raw government data and transforms it into precision-targeted, actionable alerts. We treat disaster alerts as **spatial data problems**, not just text problems.\n\n### How it works\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Assets\\REACH-Architecture.png\" width=\"auto\" height=\"400\" alt=\"Architecture Diagram\" /\u003e\n\u003c/p\u003e\n\n1.  **Ingestion:** Scrapers check bulletins (NDMA, NEOC, PMD) every 10 minutes for updates.\n2.  **Normalization:** AI processes fetched documents in under 30 seconds to extract severity, timeline, description, etc. and convert it to a CAP (Common Alerting Protocol)-inspired schema.\n3.  **Geocoding:** A custom service resolves location names to polygons. It handles complex directional variants (e.g., \"North Khyber Pakhtunkhwa\") using grid intersection logic over administrative boundaries.\n4.  **Distribution:** Normalized data is stored in our database and served via web app for visualization and filtering.\n\n\u003cbr\u003e\n\n## \u003cimg src=\"Assets\\layers-green.svg\" width=\"24\" height=\"24\" style=\"vertical-align: middle; filter: invert(1);\"\u003e Tech Stack\nOur architecture is built for speed, resilience, and geospatial accuracy.\n\n| **Component**            | **Technology**                                                                                                         | **Description**                                                                     |\n| :----------------------- | :--------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------- |\n| **Frontend**             | \u003cimg src=\"https://skillicons.dev/icons?i=react,ts,tailwind\" valign=\"middle\" /\u003e                                         | React, TypeScript, and Mapbox for web app.                                          |\n| **Services**             | \u003cimg src=\"https://skillicons.dev/icons?i=python,fastapi\" valign=\"middle\" /\u003e                                            | Python microservices handling business logic and scraping.                          |\n| **Backend and Database** | \u003cimg src=\"https://skillicons.dev/icons?i=supabase,postgres\" valign=\"middle\" /\u003e                                         | **Supabase** for storing alerts, geometries, cron jobs and message queues           |\n| **AI Engine**            | \u003cimg src=\"https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/google-gemini.svg\" width=\"40\" valign=\"middle\" /\u003e | Gemini-3-Flash for high-speed inference for document parsing and entity extraction. |\n\n\u003cbr\u003e\n\n## \u003cimg src=\"Assets\\images-green.svg\" width=\"24\" height=\"24\" style=\"vertical-align: middle; filter: invert(1);\"\u003e Visuals\n\n|                               **Alert Polygon and Centroid Visualization**                               |                               **Searching Historical Alerts**                               |\n| :-----------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: |\n| \u003cimg src=\"Assets/Screenshot-Polygon-Centroid.png\" width=\"100%\" /\u003e |  \u003cimg src=\"Assets/Screenshot-Searching.png\" width=\"100%\" /\u003e   |\n|                                  **Filtering By Location**                                  |                                       **User Guide**                                       |\n| \u003cimg src=\"Assets/Screenshot-Filtering-Location.png\" width=\"100%\" /\u003e | \u003cimg src=\"Assets/Screenshot-User-Guide.png\" width=\"100%\" /\u003e |\n\n\u003cbr\u003e\n\n## \u003cimg src=\"Assets\\map-green.svg\" width=\"24\" height=\"24\" style=\"vertical-align: middle; filter: invert(1);\"\u003e Roadmap\n- [x] **Scrapers:** Automated bots hitting NDMA, NEOC, and PMD public sources on a 10-minute cron\n- [x] **AI Pipeline:** Document processing pipeline achieving \u003c30s latency per report using Gemini 3 Flash\n- [x] **Spatial Engine:** Heuristic geocoder capable of parsing admin regions and directional descriptors into polygons\n- [x] **Web Dashboard:** A responsive React application for searching alerts, filtering by severity/date, and visualizing risk zones on an interactive map\n- [ ] **Deduplication:** Logic to merge overlapping reports from different agencies into a single \"Source of Truth\" event\n- [ ] **UX Polish:** Refining the dashboard based on early user feedback\n- [ ] **Alerts:** Notifications for user apps based on their GPS location\n- [ ] **Performance:** Optimizing database and backend for better performance\n- [ ] **Mobile Apps:** Apps for Android and iOS to get information to all users conveniently\n- [ ] **Advanced Geocoding:** Improving the heuristic engine to resolve roadways, hydrology (rivers/dams), and bridges\n- [ ] **Data Expansion:** Integrating social media firehose (validated) and international weather APIs\n\n\u003cbr\u003e\n\n## \u003cimg src=\"Assets\\heart-handshake-green.svg\" width=\"24\" height=\"24\" style=\"vertical-align: middle; filter: invert(1);\"\u003e Acknowledgements\n- NDMA, NEOC, and PMD for their tireless work in disaster monitoring\n- The open-source community for incredible tools and libraries\n- Render, Modal, Supabase and Netlify for allowing us to host our app's services for free\n- Communities affected by the 2025 floods - this is for you\n\nAnd the [![Featured on Awesome README](https://awesome.re/badge-flat.svg)](https://github.com/matiassingers/awesome-readme) project for featuring us.\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eBuilt with \u003cimg src=\"Assets\\heart-solid-green.svg\" width=\"12\" height=\"12\" style=\"vertical-align: middle;\"\u003e for a safer Pakistan.\u003c/sub\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmunish%2Freach","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmunish%2Freach","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmunish%2Freach/lists"}