Weave

Inspiration We've had countless calls with our parents and grandparents, helping them use complicated technology for things they need access to like medical bills or banking information. Screen sharing is hard to set up, and most webpages aren't built for accessibility. We wanted to make a platform where people can work together on the same pages, and make it as easy as possible to use the internet regardless of who you are.

What it does Weave is a desktop browser built on Electron. Multiple people can open the same website together. Each person gets their own view of it: larger text, bigger targets, a clutter-free rebuild of the page, plain wording, or the whole page in many different languages, all as personal settings that follow their account. Cursors, annotations and a hand-drawn lasso from the helper appear on the other person's page, anchored to elements rather than pixels, so different layouts still line up. Webb, a small jumping spider, is the in-page assistant: ask it where to click and it circles the element and explains, in your language, with voice if you want it.

How we built it

  • A pnpm TypeScript monorepo: shared zod contracts, an injectable overlay for extraction and adaptation, a synthetic patient portal for a safe demo, a Fastify coordinator, and the Electron shell.
  • The overlay extracts a sanitized page model from the DOM (labels, roles, sections, table rows) with deterministic element ids, classifies sensitive content with rules, and rebuilds a personalized view per person.
  • NVIDIA Nemotron 3.5 Lightning via NIM powers Webb's answers, element targeting and per-person layout proposals. Gemini handles page translation and simpler wording. ElevenLabs gives Webb a voice in and out. Every model call only ever sees sanitized labels, and every outbound payload is audited.
  • Co-browsing runs as host simulation plus guest intents, sequenced by the server like a game engine, with field claims and a host pause switch.

Challenges

  • Hosted model latency has a long tail: one call in three sat for 10 to 30 seconds. Disabling reasoning tokens, hedging requests after 3 seconds, and falling back across providers brought replies to about a second.
  • Small models echo JSON schemas back instead of filling them, and answer poorly in Hindi. We pivot: question in through Gemini, reasoning in English, answer back out.
  • Rewriting page text changed element ids and broke the next translation. The extractor now reads original text through rewrites.
  • Venue Wi-Fi blocked Google's API hosts at the DNS level, which cost an hour of confusion before a resolver change.
  • Keeping two teammates' work merging cleanly all night on one branch.

What we learned Privacy and accessibility are the same problem: both are about showing each person exactly what they need and nothing else. And a demo is a product feature. Every "just for the demo" shortcut turned into a real setting someone would want.

Built With

  • elevenlabs
  • gemini
  • nemotron
  • snowflake
Share this project:

Updates

Submission history