Inspiration

Yesterday, we tried ordering pizza through Hark. What should have been a simple task turned into a frustrating experience with authentication and other issues in its virtual-machine environment.

That made us wonder: why should a personal assistant operate in a separate environment when our apps, accounts, and everyday workflows already live on our phones?

We wanted to build an assistant that works directly on your own device, under your control. Our long-term goal is fully on-device processing, so personal information can stay on the phone.

Who it's for: blind and low-vision users, people with motor disabilities, and older adults

What it does

We’re building a personal Android assistant that understands a request and helps carry it out across apps.

The vision is broad: if you can do something on your phone, you should eventually be able to ask the assistant to do it—from finding information and filling forms to completing tasks across multiple applications.

Our current focus is building the foundation: understanding the active screen, interacting with its controls, and checking what happened after an action.

The agent loop: see, think, check, act, verify

How we built it

We built the phone interaction layer around Android’s accessibility capabilities. It extracts available text, descriptions, and interactive elements, giving the agent a structured representation of the screen.

Screen understanding: raw accessibility nodes become a numbered outline, with a numbered screenshot when text falls short

The app exposes basic actions such as opening applications, clicking controls, entering text, scrolling, and navigating back or home. Screenshots provide additional context when the accessibility information is insufficient.

We separated phone control from the agent’s decision-making layer. This lets us develop the Android integration and agent independently, while keeping models replaceable as we explore fully local execution.

System architecture: Android app, Python backend, Claude, Jev and ElevenLabs

Voice pipeline with single-use tokens, and spoken secrets kept on the phone

Challenges we ran into

Building the app was only part of the challenge. Understanding screen context proved more complicated than identifying buttons: the assistant also needs to understand which information belongs together and what an action will accomplish.

Unseen situations were another major challenge. Apps can show unexpected dialogs, change layouts, or expose incomplete accessibility information. The agent needs to recognize those situations and recover.

We also had to distinguish between executing an action and completing a task. A successful click does not necessarily mean the intended result occurred.

Eight checks in code before any payment tap, plus proof required to finish

Accomplishments that we're proud of

We established the foundation for interacting with apps directly on a phone and designed an architecture that connects screen understanding, actions, and verification.

One DoorDash order, message by message

We’re particularly proud of making accessibility information the starting point. It gives the agent useful context directly, while preserving visual understanding as a fallback.

We also turned a frustrating everyday experience into a concrete project with a clear division of responsibilities and an implementation plan.

What we learned

We learned that a useful phone agent requires more than a capable language model. It needs reliable observations, well-defined actions, task memory, verification, and recovery.

We also learned that screenshots are useful selectively. Structured UI information can explain how to interact with a screen, while visual input helps when the task depends on appearance or information missing from the accessibility tree.

What's next for AQUA

Next, we’re connecting the decision-making agent to the phone controls and testing complete tasks across real applications.

We’ll focus on handling unexpected screens, accepting corrections, and reporting outcomes accurately. We also plan to add voice interaction and evaluate smaller local models.

Our longer-term goal remains a personal assistant that can handle the tasks we do on our phones, with fully on-device intelligence and privacy built into the experience.

Built With

Share this project:

Updates

Submission history