Garage

meeting intelligence

Garage — AI Across a Workspace Platform

Crash-recoverable meeting note-taker that picks single-pass or map-reduce by transcript length.

garage.app ↗closed source
role
AI engineer
status
● live
scale
20–40% fewer input tokens
stack
TypeScript · LiveKit · Deepgram · OpenAI
type
commercial · closed source

FIG.01 // GARAGE · MEETING NOTE-TAKER

The pipeline picks its own shape from the transcript length

Under the budget, one gpt-4o pass. Over it, map-reduce behind a success floor, so a merge never silently summarises a hole.

The pipeline picks its own shape from the transcript length01 · LIVEKITmeeting room02 · HIDDEN BOTsubscribe-onlynever publishes03 · DEEPGRAM nova-2N socketsone per participant04 · SEGMENTSpersistedas they arrive05 · PREPROCESS−20–40% tokensfillers · merges06 · BUDGET ROUTER≤15K tokens?PICKS ITS SHAPEYES · SINGLE PASSgpt-4o07 · OUTPUTsummaryemailed outNO · MAPspeaker chunkson turn boundariesPER CHUNKgpt-4o-mini ×nSUCCESS FLOORenough chunks?NO SILENT HOLEREDUCEgpt-4o mergecrash → rehydrateyesnothe merge runs only when enough chunks succeeded
01

A bot that listens and never publishes

The note-taker joins the LiveKit room as a hidden, subscribe-only bot. It never publishes, so it never appears as a participant with media.

Each participant gets a dedicated Deepgram nova-2 socket, which gives attribution without a diarization model. Transcript segments are persisted as they arrive, so a crash can rehydrate the meeting rather than lose it. The notes go out by email to the resolved participant list.

1 socket per participantsegments persisted on arrival

02

Single pass or map-reduce, chosen by length

When the transcript fits a 15,000-token budget it gets one gpt-4o pass. Above it, the transcript is split on speaker boundaries, the chunks go through gpt-4o-mini and gpt-4o merges them. The pipeline picks its own shape rather than always paying for map-reduce.

A per-chunk success floor gates the merge: it proceeds only when enough chunks succeeded, rather than silently summarising a hole.

Before any of it, preprocessing strips a known filler set, collapses repeated disfluencies and merges consecutive turns from one speaker. That cuts an estimated 20–40% of input tokens before inference, so it is a cost lever rather than a quality trade.

≤15K tokens → single pass20–40% fewer input tokens