{"id":51629225,"url":"https://github.com/kingabzpro/local-notice-check","last_synced_at":"2026-07-13T05:04:10.479Z","repository":{"id":364597558,"uuid":"1268508501","full_name":"kingabzpro/local-notice-check","owner":"kingabzpro","description":"Local AI assistant for reviewing suspicious Pakistani notices and messages with MiniCPM, Nemotron-Parse, and Docker CUDA support.","archived":false,"fork":false,"pushed_at":"2026-06-13T17:18:19.000Z","size":278,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T18:23:33.138Z","etag":null,"topics":["cuda","cybersecurity","docker","docker-compose","gradio","huggingface","huggingface-hackathon","huggingface-spaces","minicpm","nemotron","pakistan","pytorch","scam-detection","transformers","zerogpu"],"latest_commit_sha":null,"homepage":"https://huggingface.co/spaces/build-small-hackathon/noticecheck","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/kingabzpro.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-06-13T16:06:12.000Z","updated_at":"2026-06-13T17:18:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kingabzpro/local-notice-check","commit_stats":null,"previous_names":["kingabzpro/local-notice-check"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/kingabzpro/local-notice-check","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingabzpro%2Flocal-notice-check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingabzpro%2Flocal-notice-check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingabzpro%2Flocal-notice-check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingabzpro%2Flocal-notice-check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kingabzpro","download_url":"https://codeload.github.com/kingabzpro/local-notice-check/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingabzpro%2Flocal-notice-check/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35410681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-13T02:00:06.543Z","response_time":119,"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":["cuda","cybersecurity","docker","docker-compose","gradio","huggingface","huggingface-hackathon","huggingface-spaces","minicpm","nemotron","pakistan","pytorch","scam-detection","transformers","zerogpu"],"created_at":"2026-07-13T05:04:09.836Z","updated_at":"2026-07-13T05:04:10.474Z","avatar_url":"https://github.com/kingabzpro.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"static/mark.svg\" alt=\"NoticeCheck logo\" width=\"88\"\u003e\n\n# NoticeCheck\n\n**Review suspicious Pakistani messages and screenshots before you click, pay, or reply.**\n\n[![Hugging Face Space](https://img.shields.io/badge/Live_Demo-Hugging_Face-FFD21E?logo=huggingface\u0026logoColor=black)](https://huggingface.co/spaces/build-small-hackathon/noticecheck)\n[![Docker](https://img.shields.io/badge/Run_Locally-Docker_Compose-2496ED?logo=docker\u0026logoColor=white)](#run-locally)\n[![CUDA](https://img.shields.io/badge/GPU-NVIDIA_CUDA-76B900?logo=nvidia\u0026logoColor=white)](#requirements)\n[![Python](https://img.shields.io/badge/Python-3.12-3776AB?logo=python\u0026logoColor=white)](https://www.python.org/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\n[**Try the live demo**](https://huggingface.co/spaces/build-small-hackathon/noticecheck)\n·\n[**Read the field notes**](docs/field-notes.md)\n·\n[**View the trace dataset**](https://huggingface.co/datasets/build-small-hackathon/pakistan-notice-helper-traces)\n\n\u003c/div\u003e\n\n![NoticeCheck demo](docs/app-demo.gif)\n\nNoticeCheck is the fully local version of my earlier\n[Pakistan Notice Helper](https://huggingface.co/spaces/build-small-hackathon/pakistan-notice-helper),\ncreated for the Hugging Face Hackathon. It helps people review suspicious\nPakistani messages and screenshots before acting on them.\n\nThe app handles SMS messages, bank alerts, bills, courier notices, challans,\nemails, and screenshots. Each assessment includes:\n\n- a clear risk label\n- an evidence-based explanation\n- detected warning signs and pressure tactics\n- safer next steps\n- an optional reply draft\n\nThe hosted demo uses Hugging Face ZeroGPU. The same Transformers pipeline runs\nprivately on a local NVIDIA GPU through Docker Compose.\n\n## How It Works\n\n```mermaid\nflowchart LR\n    A{Input type}\n    B[Text notice]\n    C[Screenshot]\n    D[NVIDIA Nemotron-Parse v1.2]\n    E[Extracted text]\n    F[MiniCPM5-1B]\n    G[Structured risk assessment]\n    H[Risk label]\n    I[Warning signs]\n    J[Safer actions]\n    K[Optional reply]\n    L[(Privacy-safe trace)]\n\n    A --\u003e|Paste message| B\n    A --\u003e|Upload image| C\n    C --\u003e D --\u003e E\n    B --\u003e F\n    E --\u003e F\n    F --\u003e G\n    G --\u003e H\n    G --\u003e I\n    G --\u003e J\n    G --\u003e K\n    G -. Optional and redacted .-\u003e L\n```\n\n| Component | Technology |\n| --- | --- |\n| Reasoning model | `openbmb/MiniCPM5-1B` |\n| Screenshot OCR | `nvidia/NVIDIA-Nemotron-Parse-v1.2` |\n| Inference | PyTorch and Transformers |\n| Hosted compute | Hugging Face ZeroGPU |\n| Local compute | NVIDIA CUDA through Docker Compose |\n| Interface | Custom Gradio, HTML, CSS, and JavaScript |\n\n## Run Locally\n\n\u003e [!IMPORTANT]\n\u003e Local inference requires Docker Compose 2.30 or newer, a supported NVIDIA GPU\n\u003e with a current driver, NVIDIA Container Toolkit on Linux, and enough disk\n\u003e space and VRAM for both models.\n\nClone the repository, download its Git LFS assets, and confirm that NVIDIA\nContainer Toolkit exposes the GPU inside Docker:\n\n```bash\ngit clone https://github.com/kingabzpro/local-notice-check.git\ncd local-notice-check\n\ngit lfs install\ngit lfs pull\n\ndocker run --rm --gpus all \\\n  pytorch/pytorch:2.9.1-cuda12.8-cudnn9-runtime \\\n  python -c \"import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))\"\n\ndocker compose up --build\n```\n\nThe GPU check must report `True` and print the NVIDIA GPU name.\n\nOpen \u003chttp://localhost:7860\u003e.\n\nThe first run downloads both models. Docker stores them in a persistent volume,\nso later starts can reuse them.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eOptional environment variables\u003c/strong\u003e\u003c/summary\u003e\n\nCreate a `.env` file beside `compose.yaml` to override the defaults:\n\n```dotenv\nNOTICECHECK_PORT=7860\nTRANSFORMERS_MODEL_REPO=openbmb/MiniCPM5-1B\nMODEL_ENABLE_THINKING=0\nHF_TOKEN=\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eStop or completely remove the local stack\u003c/strong\u003e\u003c/summary\u003e\n\nStop the containers:\n\n```bash\ndocker compose down\n```\n\nRemove the containers and downloaded model volumes:\n\n```bash\ndocker compose down --volumes\n```\n\n\u003c/details\u003e\n\n## Privacy and Safety\n\nLocal Docker inference keeps notices and screenshots away from remote model\nAPIs. Optional trace publishing excludes raw text, screenshots, OCR text,\nlinks, identifiers, and full model responses. See the\n[trace dataset card](traces/dataset_card.md) for the schema and privacy rules.\n\n\u003e [!TIP]\n\u003e Leave `HF_TOKEN` empty to run locally without publishing privacy-safe traces\n\u003e to Hugging Face.\n\n\u003e [!WARNING]\n\u003e NoticeCheck provides decision support, not proof that a sender is genuine.\n\u003e Never share OTPs, PINs, passwords, CVVs, CNIC numbers, or card details.\n\u003e Verify suspicious messages through an official website, app, statement,\n\u003e card, or independently located helpline.\n\nThe interface and generated assessments are currently English-only. OCR may\ndetect other languages, but the app does not generate Urdu assessments.\n\n## Learn More\n\n- [Live Hugging Face Space](https://huggingface.co/spaces/build-small-hackathon/noticecheck)\n- [Privacy-safe trace dataset](https://huggingface.co/datasets/build-small-hackathon/pakistan-notice-helper-traces)\n- [Field notes: making NoticeCheck fully local](docs/field-notes.md)\n- [LinkedIn project post](https://www.linkedin.com/posts/1abidaliawan_huggingfacehackathon-huggingface-ai-ugcPost-7471594790506192896--_53/)\n- [MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingabzpro%2Flocal-notice-check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkingabzpro%2Flocal-notice-check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingabzpro%2Flocal-notice-check/lists"}