Jazil Imran
← All work

01 / 06macOS desktop agent2026

JevBar

Hold a key, say what you want, and it gets done in whatever app is in front of you. It fills forms completely and never submits them.

⌘⇧Spacehold to talk
83tests, safety rules included
0forms it will ever submit

01 · Try it

Live · JevBar’s policy, running in your browserauthorize(action, task)

JevBar filling a real internship application from one spoken sentence · 1 min 14 s

Try to get something past it

Try “Resend code”, “Next”, “Post comment” or a password field.

Test cases

click “Next”
click “Save draft”
click “Submit application”
click “Resend code”
click “Send”
type into “Password”

A line-for-line port of Policy.swift. Whole phrases are matched against the control’s own words, so “Resend code” is not mistaken for “Send”, and “Next” and “Save draft” stay allowed, or no multi-page form could be filled.

02 · The problem

Job applications ask the same thirty questions in thirty different layouts. Desktop agents that promise to help usually point a model at a screenshot and let it click wherever it thinks is right.

JevBar takes the opposite approach. It reads the screen as structured data, handles common commands without a model at all, and treats anything that would send, submit or publish as off limits.

03 · How it works

Scroll the steps. The scene follows.

Software Engineer Intern · Application
First nameJaziltext field · First name
Emailjazil@…text field · Email
DegreeBachelorspopup · Degree
Why this role?text area · Why this role?
Save draftbutton · Save draftSubmit applicationbutton · Submit application

accessibility tree · 6 named controls

“Fill in this application”

form filler · page order · no model needed

authorize(.click, "Submit application")
→ .refuse("…JevBar fills it in and stops;
   sending it is yours.")

Report

Filled 4 of 4 fields, in page order

Left for you the submit button

Not submitted. Review it and send it yourself.

Illustrated from the project’s README and code. Values shown are examples.

  1. 01

    It reads the screen, it does not look at it

    JevBar reads the macOS accessibility tree through a Swift MCP server, so every button and field arrives with an id and its real accessible name. A model picks an element from the list JevBar built. It never supplies coordinates or selectors.

  2. 02

    Rules first, model second

    Opening apps, searching sites and clicking named links are handled deterministically. Form filling reads the page as a list of questions and uses a tested method for each kind of control: text, search-with-suggestions, dropdowns, radios, checkboxes and dates, in page order.

  3. 03

    Every action is authorised in code

    A pure function checks each click and keystroke against the control’s real accessible name before it happens. Anything that looks like a final submit, send, post or publish is refused, and passwords, passkeys and one-time codes are never entered.

  4. 04

    Answers grounded in your CV

    Open questions are drafted with Gemini from your own CV and profile. Grades, salary, family and demographics come only from your saved profile, never from a model’s guess. Afterwards it reports what it filled and what it left for you.

04 · Architecture

The whole system, running.

You speakhold ⌘⇧SpaceAccessibility treenamed controls, via MCPPlanrules firstGeminipicks from the listProfile + CVnever guessedauthorize()one pure functionClick / typein page orderReportfilled · left for you

Built with

  • Swift 6
  • macOS Accessibility
  • MCP
  • Speech framework
  • Gemini API