Skip to content
All projects

Shipped · Apr 2025

Tetherboard

A collaborative knowledge platform where boards link to each other, built at Bitcamp 2025. I built the Gemini assistant that can answer questions about your whole workspace.

The problem

People learn by connecting ideas to each other, but most note tools store notes as a flat list and most collaborative editors have no idea what is in the rest of your workspace. So you end up with a pile of documents that do not know about each other, and no way to ask a question across all of them.

What I built

Tetherboard is a collaborative platform where teams build boards holding images, symbols, markdown, syntax-highlighted code, and LaTeX, edit them together with live updates, and link boards to each other with connections we called tethers. The whole workspace can then be viewed as an interactive graph called a Tethermap. My piece was the chatbot: a Gemini assistant that receives the current board plus every other board in the workspace as context, so a question can be answered across the entire workspace rather than one document at a time.

The part I owned

I built the chatbot. The interesting problem was not calling the Gemini API, it was deciding what the assistant should be allowed to see. A board-scoped assistant is close to useless, because the question you actually want to ask usually spans several boards. So the assistant receives the board you are currently on along with every other board in the workspace, which is what makes it able to answer questions about the workspace as a whole rather than whatever document happens to be open.

Why linking boards was the point

The idea behind the product is that people learn by building connections between ideas, so the tool should store those connections instead of throwing them away. Tethers make the link between two boards a real object, and the Tethermap turns the whole workspace into a graph you can navigate. That also happens to be what makes the assistant useful, because the structure gives it something to reason over.

What a weekend actually costs you

The hard parts were not the features we planned. Board editing had interaction bugs we kept having to chase, live collaboration needed performance work before it was reliable with several people editing at once, and rendering markdown together with code, images, and math correctly took longer than expected. We got all of it working and demoed at the end, across 95 commits and four people.

Outcome

  • Built and demoed in one hackathon weekend by a team of four
  • I owned the Gemini assistant, which answers with the full workspace as context
  • Live multi-user editing on boards with markdown, code highlighting, and LaTeX
  • Tethermap renders the whole workspace as a navigable graph

Stack

ReactTypeScriptViteTailwindCSSshadcn/uiFirebaseGemini API

Data flow

Boards, tethers, and a workspace-aware assistant

  1. 1

    Client

    React, TypeScript, Vite, TailwindCSS, shadcn/ui

  2. 2

    Board editor

    Images, symbols, markdown, code highlighting, LaTeX

  3. 3

    Live collaboration

    Firebase keeps simultaneous editors in sync

  4. 4

    Tethers

    Typed links between boards

  5. 5

    Tethermap

    The workspace rendered as an interactive graph

  6. 6

    Gemini assistant

    The part I built. Current board plus all workspace boards go in as context

ReactTypeScriptViteTailwindCSSshadcn/uiFirebaseGemini API

This diagram is generated from portfolio.ts. Edit the `architecture` field to change it.

Want the deeper version of this?

I am happy to walk through the tradeoffs, the failure modes, and what I would do differently.

Email me