Inspiration
What if accessibility barriers could be discovered before someone had to encounter them?
Accessibility is often treated as something that concerns only people with disabilities. But creating accessible environments is everyone's responsibility, and many everyday barriers exist not because people don't care, but because they simply don't notice them.
A chair obstructing a walkway. An unexpected step. An object protruding into a shared space.
What seems like a minor inconvenience to one person can make navigating that same environment significantly harder for someone else.
I wanted to rethink who bears the responsibility for identifying these problems.
Instead of expecting people with accessibility needs to discover and report barriers, what if we gave the people responsible for spaces the tools to recognize and address them proactively?
That question became AccessLens.
What it does
AccessLens is an AI-powered accessibility inspection companion that helps people identify potential physical barriers, understand their impact, make improvements, and document what changed.
At the center of the experience is Lumi, a conversational AI sidekick that guides users through the inspection process and helps them understand accessibility concerns.
AccessLens turns a simple photograph into an ongoing inspection workflow.
Discover potential barriers
Take a photograph or upload an image of a physical environment. AccessLens uses multimodal AI to examine the scene and identify potential accessibility concerns supported by visible evidence.
Findings are organized into a clean, image-first interface with concise summaries and detailed explanations available when needed.
Understand with Lumi
Each finding explains what was observed, who might be affected, what could be improved, and what cannot be determined from the photograph alone.
Users can also have real conversations with Lumi, asking questions such as:
“Why does this chair matter if someone can just walk around it?”
Lumi responds using the recorded inspection evidence and supports contextual follow-up questions, making accessibility guidance more interactive and approachable.
Improve and verify
After addressing a potential barrier, users can revisit the same area and photograph it again.
AccessLens compares the before-and-after evidence, checks whether the images represent the same environment, and assesses whether the previously observed concern appears to have improved.
An interactive comparison slider makes the change easy to see.
Importantly, the system distinguishes between an improvement it can reasonably observe and a result that still needs verification.
Track and document
AccessLens supports inspections across multiple areas, preserves earlier observations and photographs, and keeps re-checks associated with their respective locations.
Users can review their inspection history and generate a downloadable PDF report containing findings, supporting images, suggested actions, uncertainty, and documented changes.
The goal isn't to replace professional accessibility assessments. It's to make proactive accessibility inspections more approachable, repeatable, and actionable.
How I built it
AccessLens is a full-stack, mobile-first web application built with Next.js, React, TypeScript, and Tailwind CSS, deployed on Vercel.
Multimodal AI analysis
I integrated Google's Gemma 4 using the Google GenAI SDK to analyze environmental photographs and produce structured accessibility observations.
Each finding contains information such as visual evidence, potential impact, affected groups, suggested improvements, confidence, and uncertainty.
I used Zod to validate model responses before incorporating them into the application. This provides a predictable data structure while allowing the system to reject malformed outputs rather than blindly trusting AI-generated content.
Context-aware AI companion
Lumi uses Gemini to support natural-language conversations grounded in the inspection's recorded findings.
Instead of sending the entire inspection's photographs with every question, the chat backend provides a bounded, validated set of relevant observations and recent conversation history.
The system includes rate limiting, response validation, timeouts, and safeguards against unsupported claims about measurements, regulatory compliance, or guaranteed accessibility.
Continuous inspection and comparison
One of the most technically involved parts was building the session engine.
Rather than treating every photograph as an isolated request, AccessLens maintains a structured history of areas, scans, findings, and subsequent re-checks.
Users can inspect a new area independently or explicitly revisit an earlier one.
For re-checks, a separate AI comparison pipeline evaluates whether the photographs depict the same location and whether the earlier concern appears to have changed.
Conservative verification rules prevent an inconclusive or mismatched photograph from automatically marking a barrier as resolved.
Mobile-first product experience
I designed and prototyped the interface using Figma Make, developing a minimalist, Apple-inspired visual identity with Lumi as the central companion.
The application includes camera capture, image uploads, HEIC processing, interactive photo comparisons, locally persisted inspection history, responsive navigation, and printable PDF reports.
On the backend, I implemented request validation, image normalization, API key protection, bounded retries, model fallback handling, and structured error responses.
Challenges I ran into
Recognizing an object isn't the same as identifying a barrier
A chair isn't inherently inaccessible. Its location and relationship to the surrounding environment determine whether it may create a problem.
This meant the AI needed to consider context, not simply recognize objects.
I tested AccessLens against different physical environments, including clear walking routes, potential obstructions, and the same environment after a change.
Making AI comparisons trustworthy
Determining whether two photographs show the same location was harder than expected.
Different camera positions, lighting conditions, and partially obscured objects can make comparisons ambiguous. I also encountered model failures and cases where a model was less dependable at scene matching than at identifying visible obstacles.
I addressed this with task-specific model selection, bounded retries, structured comparison responses, and conservative status updates.
One particularly important rule emerged:
Not seeing a barrier in a second photograph is not necessarily evidence that the barrier has been removed.
Making AI spatial reasoning honest
I experimented with having the vision model return bounding boxes around potential barriers.
The results were promising but inconsistent: some boxes identified the correct object, while others grouped nearby objects despite high reported confidence.
Rather than ship visually impressive but potentially misleading annotations, I kept precise spatial overlays disabled until they can be validated more thoroughly.
This reinforced an important lesson: a model's confidence doesn't automatically establish that its output is correct.
Turning an AI prototype into an intuitive product
Early versions of AccessLens were too text-heavy. Important observations were buried in expandable sections, the inspection screen felt crowded, and scanning a new area could unintentionally trigger a comparison.
Through repeated iteration and mobile testing, I redesigned the application around a simpler flow: scan, inspect, ask Lumi, improve, re-check, and document.
The challenge wasn't adding more capabilities. It was making the existing ones easy to understand and use.
Accomplishments I'm proud of
I built AccessLens independently, from the original product concept through the full-stack implementation, AI integration, interface design, testing, and deployment.
I'm especially proud of three accomplishments.
1. Building a complete inspection workflow rather than a one-off image analyzer.
AccessLens doesn't stop at identifying a potential barrier. It remembers areas and findings, supports revisits, compares changes, and turns the results into a shareable inspection report.
2. Making Lumi a genuinely conversational companion.
Lumi can answer spontaneous questions grounded in recorded inspection evidence and continue the conversation with context from previous questions.
This makes the experience more approachable than simply presenting users with a technical report.
3. Prioritizing trustworthy results over impressive-looking AI output.
I built safeguards around uncertain comparisons, unsupported measurements, and accessibility compliance claims. I also chose not to release experimental visual annotations when testing showed inconsistent localization accuracy.
By the end of development, the application had 166 passing automated tests, alongside real-device testing of the inspection experience.
I'm proud not just of what AccessLens can do, but of the decisions about what it should avoid claiming to do.
What I learned
This project reinforced that building an effective AI product requires far more than connecting a model to an API.
The difficult work lies in deciding which tasks should use which models, validating unpredictable outputs, handling provider failures, preserving context across interactions, and managing uncertainty.
I learned how important it is to evaluate AI behavior with real examples rather than relying entirely on automated tests or model confidence.
I also learned that good product design often means removing complexity.
AccessLens became much more usable when I stopped trying to explain everything on one screen and instead designed a clear journey around what users needed to do next.
Most importantly, the project changed how I think about accessibility. It's not simply a collection of technical requirements, but an ongoing responsibility to consider how different people experience the same environment.
What's next
There are several directions I'd like to explore.
- Broader accessibility coverage: Expand beyond the currently supported visual physical-barrier scenarios, incorporating more thoroughly evaluated vision, wayfinding, and other accessibility considerations.
- Validated spatial grounding: Improve object localization so AccessLens can accurately highlight potential concerns directly within photographs.
- Continuous video inspections: Explore real-time or recorded walkthroughs that make inspecting larger spaces more efficient.
- Professional feedback and evaluation: Collaborate with accessibility professionals and people with lived experience to improve the relevance, accuracy, and limitations of the system.
- Collaborative inspections: Allow facilities teams to assign actions, track improvements, and maintain inspection records across locations.
Ultimately, I envision AccessLens helping businesses, schools, and communities identify potential barriers before they affect the people using their spaces.
Accessibility shouldn't depend on someone encountering a barrier before anyone notices it.
Built With
- figma-make
- gemini-api
- gemma-4
- google-genai-sdk
- next.js
- react
- tailwind-css
- typescript
- zod
