{"id":50745597,"url":"https://github.com/roshhellwett/projectsentinel","last_synced_at":"2026-06-10T20:30:47.694Z","repository":{"id":356390074,"uuid":"1231842000","full_name":"roshhellwett/projectsentinel","owner":"roshhellwett","description":"ᴀɴ ᴀɪ-ᴘᴏᴡᴇʀᴇᴅ, ꜰᴜʟʟʏ ᴀᴜᴛᴏᴍᴀᴛᴇᴅ ɪɴᴅɪᴀɴ ɴᴇᴡꜱ ᴀɢɢʀᴇɢᴀᴛᴏʀ","archived":false,"fork":false,"pushed_at":"2026-05-23T06:46:47.000Z","size":2622,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T08:28:39.238Z","etag":null,"topics":["projectsentinel","zenithopensourceprojects"],"latest_commit_sha":null,"homepage":"https://verifiedindian.vercel.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/roshhellwett.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-05-07T10:42:22.000Z","updated_at":"2026-05-23T06:46:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/roshhellwett/projectsentinel","commit_stats":null,"previous_names":["roshhellwett/projectsentinel"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/roshhellwett/projectsentinel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roshhellwett%2Fprojectsentinel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roshhellwett%2Fprojectsentinel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roshhellwett%2Fprojectsentinel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roshhellwett%2Fprojectsentinel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roshhellwett","download_url":"https://codeload.github.com/roshhellwett/projectsentinel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roshhellwett%2Fprojectsentinel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34170162,"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-06-10T02:00:07.152Z","response_time":89,"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":["projectsentinel","zenithopensourceprojects"],"created_at":"2026-06-10T20:30:46.337Z","updated_at":"2026-06-10T20:30:47.679Z","avatar_url":"https://github.com/roshhellwett.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Stars](https://img.shields.io/github/stars/roshhellwett/projectsentinel?style=for-the-badge)\n![Forks](https://img.shields.io/github/forks/roshhellwett/projectsentinel?style=for-the-badge)\n![Next.js](https://img.shields.io/badge/Next.js-15-black?style=for-the-badge\u0026logo=next.js\u0026logoColor=white)\n![Python](https://img.shields.io/badge/Python-3.11-3776AB?style=for-the-badge\u0026logo=python\u0026logoColor=white)\n![Groq](https://img.shields.io/badge/Groq-Llama%203.3-0a84ff?style=for-the-badge)\n\n# INDIA VERIFIED\n\nAn AI-powered, fully automated Indian news aggregator that cross-references stories across multiple trusted sources before publishing. Zero human intervention. No ads. No bias.\n\n---\n\n## Key Features\n\n### AI Verification Pipeline\n- **Automated Fact-Checking**: Every story is verified using Groq Llama 3.3 70B before it reaches your screen\n- **Multi-Source Cross-Reference**: Stories must be confirmed by 2+ independent trusted sources or they are discarded\n- **Credibility Scoring**: Every article receives a 0–100 credibility score based on source authority, detail richness, and writing tone\n- **Neutral AI Writing**: Verified facts are rewritten into unbiased, factual summaries — no sensationalism, no spin\n\n### Fully Autonomous\n- **Runs 24/7**: Fetches news from RSS feeds and APIs every 30 minutes — no human editors needed\n- **SHA256 Deduplication**: Duplicate stories are automatically filtered out using URL hashing\n- **Domain Blocklist**: Known satire, spam, and fake-news domains are blocked at the pipeline level\n- **Structured Logging**: Full observability with detailed pipeline logs to stdout\n\n### Premium Reading Experience\n- **Clean, Distraction-Free**: Apple-inspired editorial design with frosted glass cards and subtle animations\n- **Infinite Scroll**: Smooth auto-loading feed with no pagination\n- **Real-Time Category Filtering**: Browse news by Politics, Business, Sports, Tech, and more\n- **RSS Feed**: Subscribe via your favourite RSS reader for offline access\n\n---\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|-----------|\n| Frontend | Next.js 15 + TypeScript + Tailwind CSS |\n| Backend | Python 3.11 + FastAPI |\n| Database | Supabase (PostgreSQL) |\n| AI Verification | Groq API (Llama 3.3 70B) |\n| AI Writing | Groq API (Llama 3.3 70B) |\n| Hosting | Vercel (frontend), Railway (worker) |\n\n---\n\n## Project Structure\n\n```\nprojectsentinel/\n├── frontend/              # Next.js application\n│   ├── app/               # App router (pages, API routes)\n│   ├── components/        # Reusable UI components\n│   ├── lib/               # Supabase client, utilities\n│   └── public/            # Static assets\n├── worker/                # Python verification pipeline\n│   ├── fetcher/           # RSS \u0026 API news fetching\n│   ├── verifier/          # Groq AI cross-referencing\n│   ├── writer/            # Neutral summary generation\n│   ├── publisher/         # Database insert logic\n│   └── scheduler/         # Cron-based orchestration\n├── supabase/              # Database migrations \u0026 schema\n└── .github/               # CI/CD workflows\n```\n\n---\n\n## How the Pipeline Works\n\n```\nFetch → Deduplicate → Block Check → False Claim Match\n  → Cross-Source Check → AI Verification → AI Writing → Publish\n```\n\n1. **Fetch**: RSS feeds + news APIs → `raw_articles` table\n2. **Deduplicate**: SHA256 URL hashing prevents duplicates\n3. **Block Check**: Skip known satire and spam domains\n4. **False Claim Match**: Cross-check against known false claims\n5. **Cross-Source Check**: Require 2+ independent sources\n6. **Groq Verification**: Score 0–100, extract key facts, headline, summary\n7. **Groq Writing**: Write neutral, factual headline + summary\n8. **Publish**: Insert verified story into `posts` table\n\n---\n\n## License\n\nMIT — Open source and free to use.\n\n---\n\n## Transparency\n\n- Full source code available on GitHub\n- Credibility score displayed on every story\n- All original source links visible\n- Correction system for errors\n- No ads, no sponsored content\n\n---\n\n© 2026 [Zenith Open Source Projects](https://zenithopensourceprojects.vercel.app/). All Rights Reserved.\nZenith is an Open Source Project Idea by @roshhellwett\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froshhellwett%2Fprojectsentinel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froshhellwett%2Fprojectsentinel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froshhellwett%2Fprojectsentinel/lists"}