Inspiration

Reading is something most people never think about, but for people with dyslexia every email, textbook and form takes extra effort. Most reading tools live in a single browser tab or app, while reading happens everywhere. We wanted a tool that meets you wherever the text is, adapts to how you read, and guides you from A to B without reading for you. That's where the name comes from: Polaris, the North Star.

What it does

Polaris is an AI reading companion for macOS, paired with a web app.

  • Select text in any app. Polaris opens a reformatted reading view with your preferred font, size, letter spacing, line spacing and background tint.
  • Read aloud with word-by-word highlighting. Each word lights up as it's spoken. Arrows let you step forward and back, and you can set the reading speed.
  • Simplify. Gemini rewrites the text to your chosen reading level (simple, standard or advanced).
  • Scan images and screenshots. Text inside images is extracted on the device and read the same way.
  • Reading assessment quiz. A short quiz on the web app suggests your best settings (font, spacing, voice and reading level) and saves them to your account. The Mac app then picks them up.
  • Choose a voice. Preview ElevenLabs voices on the web app and pick the one that sounds right to you.
  • Save to your account. A hotkey saves a selection, along with where it came from, to your web dashboard.

How we built it

  • Mac app (Swift): the macOS Accessibility API captures selected text and its context (app, window title, URL). Apple's Vision framework (VNRecognizeTextRequest) handles OCR on the device, so it's free, fast and works offline.
  • Pipeline: Scanner → Reader (OCR) → Simplifier (Gemini) → Text-to-speech.
  • AI: Gemini simplifies text and helps turn quiz answers into recommended settings. ElevenLabs provides natural-sounding voices.
  • Web app: a quiz and settings UI built around dyslexia-friendly design guidelines, with an SQL backend, OAuth, and a REST API (GET/PUT /api/settings, POST /api/save) secured with bearer tokens so the Mac app and website share one profile.
  • Privacy by design:
    • Sensitive apps (password managers, banking, Messages) are blocked from capture.
    • Emails, phone numbers and card numbers are redacted on the device before anything reaches the API.
    • Data stays on the Mac by default, and syncing is opt-in.
    • A visible "paused" indicator and hotkey stop capture.
    • Screenshots show a confirmation before being sent to Gemini.

Challenges we ran into

  • Not just a wrapper: our first version was "select text, ask an LLM." We pushed past that by focusing on what a chatbot can't do: capturing context from any app, personalized settings, synced read-aloud, and on-device privacy.
  • Mixed laptops: only some of us had Macs, so we split the work into a Swift app and a web app that talk through a strict settings format agreed early on.
  • Keeping both sides in sync: the Mac app rejected a settings object if any field was missing, and macOS voice IDs mean nothing to a website. We moved voice selection to ElevenLabs voice IDs that work on both sides.
  • Syncing the highlight with the audio so the right word lights up at the right moment.
  • Security: an app that reads your screen raises fair privacy questions, so we made privacy a core feature instead of an afterthought.

Accomplishments that we're proud of

  • A working pipeline from any app on the Mac to a reformatted, read-aloud, simplified view
  • One profile shared across the Mac app and the web app
  • Design decisions based on dyslexia research, not guesswork
  • Privacy features built in from day one

What we learned

  • How the macOS Accessibility API and Vision framework work
  • That for dyslexia, spacing, contrast and listening while

Built With

Share this project:

Updates

Submission history