{"id":48109733,"url":"https://github.com/parva101/accesscheck","last_synced_at":"2026-04-04T16:02:11.319Z","repository":{"id":346025400,"uuid":"1188262621","full_name":"Parva101/AccessCheck","owner":"Parva101","description":"Accessibility Auditor Platform","archived":false,"fork":false,"pushed_at":"2026-03-22T01:22:51.000Z","size":89,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-22T10:55:16.460Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Parva101.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-21T20:49:46.000Z","updated_at":"2026-03-22T01:22:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Parva101/AccessCheck","commit_stats":null,"previous_names":["parva101/accesscheck"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Parva101/AccessCheck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parva101%2FAccessCheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parva101%2FAccessCheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parva101%2FAccessCheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parva101%2FAccessCheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Parva101","download_url":"https://codeload.github.com/Parva101/AccessCheck/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Parva101%2FAccessCheck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31405207,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"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":[],"created_at":"2026-04-04T16:01:59.888Z","updated_at":"2026-04-04T16:02:11.292Z","avatar_url":"https://github.com/Parva101.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ♿ AccessCheck — AI-Powered Accessibility Auditor\n\n\u003e Paste a YouTube property tour → get an instant ADA accessibility audit with severity scores and fix recommendations — all powered by FiftyOne.\n\nBuilt for the [Agents World: Visual AI Hackathon at ASU](https://voxel51.com/events/agents-world-visual-ai-hackathon-at-asu-march-21-2026) — March 21, 2026.\n\n---\n\n## What It Does\n\nAccessCheck is a Visual AI platform that audits buildings, sidewalks, and properties for **ADA accessibility compliance**. It takes YouTube property tour videos OR street-level images, analyzes them with an AI agent powered by Gemini Vision, and produces a scored accessibility report with specific issues, severity ratings, and remediation suggestions.\n\n### Features\n\n- 🎬 **YouTube → Dataset** — Paste any property tour URL, smart frame extraction with scene-change detection and perceptual dedup\n- 🤖 **AI Accessibility Agent** — Gemini Vision analyzes each image for ADA barriers (missing ramps, narrow doorways, no grab bars, blocked paths, etc.)\n- 📊 **Structured Scoring** — Every image gets an accessibility score (0-100), issue categories, severity ratings, and specific fix recommendations\n- 🧠 **Embedding Clustering** — FiftyOne Brain groups similar accessibility issues together for pattern discovery\n- 📋 **Automated Report** — Aggregated property-level score with prioritized remediation plan\n\n---\n\n## Architecture\n\n```\nYouTube URL / Images / HuggingFace Dataset\n        │\n        ▼\n┌──────────────────────────┐\n│  video-sampler plugin    │  ← NEW plugin (bonus prize)\n│  Smart frame extraction  │\n└──────────┬───────────────┘\n           ▼\n┌──────────────────────────┐\n│  Gemini Vision VLM       │  ← Accessibility audit prompt\n│  (gemini-vision-plugin)  │\n└──────────┬───────────────┘\n           ▼\n┌──────────────────────────┐\n│  FiftyOne Brain          │  ← CLIP embeddings + clustering\n│  (@voxel51/brain)        │\n└──────────┬───────────────┘\n           ▼\n┌──────────────────────────┐\n│  Scoring + Report        │  ← Aggregation, priority ranking\n└──────────────────────────┘\n```\n\n---\n\n## Quick Start\n\n### 1. Install dependencies\n```bash\npip install -r requirements.txt\n```\n\n### 2. Install FiftyOne plugins\n```bash\nfiftyone plugins download https://github.com/AdonaiVera/gemini-vision-plugin\n```\n\n### 3. Install our video-sampler plugin\n```bash\n# Windows PowerShell\nCopy-Item -Recurse .\\plugins\\video-sampler \"$env:USERPROFILE\\.fiftyone\\plugins\\video-sampler\"\n\n# macOS/Linux\ncp -r ./plugins/video-sampler ~/.fiftyone/plugins/video-sampler\n```\n\n### 4. Set your Gemini API key\n```bash\n# Get a free key at https://aistudio.google.com/apikey\n\n# Windows PowerShell\n$env:GEMINI_API_KEY = \"your-key-here\"\n\n# macOS/Linux\nexport GEMINI_API_KEY=\"your-key-here\"\n```\n\n### 5. Run the demo\n```bash\ncd src\n\n# Default: Rotterdam accessibility dataset (50 samples for quick demo)\npython demo.py --rotterdam --max-samples 50\n\n# From a YouTube property tour\npython demo.py --youtube \"https://www.youtube.com/watch?v=VIDEO_ID\"\n\n# From local images\npython demo.py --images /path/to/images\n```\n\n---\n\n## Project Structure\n\n```\nAccessCheck/\n├── README.md                    # This file\n├── ACCESS_CHECK_PROJECT.md      # Detailed project spec\n├── requirements.txt             # Python dependencies\n├── .env.example                 # Environment variable template\n├── .gitignore\n│\n├── plugins/\n│   └── video-sampler/           # NEW FiftyOne plugin\n│       ├── fiftyone.yml         # Plugin config\n│       ├── __init__.py          # Operators: sample_from_youtube, sample_from_video\n│       └── requirements.txt     # Plugin dependencies\n│\n└── src/\n    ├── demo.py                  # Main orchestration script\n    ├── audit_agent.py           # VLM audit logic (Gemini calls + parsing)\n    ├── prompts.py               # Accessibility audit prompt templates\n    ├── scoring.py               # Aggregation, scoring, report generation\n    └── ingest.py                # Dataset loading helpers\n```\n\n---\n\n## Datasets\n\n| Dataset | Source | Size | Use |\n|---|---|---|---|\n| Rotterdam Accessibility | [HuggingFace](https://huggingface.co/datasets/comarti15/accessibility-rotterdam-the-netherlands) | 1,883 images | Primary demo — pre-labeled street-level photos |\n| YouTube Property Tours | Any YouTube URL | Dynamic | Interior accessibility — doorways, bathrooms, stairs |\n| Sidewalk Semantic | [HuggingFace](https://huggingface.co/datasets/segments/sidewalk-semantic) | 1,000+ images | Optional — semantic segmentation of sidewalks |\n\n---\n\n## Custom Plugin: `@accesscheck/video-sampler`\n\nOur novel FiftyOne plugin that converts any YouTube video or local video file into a curated image dataset with intelligent frame selection.\n\n**Operators:**\n- `sample_from_youtube` — YouTube URL → smart frames → FiftyOne dataset\n- `sample_from_video` — Local video file → smart frames → FiftyOne dataset\n\n**Features:**\n- Scene-change detection (histogram-based)\n- Perceptual deduplication (pHash)\n- Configurable strategies: uniform, scene-change, hybrid\n- Metadata preservation (source URL, timestamp, frame number)\n\n---\n\n## Existing Plugins Used\n\n| Plugin | Role |\n|---|---|\n| `@AdonaiVera/gemini-vision-plugin` | VLM backbone for image analysis |\n| `@voxel51/brain` | CLIP embeddings, similarity search, 2D visualization |\n| `@voxel51/evaluation` | Accuracy metrics against ground truth |\n\n---\n\n## Team\n\nBuilt at the Agents World Visual AI Hackathon at ASU, March 21, 2026.\n\n---\n\n## License\n\nApache 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparva101%2Faccesscheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparva101%2Faccesscheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparva101%2Faccesscheck/lists"}