Inspiration

Web accessibility, despite becoming more broadly addressed, is still a widely misunderstood and underrecognized challenge. Many websites fail to address common accessibility concerns, and many more fail to address lesser-known issues that, regardless, have a large impact on people's lives.

Tools that statically analyze and programmatically address accessibility issues serve an essential role in the web ecosystem. However, there is a lack of 'semantic' accessibility tools that can take their role a step further by making context-aware decisions and adopting unique approaches to ensuring a truly accessible web.

What It Does

Altimate scans web pages and automatically integrates accessibility features while providing developers with tools to easily visualize and incorporate these features into their applications.

Many applications, linters, and guidelines help developers design more accessible sites, but Altimate (/ˈʌl.tɪ.mɪt/) takes a different approach by meeting developers where they are, with already published sites, and empowering users to bring accessibility to any site they visit.

How We Built It

We started by designing the API layer between the backend (which uses Gemini) and the frontend (a Chrome extension). After determining the data exchange format, we split into two teams to tackle the frontend and backend development separately.

On the backend, we used FastAPI to create a single POST endpoint. This endpoint, when given the page HTML and a list of requested checks, runs the corresponding Gemini calls to process the page and identify accessibility errors. The Gemini calls return JSON (which we parse to ensure validity), which is then formatted into a response after generating graph connections.

On the frontend, the Chrome extension receives the response and begins replacing elements identified by Gemini as following poor accessibility practices. If in developer mode, it renders a graph of problem nodes. Each node provides a description of the error and allows the developer to implement fixes one-by-one.

Challenges We Ran Into

We initially aimed to use ADK on the backend, but after numerous attempts, we had to pivot. Despite trying both the Python and Go versions of the ADK library, we couldn’t get it working. The issue appeared to be related to our understanding of the API design, but after discussing with other teams and researching for over sixteen hours, we were unable to resolve it.

Even after pivoting to Gemini, getting AI to return structured data consistently and meaningfully proved challenging. We spent hours iterating on prompts to generate focused and consistent fixes. Another layer of complexity arose from the need for multiple calls, each designed to focus on a specific aspect of accessibility. Through iteration, we eventually achieved reasonably consistent and focused responses.

Accomplishments We’re Proud Of

  • Intuitive and engaging UI design

  • Successfully pivoted the entire backend in about seventeen hours

  • Fully functioning proof of concept

What We Learned

One of the completely new challenges we faced was handling image processing between the frontend and backend for Gemini, especially considering we wanted to host it on a Chrome extension and use images from an external site. This turned into one of our most rewarding experiences, as we managed to adjust image contrast using Gemini, showcasing its true capabilities.

Additionally, this was our first time building a Chrome extension, so we gained valuable experience in implementing and bundling React.js for that environment.

What's Next for Altimate

A major goal for Altimate is speed. Currently, we make API calls to Gemini, which can significantly slow down the extension for long periods, potentially hindering users who rely on web accessibility. To address this, we plan to host a local model, which would make HTML processing much faster than sending requests through an API. We also want to research and better understand agentic environments in order to implement agents, each focused on a specific aspect of web accessibility. These agents would work in parallel to divide the workload and achieve greater speed. Lastly, we aim to integrate speech capabilities to bridge the gap between the web and accessibility even further.

Built With

+ 2 more
Share this project:

Updates