# Turn Voice Memos into Reviewed Tasks and Drafts

Canonical: https://figment.so/blog/voice-memos-agent-workflow

The bottleneck in voice memos automation is not transcription — it is reliably getting audio from Apple Watch or iPhone into a pipeline that a human can review before anything is committed. This page maps the full Watch/iPhone-to-draft workflow and labels each stage's owner, so you can build it without surprises.

## How iCloud delivers recordings to Mac

Apple's iCloud documentation states the goal: keep Voice Memos recordings up to date on all Apple devices — iPhone, iPad, Mac, Apple Watch, and Apple Vision Pro. ([iCloud User Guide](https://support.apple.com/en-gb/guide/icloud/mm203ae070a2/icloud)) When a user records on Apple Watch mid-run, iCloud syncs that recording to their signed-in Mac automatically.

This workflow reads **synced** recordings. It is not remote microphone access. The recording must exist on the source device and complete its iCloud sync before your pipeline can process it.

## The Watch-to-draft pipeline

| Step | Action | Owner |
|------|--------|-------|
| 1 | User records on Apple Watch or iPhone | User |
| 2 | Recording syncs to iCloud-connected Mac | Apple iCloud |
| 3 | Mac helper copies new recording to processing folder | Developer-built |
| 4 | Backend sends audio to speech-to-text service | Developer-built |
| 5 | LLM parses transcript into proposed tasks and draft text | Developer-built |
| 6 | UI presents items for user review | Developer-built |
| 7 | User approves, edits, or discards each item | User |
| 8 | Approved tasks commit to Reminders; approved prose saves to target | Developer-built |

Steps 3–8 are entirely in your control. iCloud handles step 2.

## Reading recordings from the Mac library

Apple's Voice Memos for Mac documents dragging a selected recording to a Finder window to save a copy to any folder. ([Voice Memos for Mac](https://support.apple.com/en-gb/guide/voice-memos/vm05f9fa82d4/mac)) A developer-built Mac helper extends this: watch the iCloud-synced Voice Memos library folder for new `.m4a` files and copy each to a staging directory, then mark it processed.

Keep a local record of each copied file — name, size, modification time — to avoid reprocessing the same recording. Your helper should wait for a file to stop growing before copying; an in-progress sync produces an incomplete file. A brief size-stability check before treating any file as ready prevents partial reads.

## Transcribe and extract

Send each audio file to a speech-to-text service. Voice Memos on recent iPhone models also generates an on-device transcript for eligible recordings; if your helper can surface that existing text, you skip a transcription request and reduce latency.

Pass the transcript to an LLM with a structured output prompt. A useful starting point:

> "Return a JSON object with two keys: `tasks` — an array of objects each with `title` (string), `notes` (string), and `due_date` (ISO 8601 string or null); and `draft` — a string containing any prose the speaker intended to write down."

Stage every proposed item in your own database before presenting it to the user. Do not write to any task list or document store at this stage.

## Review gate

LLMs misparse informal speech. A casual aside — "oh, I should probably email Dan at some point" — becomes a due task unless a human catches it. Voice memos also capture false starts, ambient noise fragments, and self-corrections that look like actions in a transcript.

Render each proposed task as an editable card: title, notes, due date, and approve/skip. For draft text, show a preview with accept, edit, and discard controls. Discard anything the user rejects. Do not re-run extraction on discarded items or silently retry on a skip.

## Committing approved items

For Reminders, Apple's EventKit on Mac provides read and write access for apps with the user's permission. Map each approved task to an `EKReminder`: set `title`, `notes`, and `dueDateComponents` from the LLM output. The staging row in your database — recording source, proposed content, approval timestamp — serves as your audit trail. ([EventKit documentation](https://developer.apple.com/documentation/eventkit))

For approved draft text, write to a Notes export, an iCloud Drive file, or any downstream system your app already uses.

Tie each commit to the approval event in your database, not to the transcription request. That binding makes the commit idempotent if your app restarts between approval and write.

## Where Figment Apple Connect fits

Figment provides the OAuth consent layer that lets your app request scoped Apple data access on behalf of a user, without your app ever receiving the user's Apple password. Figment's current public API covers iMessage read, search, and send ([iMessage REST](/imessage-api)) and a Contacts, Calendar, and Reminders synthetic read sandbox for integration testing ([OAuth for iCloud](/oauth-for-icloud)). The hosted Mac infrastructure is designed to surface Voice Memos recordings to connected apps; the public customer endpoint is not yet available. The integration design above runs on Apple's supported local path today.

---

Register your app and explore the sandbox at [figment.so/apple-connect/developers](/apple-connect/developers). Pricing is $29 per month per active live connection; sandbox is free ([Apple Connect pricing](/apple-connect-pricing)).

---

**Related reading**
- [OAuth for iCloud: Connect Apple Data to Your App](/oauth-for-icloud)
- [Create Apple Reminders with EventKit on Mac](/blog/apple-reminders-eventkit)
- [Read Apple Notes with a Scoped Mac Helper](/blog/apple-notes-export-integration)
- [Connect Apple Notes, Photos, Files, and Safari](/apple-data-connectors)
