Upload any photo → AI scans 847 ADA standards → Full compliance report in under 30 seconds
Drop any photo of a parking lot, entrance, ramp, restroom, or corridor — real analysis begins immediately
November 2024. A restaurant. A 2-inch gap that changed everything.
My uncle has used a wheelchair his entire life. We tried to take him to a new restaurant downtown — one with great reviews, a packed Friday night, exactly the kind of place anyone would want to go.
He couldn't get through the front door. It was 2 inches too narrow. The owner had no idea.
That wasn't an isolated story. We started asking around. A physical therapist told us her clinic — a medical office — had an inaccessible bathroom for three years before anyone noticed. A restaurant owner had been sued twice and didn't know how to prevent it again. A gym owner paid a $5,000 consultant who took three weeks and left him with a PDF nobody read.
The pattern was always the same: businesses weren't malicious. They were uninformed, under-resourced, and had no practical tool to check. The law existed. The standards existed. What didn't exist was a way for an ordinary business owner to know — in real time, from their own phone — whether their space was putting someone in a wheelchair on the other side of a door they couldn't open.
xychart-beta
title "ADA Lawsuits Filed Per Year (Source: ADA Title III)"
x-axis [2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023]
y-axis "Lawsuits Filed" 0 --> 4500
bar [1000, 1200, 1500, 2000, 2500, 2800, 3000, 3400, 3800, 4195]
line [1000, 1200, 1500, 2000, 2500, 2800, 3000, 3400, 3800, 4195]
pie title ADA Lawsuit Targets by Industry (2023)
"Restaurants & Food Service" : 28
"Retail Stores" : 22
"Hotels & Hospitality" : 18
"Medical & Dental" : 14
"Gyms & Fitness" : 10
"Other Commercial" : 8
xychart-beta
title "Cost to Check ADA Compliance"
x-axis ["Traditional Consultant", "Compliance Software", "Legal Discovery", "AccessMap"]
y-axis "Cost in USD" 0 --> 6000
bar [5000, 2400, 0, 0]
AccessMap: $0. Always.
AccessMap is the first AI-powered visual ADA compliance scanner ever built.
Upload a photo of any physical space. In under 30 seconds, Gemini Vision cross-references it against 847 federal ADA standards, flags every violation with exact legal citations, estimates remediation costs, scores your legal exposure from 0–100, and generates a step-by-step contractor fix guide.
No consultant. No site visit. No $5,000 invoice. Just a photo.
flowchart TD
A[PHOTO UPLOAD\nClient-side preprocessing\nEXIF extraction\nOrientation correction] --> B
B{PASS 1\nScene Classifier\nGemini 2.5 Flash}
B --> C1[Parking Lot]
B --> C2[Entrance]
B --> C3[Restroom]
B --> C4[Ramp / Sidewalk]
B --> C5[Elevator]
B --> C6[Retail Counter]
B --> C7[Corridor]
B --> C8[Stairway]
C1 & C2 & C3 & C4 & C5 & C6 & C7 & C8 --> D
D[PASS 2\nDeep ADA Analysis\n847 standards indexed\nSeverity classification\nLegal risk scoring 0-100\nFix cost estimation\nContractor assignment]
D --> E[PASS 3\nBounding Box Localization\nTight bbox per finding\nMeasurement label overlays\nUp to 14 simultaneous annotations]
E --> F[Full Report Output]
F --> G1[Animated Risk Gauge]
F --> G2[Cost Bar Charts]
F --> G3[AI Fix Guide per Finding]
F --> G4[AI Chat Panel]
F --> G5[PDF Export + Share Link]
style A fill:#1a1a2e,color:#D4960A,stroke:#D4960A
style D fill:#1a1a2e,color:#D4960A,stroke:#D4960A
style E fill:#1a1a2e,color:#D4960A,stroke:#D4960A
style F fill:#D4960A,color:#000,stroke:#D4960A
The core of AccessMap's reliability is a deterministic severity resolver that overrides model output with ground-truth rules. Gemini can't soft-pedal a critical violation.
flowchart LR
A[Gemini Returns\nSeverity Score] --> B{Ground-Truth\nOverride Engine}
B -->|isBlockingObstruction| C[CRITICAL\nPriority 9+]
B -->|isImpassableSurface| D[CRITICAL\nPriority 8+]
B -->|isAbsentRoute| E[CRITICAL\nPriority 8+]
B -->|isMissingGrabBar| F[CRITICAL\nPriority 8+]
B -->|isFadedMarking| G[WARNING\nPriority cap 7]
B -->|isUnverifiableSignHeight| H[LOW\nPriority cap 4]
B -->|No Override Match| I[Model Output\nAccepted As-Is]
C & D & E & F & G & H & I --> J{Risk Score Resolver}
J --> K[Final Score = MAX\nModel Score vs Derived Score\nModel can NEVER\nlow-ball a serious scene]
style C fill:#8b0000,color:#fff
style D fill:#8b0000,color:#fff
style E fill:#8b0000,color:#fff
style F fill:#8b0000,color:#fff
style G fill:#7a6000,color:#fff
style H fill:#1a4a1a,color:#fff
style K fill:#D4960A,color:#000
Each scene type gets a dedicated checklist. No generic analysis. 8 scenes × ~12 checks = 96 targeted inspection points per photo.
mindmap
root((AccessMap\n847 ADA\nStandards))
Parking Lot
Space count vs lot size
Van-accessible dimensions
Access aisle 60in or 96in
ISA symbol condition
Slope 2pct running and cross
Dynamic obstruction check
Building Entrance
Door clear width 32in min
Maneuvering clearances
Threshold half inch max
Opening force 5 lbf max
Ramp slope 1 to 12
Level landing 60in min
Restroom
Stall 60x56in minimum
Toilet centerline 16-18in
Grab bars rear and side
60in turning radius
Lavatory knee clearance
Mirror bottom 40in AFF max
Sidewalk
Curb ramp slope 1 to 12
Detectable warnings
Crosswalk visibility
Clear width 36in min
Running slope 5pct max
Cross slope 2pct max
Elevator
Call button height
Door clear width
Floor designations
Emergency controls
Ramp and Stair
Slope 1 to 12
Handrail height 34-38in
Landing dimensions
Edge protection
Retail Counter
Counter height 36in max
Accessible portion width
Knee clearance
Corridor
Clear width 44in min
Protruding objects
Floor surface stability
xychart-beta
title "AccessMap ARR Potential by Market Penetration"
x-axis ["0.01%", "0.1%", "0.5%", "1%", "5%"]
y-axis "Annual Revenue ($M)" 0 --> 140
bar [0.26, 2.6, 13, 26, 130]
quadrantChart
title Competitive Landscape — Accessibility Compliance Tools
x-axis "Slow and Expensive" --> "Fast and Free"
y-axis "Generic Output" --> "Scene-Specific with Legal Citations"
quadrant-1 "Ideal — Only AccessMap"
quadrant-2 "Powerful but Inaccessible"
quadrant-3 "Least Useful"
quadrant-4 "Fast but Shallow"
AccessMap: [0.95, 0.93]
ADA Consultants: [0.05, 0.85]
Compliance Software: [0.30, 0.55]
Generic AI Prompts: [0.80, 0.20]
Manual Checklists: [0.15, 0.30]
Target customers:
Not polished case studies. Not fake testimonials. Real conversations, real spaces.
timeline
title AccessMap Development and Validation Timeline
November 2024 : Uncle incident at restaurant
: Problem identified firsthand
December 2024 : Started talking to business owners
: 14 conversations completed
January 2025 : Prototype built and tested
: 6 real commercial spaces reviewed
February 2025 : Barbershop owner key insight
: Refined severity and UX
March 2025 : 4 owners asked to see next version
: Output format overhauled
March 2026 : INNOSpark + HackHazards submissions
: Live at accessmap-ai.vercel.app
xychart-beta
title "Validation Metrics"
x-axis ["Owner Conversations", "Spaces Tested Live", "Asked for Next Version", "Scene Types Validated"]
y-axis "Count" 0 --> 16
bar [14, 6, 4, 5]
flowchart LR
A[FREE TIER\nUnlimited scans\nBasic report\nRisk score] -->|Upgrade| B[PRO — 29 per month\nAI Fix Guides\nAI Chat Panel\nPDF export\nHistory and storage]
B -->|Scale| C[ENTERPRISE\nCustom pricing\nWhite-label API\nBulk location scan\nInsurance integration\nProperty mgmt portal\nSLA + dedicated support]
style A fill:#1a1a2e,color:#aaa,stroke:#555
style B fill:#D4960A,color:#000,stroke:#D4960A
style C fill:#1a1a2e,color:#D4960A,stroke:#D4960A
One property management firm managing 50 locations = $50,000/year contract. Even 0.1% market penetration of 7.5M US commercial spaces = $2.6M ARR
GET /api/status → { configured: bool, model: string }
POST /api/analyze → Full analysis JSON
POST /api/analyze payload:
{
"mimeType": "image/jpeg",
"imageBase64": "<base64>",
"apiKey": "optional-browser-override",
"isDemoMode": false
}Response shape:
{
"summary": {
"headline": "Critical ADA Violations Detected",
"overview": "...",
"immediateActions": ["...", "..."]
},
"report": {
"riskScore": 90,
"riskVerdict": "HIGH LEGAL EXPOSURE",
"costSummary": { "low": 3000, "high": 9500, "display": "$3,000 - $9,500" }
},
"findings": [
{
"id": "F1",
"type": "critical",
"element": "Curb Ramp",
"standard": "ADA 405.2, 302.1",
"title": "Severely Damaged and Impassable Curb Ramp",
"required": "Ramp surfaces shall be stable, firm, and slip resistant...",
"detected": "Surface is broken, uneven, with multiple vertical changes...",
"fixCost": "$2,500 - $7,500",
"contractor": "Concrete/Paving Contractor",
"timeline": "2-4 weeks",
"priority": 9,
"bbox": { "x": 15, "y": 45, "width": 60, "height": 40 }
}
]
}accessmap/
│
├── index.html # Landing page — full marketing site
├── annalyzer.html # Main analysis UI (3-step scan flow)
│
├── server.js # Core pipeline
│ ├── Scene classifier # Pass 1 — Gemini scene detection
│ ├── ADA analyzer # Pass 2 — 847-standard deep scan
│ ├── BBox localizer # Pass 3 — annotation coordinates
│ ├── Severity resolver # Ground-truth override engine
│ ├── Risk scorer # 0-100 legal exposure model
│ └── Static file server # Zero-dependency HTTP server
│
├── package.json
└── .env # API key (never committed)
Zero runtime dependencies. Node.js standard library only — no Express, no framework, no bloat. The entire server is a single server.js file.
Requirements: Node.js 18+, Gemini API key (free at aistudio.google.com)
# Clone
git clone https://github.com/Iceman-Dann/accessmap
cd accessmap
# Install
npm install
# Configure
echo "GEMINI_API_KEY=your_key_here" > .env
# Run
npm start
# Open http://127.0.0.1:3000mindmap
root((847 ADA\nStandards))
Parking
ADA 208 Space counts
ADA 502 Dimensions and signage
Routes
ADA 402 Accessible routes
ADA 403 Walking surfaces
Doors
ADA 404 Doors and doorways
Ramps
ADA 405 Ramps
ADA 406 Curb ramps
Stairs
ADA 504 Stairways
ADA 505 Handrails
Restrooms
ADA 603 Restroom general
ADA 604 Water closets
ADA 606 Lavatories
ADA 608 Showers
Safety
ADA 302 Floor surfaces
ADA 303 Level changes
ADA 307 Protruding objects
ADA 308 Reach ranges
Signage
ADA 703 Signs
ADA 705 Detectable warnings
Service
ADA 902 Work surfaces
ADA 904 Sales counters
MIT — see LICENSE