The hard part is the real-time layer. The backend provisions an AI agent the moment a meeting starts and keeps it running for the full call. Speech runs through a transcript pipeline and generates responses through the OpenAI API in near real time, so the agent replies while the conversation is still moving, not minutes later. After the meeting, the backend writes a structured summary through the same API, handled async by Inngest so nothing blocks the live app.