> ## Documentation Index
> Fetch the complete documentation index at: https://docs.runable.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How Run Meet works

> When a meeting is scheduled or you paste a link, Run Meet provisions a recording bot that joins the call as a named participant. Here's the pipeline, with the actual numbers.

<Frame caption="The Run Meet pipeline, from join to clear next steps">
  <img src="https://mintcdn.com/runableinc/E5ON84SlygKk3WM8/images/443c78381f21cf39d37ff8e2c7903e0796cb1ed0df17a2489423bba82778b85d.png?fit=max&auto=format&n=E5ON84SlygKk3WM8&q=85&s=37bafef3df36ee5eec34867d17c13e37" alt="443c78381f21cf39d37ff8e2c7903e0796cb1ed0df17a2489423bba82778b85d" className="w-full rounded-xl" title="443c78381f21cf39d37ff8e2c7903e0796cb1ed0df17a2489423bba82778b85d" width="1100" height="825" data-path="images/443c78381f21cf39d37ff8e2c7903e0796cb1ed0df17a2489423bba82778b85d.png" />
</Frame>

When a meeting is scheduled or you paste a link, Run Meet provisions a recording bot that joins the call as a named participant. Here's the pipeline, with the actual numbers.

```mermaid theme={null}
flowchart LR
  A["Join
  enters 60s early"] --> B["Record
  mixed MP4, up to 90 min"]
  B --> C["Transcribe
  per-speaker streams"]
  C --> D["Summarize
  TL;DR, decisions, action items"]
  D --> E["Hand off
  transcript to Runable chat"]
```

<Steps>
  <Step title="Join">
    For calendar meetings, the bot is scheduled to enter **60 seconds** before the start time, so it's waiting in the lobby before anyone speaks. It handles waiting rooms and host admission, and it gives up gracefully rather than lurking: it leaves if nobody joins within **8 minutes**, and after **5 minutes** if it's stuck in a waiting room or in a call it isn't permitted to record.
  </Step>

  <Step title="Record">
    The full call is captured as a single mixed MP4, up to **90 minutes** per meeting. The video is stored with your meeting, so **watch the recording** is always available.

    <Frame caption="The recording is stored with your meeting">
      <img src="https://mintcdn.com/runableinc/E5ON84SlygKk3WM8/images/c300ecca90d3fc52bee6834dbeb59f8e6fe7c116a3d2b7af73a554095d5f734e-2.png?fit=max&auto=format&n=E5ON84SlygKk3WM8&q=85&s=a3ffa342d14971575f5671b905ba12e1" alt="C300ecca90d3fc52bee6834dbeb59f8e6fe7c116a3d2b7af73a554095d5f734e 2" className="w-full rounded-xl" title="C300ecca90d3fc52bee6834dbeb59f8e6fe7c116a3d2b7af73a554095d5f734e 2" width="1611" height="1074" data-path="images/c300ecca90d3fc52bee6834dbeb59f8e6fe7c116a3d2b7af73a554095d5f734e-2.png" />
    </Frame>
  </Step>

  <Step title="Transcribe">
    After the call, the recording is transcribed asynchronously. When the platform provides separate audio streams per participant, we use them, which is why the transcript reads as "who said what" rather than a wall of undifferentiated text.

    <Frame caption="Diarized transcript: who said what">
      <img src="https://mintcdn.com/runableinc/E5ON84SlygKk3WM8/images/599b894ffc791d875eb097f5edd47f813374321ea477e419099c352f0bfa6667-1.png?fit=max&auto=format&n=E5ON84SlygKk3WM8&q=85&s=a91c155784aa26e1de5d6bee298a46d6" alt="599b894ffc791d875eb097f5edd47f813374321ea477e419099c352f0bfa6667 1" className="w-full rounded-xl" title="599b894ffc791d875eb097f5edd47f813374321ea477e419099c352f0bfa6667 1" width="863" height="260" data-path="images/599b894ffc791d875eb097f5edd47f813374321ea477e419099c352f0bfa6667-1.png" />
    </Frame>
  </Step>

  <Step title="Summarize">
    A structured summary is generated from the transcript in three parts:

    1. a **TL;DR** you can read in about 30 seconds
    2. the **decisions** that were made
    3. **action items** — each with an owner and a due date when the conversation contains them

    The summarization prompt is deliberately constrained to stay grounded in the transcript. We tested this with a garbled, half-empty call: the TL;DR said the transcript was garbled and declined to invent decisions. That's the behavior you want from notes you'll forward to a client.

    Summaries can be generated in any of **25 languages**, independent of the language spoken in the call.

    <Frame caption="TL;DR, decisions, and action items">
      <img src="https://mintcdn.com/runableinc/E5ON84SlygKk3WM8/images/c36662b9df94aff13971ca9bba6e4901cc486e97fdf56dafa3ff4a3d8f97ab5b-1.png?fit=max&auto=format&n=E5ON84SlygKk3WM8&q=85&s=97f65cde16ff55c37b6f5172352dadb2" alt="C36662b9df94aff13971ca9bba6e4901cc486e97fdf56dafa3ff4a3d8f97ab5b 1" className="w-full rounded-xl" title="C36662b9df94aff13971ca9bba6e4901cc486e97fdf56dafa3ff4a3d8f97ab5b 1" width="839" height="304" data-path="images/c36662b9df94aff13971ca9bba6e4901cc486e97fdf56dafa3ff4a3d8f97ab5b-1.png" />
    </Frame>
  </Step>

  <Step title="Hand off">
    The transcript is written into a Runable chat as context. This is the step other notetakers don't have — see [Follow-up actions](/meet/follow-up-actions) for why it matters.
  </Step>
</Steps>

## Important details

* **Every stage has explicit failure states.** A locked meeting, denied admission, an empty call, failed transcription, and the 90-minute cap each surface as distinct statuses instead of a generic "something went wrong."
* We built it this way because a notetaker you can't trust to tell you when it failed is a notetaker you have to babysit, which defeats the point.

## Next steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/meet/quickstart">
    Get the bot into your next call in under a minute.
  </Card>

  <Card title="Follow-up actions" icon="zap" href="/meet/follow-up-actions">
    What happens after the transcript lands in a Runable chat.
  </Card>
</CardGroup>
