Garage:
AI across a workspace platform
A workspace and commerce platform — offices, meetings, webinars and a storefront. I built its AI layer: assistants, meeting intelligence and generative media.
Commercial product — the AI features sit behind sign-in.
Assistants
Betty and Ask Cabinet
BETTY — WORKPLACE ASSISTANT
Three tool schemas, one shape
OpenAI, Anthropic and Gemini tool-calling normalised to a single internal shape — one adapter per provider, because the three vendors disagree on schema shape and the assistant should not.
Reads real data
Time-tracking records and leave history, not a canned knowledge base.
Writes real records
Creates actual leave requests, which notify founders over Socket.IO.
ASK CABINET — QUESTION A FILE DIRECTLY
Gemini File API upload
The video or PDF is uploaded, polled until ready, then answered in one shot.
Recording transcription
Produces a timestamped transcript, a summary and action items.
Cached back onto the file
Results are written back to the file record and fired automatically on upload.
Meeting intelligence
The note-taker
CAPTURE
Hidden subscribe-only bot
Joins the LiveKit room without publishing, so it never appears as a participant with media.
One socket per participant
A dedicated Deepgram nova-2 socket per participant, giving attribution without a diarization model.
Incremental persistence
Transcript segments are persisted as they arrive, so a crash can rehydrate rather than lose the meeting.
Resolved-participant email
Distribution goes out by email to the resolved participant list.
ADAPTIVE SUMMARIZATION
Single-pass under budget
One gpt-4o pass when the transcript fits a 15,000-token budget.
Map-reduce above it
Speaker-boundary chunks through gpt-4o-mini, merged by gpt-4o.
Per-chunk success floor
The merge only proceeds when enough chunks succeeded, rather than silently summarising a hole.
The pipeline picks its own shape from the transcript length rather than always paying for map-reduce.
TRANSCRIPT PREPROCESSING AS A COST LEVER
Filler-word set
A known filler set is stripped before the transcript reaches the model.
Disfluency collapsing
Repeated disfluencies are collapsed rather than repeated verbatim.
Same-speaker merging
Consecutive turns from one speaker are merged into a single block.
20–40% fewer input tokens
The cut lands before inference, so it is a cost lever rather than a quality trade.
GENERATIVE MEDIA
AI ad video
Product image to a rendered short-form reel; vision analysis feeds script generation behind a swappable provider interface.
Simulated audience
Proposes plausible attendees and a timed chat script, so a webinar can be rehearsed against an audience.
Schema re-validation
Generated output is treated as untrusted: re-validated against a schema, with messages truncated before render.
Roster attribution guard
Any chat line attributed to a name outside the generated roster is dropped rather than displayed.
PER-ORG ENCRYPTED KEY VAULT
Bring your own key
Organisations store their own AI provider keys, encrypted at rest.
Graceful fallback
A stored key that is expired or out of quota falls back to the platform key.
Reported provenance
The response reports which key was actually used, so the fallback is never silent.
TECHNICAL ARCHITECTURE
backend
Node + TypeScript
Express API surface
MongoDB
Primary datastore
BullMQ on Redis
Async media and AI jobs
realtime
LiveKit + mediasoup
Meetings, webinars and the note-taker bot
Socket.IO
Live notifications and assistant events
Deepgram nova-2
One socket per meeting participant
ai
OpenAI
gpt-4o and gpt-4o-mini summarization
Anthropic + Gemini
Normalised into one tool-calling shape
Per-org key vault
Encrypted provider keys with platform fallback
