Inspiration

Every family has the same group-chat message: "how do I attach a photo?" Our grandparents aren't bad with computers. They just don't know which button to press, they're afraid of pressing the wrong one, and there's nobody to ask at 9pm. The existing fixes all take something away: remote desktop takes control, AI agents do the task for you (and can be tricked into paying the wrong site), and a grandkid on the phone isn't always free.

We wanted the opposite: help that points, never acts. The person stays in control, and alten just shows them where to click.

What it does

  • Tap the smiley buddy, say what you want. "Send an email to my grandson." alten flies to the exact button, outlines it, shows a 2–7 word caption (Tap "Compose"), and says it out loud.
  • One step at a time. It waits for you to click, then shows the next step, across page loads and tabs, until the page actually shows the result ("message sent", "added to cart").
  • Any language. Ask in Spanish, get guided in Spanish, spoken and on screen.
  • Scam guard. Before pointing at a link, alten checks it. Lookalikes like payp4l.com, program downloads, and pressure wording get "Stop. That looks like a scam." instead of a pointer.
  • Family dashboard at alten.select/dashboard: pair with a 6-digit code, then see a shry help session step by step, scam alerts (plus branded email alerts), one-tap shortcutsyou set up for them, and their voice, speed and language settings.

How we built it

  • Chrome extension (Manifest V3). A page scanner turns the live DOM into a numbered, , clickable controls. It handles popups, cookie walls, calendars and iframes, and labelsgeneric buttons with context ("Add · Iced Latte"). No screenshots are ever sent.
  • AI planner. The goal plus that page list go to Google's Gemma 4 26B (the first ni API**), which must answer with one strict JSON action. The client re-resolves thetarget by name so a stale index can't point at the wrong button.
  • ElevenLabs. Scribe for speech-to-text, with our own silence detection so slower spetilingual v2 for speech output, tuned warm and slower. The Voices API powers a voicepicker on the dashboard.
  • Tiger Data (TimescaleDB). Every event is a time series: 4 hypertables, 3 real-time the weekly recap, compression on old help history, retention on heartbeats, and a ratelimiter built on a hypertable.
  • Dashboard. Next.js 16 on Vercel, 14 zod-validated API routes, sha256-hashed device ies, and Resend emails with one-click unsubscribe.
  • alten.select (a GoDaddy Registry .select domain). One domain serves the landing page, dashboard, docs, API and email, using multi-zone rewrites on Vercel.

Challenges we ran into

  • Real websites are chaos. Invisible overlays, 60 identical "12"s on a date picker, l iframes. Most of our time went into the scanner.
  • Latency. Guidance has to feel instant. Free-tier rate limits on our first planner caused visible pauses between steps, so we moved to a faster model with a 5.5 s budget, retries and model fallback.
  • Language drift. The planner answered in Spanish, but our English caption templates hread the family's language setting through the prompt and the UI.
  • A time-series gotcha. Refreshing a continuous aggregate up to now() froze the current week's bucket, so the live recap stopped updating. We now refresh complete buckets only.
  • Venue Wi-Fi blocked our cloud database port, so we mirrored Tiger locally in Dockero the deploy step.

What we learned

  • For older adults, voice is the main interface, not a feature, and short captions are an accessibility feature.
  • The safest AI UX is one where the model suggests and the human acts.
  • How far TimescaleDB goes beyond plain Postgres: aggregates, compression and retention replaced a pile of cron jobs.
  • Grounding a model in a strict, numbered list of real controls beats asking it to "look"

The scam guard's lookalike check, for fun: a host $h$ is flagged if its folded form (`0→on edit distance $d(h, t) \le 2$ of a trusted domain $t$.

What's next

Chrome Web Store release, routing all AI calls through our server, and a "call family" button right inside the buddy.

Built With

Share this project:

Updates

Submission history