Inspiration
We were inspired by how many websites are technically functional but still difficult to use. Small text, low contrast, tight spacing, distracting motion, and small buttons can make browsing frustrating. We wanted to create a browser that adapts to the person using it instead of making them manually fix every website.
What it does
AccessibleBrowser lets users describe accessibility changes in normal language or through voice commands. An agent uses the user’s accessibility profile and saved preferences to determine what each website needs and how it should be changed.
It can create a structured plan for changes like larger text, better contrast, more spacing, reduced motion, and larger buttons. Users can preview the plan, apply it, undo it, and save preferences they approve.
Over time, the browser updates the user’s accessibility profile based on their approved preferences and requests. This helps it better understand what works for each person and apply those preferences across different websites.
How we built it
We are building it with Jac and Electron. Jac handles the accessibility logic, profiles, preferences, agent planning, memory, and explanations. Electron handles the browser, webpage snapshots, applying changes, voice-related browser interactions, and undo.
We connect them through a structured IPC bridge and only allow safe, reversible browser actions. User preferences and approved changes are stored so the system can improve its future decisions without needing to start from scratch every time.
Challenges we ran into
The biggest challenge was connecting Jac and Electron while keeping their responsibilities separate. We also had to make sure the agent could suggest useful changes without being able to return random JavaScript or unsafe browser commands.
Another challenge was designing the preference system so it could learn from what users say and approve while still keeping the user in control. Keeping the contracts between each part consistent was harder than we expected.
Accomplishments that we're proud of
We are proud that we were able to build the main foundation across multiple branches and bring the pieces together on an integration branch. We also created tests for the main webpage-to-plan-to-apply flow and built the bridge needed for Jac and Electron to communicate.
We are also proud of the direction of the agent system, especially its ability to combine voice requests, saved preferences, and webpage information when deciding how a site should be adapted.
What we learned
We learned that the connection between parts of a project is just as important as the parts themselves. Clear contracts, good testing, and safe boundaries made a big difference.
We also learned more about Jac, Electron, browser behavior, voice interaction, and how to design an accessibility profile that can become more useful over time without taking control away from the user.
What's Next for AccessibleBrowser
Next, we are finishing the integration work and testing the complete workflow on a real webpage. After that, we plan to improve the accessibility actions, connect the voice experience more fully, add the demo page, and continue improving how the agent uses saved preferences across websites.
Built With
- ai
- chromium
- electron
- ipc
- jac
- javascript
- natural-language-processing
- node.js
- openai
Log in or sign up for Devpost to join the conversation.