# I made Cursor file my meeting notes. Here is the version for your setup.

Source: https://aaronmakelky.com/tools/meeting-note-clerk
Last updated: 2026-09-19

Aaron Makelky runs meeting-transcript-clerk daily at 6:15 PM Mountain in Cursor Cloud, copying Wispr, Gemini, and Zoom notes into an Obsidian vault as markdown. The page builds a version of that prompt from a few setup questions.

Meeting notes

Wispr, Gemini, and Zoom keep the notes on their servers. I run a Cursor Cloud job every day at 6:15 PM Mountain that copies new ones into my Obsidian vault as markdown. Fill in your apps and copy the prompt.

How I run mine

Composer 2.5 Fast. Every day at 6:15 PM America/Denver. That's the live job in the screenshot.

Why I built it

## Wispr has the notes. The vault did not.

This page does not log into your apps. It writes the prompt. You paste it into an agent that already has access.

### The notes sit in someone else's cloud

Wispr, Gemini, Zoom. Fine until the export is ugly or the app changes.

### My other agents cannot see them

If a meeting is not in the vault, it might as well not exist.

### I do not want a laptop staying on

I used to run this as a Codex job on my Mac. Cursor Cloud does it with the lid closed.

The actual job

## meeting-transcript-clerk, running daily.

6:15 PM Mountain on Composer 2.5 Fast. Active.

![Cursor Cloud automations screen for meeting-transcript-clerk. It is Active, set to run every day at 6:15 PM Mountain, and uses Composer 2.5 Fast.](/images/tools/meeting-note-clerk/cursor-cloud-automation.jpg)

Settings tab. Trigger at 18:15 MDT. Agent Instructions holds the prompt.

Your version

## Fill this in. The prompt updates as you type.

Which apps, where the notes should live, how often.

What should the clerk call you?

Which tools capture your meeting notes?

Pick every app that already has the notes. Skip the ones you do not use.

Wispr Flow Desktop / meeting notes with transcripts Google Drive Gemini notes Docs whose titles identify meeting notes, often ending in Notes by Gemini Zoom Skip the lane if the connector is missing Granola Meeting notes app Fireflies Call recorder Otter Transcripts and summaries Fathom Meeting recorder Grain Meeting recorder Notion Meeting pages in a Notion workspace Something else Name the app in the field that appears

Which account should the clerk verify?

Name and email as they appear in the notes apps. The clerk stops if it is logged into someone else.

Where should the notes land?

GitHub repo Obsidian vault Local folder

Repo or folder path

Scripts repo, if you already have writers

Optional. Leave this blank and the job writes markdown itself.

Which agent should run this?

Cursor Cloud is the one I use. It keeps running with the laptop closed. The prompt works in the others too.

Cursor Cloud (the one I use) Claude Code Codex GitHub Actions Something else

How often should it trigger?

Every day Weekdays Once a week

Time

Timezone

How far back should it look, in hours?

Overlap so a late transcript still gets picked up. I use 36.

Anything off-limits?

Anything else the clerk should know?

Prompt

## Copy this into the agent.

Filled in as you type. Nothing is sent to me.

- Pick at least one notes app so the clerk knows what to fetch.
- Add the repo or folder where notes should land.

Copy the prompt Save prompt.md Copy the prompt

```
You are the meeting-transcript clerk. This is a Cursor Cloud scheduled automation (daily 6:15 PM America/Denver).

Repos:
- Primary checkout: [DESTINATION_REPO_OR_FOLDER] (GitHub repo). Write meeting lanes only.
- No separate scripts repo. Write markdown into the meeting lanes with the layout below. Do not invent a writer the operator did not give you.

Job each run: read-only fetch new personal meeting records from the sources below, write them into the meeting lanes, and commit those lanes. If nothing new, still write today's manifests (duplicate-only is success). Never send email or messages. Never edit the source files in the note-taking apps.

Accounts (verify in THIS session before discovery; stop if wrong):
- Notes owner: the operator.
- Source account to verify before discovery: [VERIFY SOURCE ACCOUNT IN THIS SESSION]. Stop if the connected account is someone else.

Off-limits:
None specified.

Window:
- If the newest file in Agent-Memory/[source-lane]/manifests/ is older than 36 hours, set window_start to that manifest's date at the scheduled local time (catch-up).
- Otherwise rolling 36-hour overlap ending at now.
- run_date is today's date in America/Denver, YYYY-MM-DD.

Steps:
1. git pull --ff-only origin main on the destination checkout. If that fails, stop. Do not force-push. Do not git add -A.
2. Reverify connector identities against the Accounts section. Stop if they do not match.
3. No sources selected. Stop and ask which note-taking tools to read before fetching anything.
4. Write JSON payloads to /tmp (outside the destination repo). Required top-level fields: run_date, fetched_at (ISO UTC), fingerprint, source_account, source_mode, window_start, window_end, documents, digest, content_candidates, errors.
   fingerprint: "Recorded by Cursor Cloud scheduled automation on YYYY.MM.DD HH:MM."
   content_candidates: [] always.
   digest: commitments/people/project_signals/errors arrays; generated Next steps are leads, not tasks.
   source_mode: set from the source lane name.
   source_account: "[VERIFY SOURCE ACCOUNT IN THIS SESSION]".
5. Write markdown files yourself. Do not hand-edit later. For each new meeting, create:
   Agent-Memory/<lane>/raw/YYYY/MM/DD/<id>-<slug>.md
   Agent-Memory/<lane>/manifests/YYYY-MM-DD.json for today's run (duplicate-only is success)
   Agent-Memory/<lane>/daily-digests/YYYY-MM-DD.md
   Frontmatter must include tags [meeting, <source>], meeting_date, source, title, created_time, and source_url when known. Preserve source text. Do not invent YAML tags. Do not invent a transcript.
6. Do not invent YAML tags. Writers (or the markdown layout) emit meeting + source tag and meeting_date.
7. Stage ONLY:
   Agent-Memory/[source-lane]/
   Never add .DS_Store, *.icloud, * 2.md, or unrelated vault files.
8. If there is a diff, commit:
    "Ingest personal meeting transcripts for YYYY-MM-DD"
    Push origin main. If main is protected, open PR "meeting-ingest YYYY-MM-DD" containing only those paths and merge it in this run if allowed. Do not leave the notes stranded on a cloud branch.
9. Skip follow-up / email / task-creation scripts unless the operator explicitly claimed that seat. Archive first. "Next steps" in the source notes are leads, not send orders.
10. Report: discovered/exported/skipped/errors per lane. When done, give the operator the automation URL and whether the first run is in progress.

Success: a meeting from the catch-up window is in the destination under Agent-Memory/[source-lane]/ without requiring a laptop to stay awake.
```

How I run it

## Cursor Cloud, on a schedule.

Claude Code, Codex, and GitHub Actions can run the same prompt if that is what you already have.

### Create an Automation in Cursor

Open Automations and make a scheduled agent. I named mine meeting-transcript-clerk. Connect the repo where notes should land. Mine is a GitHub-backed Obsidian vault.

### Set the time and paste the prompt

I use 6:15 PM Mountain and Composer 2.5 Fast. Paste into Agent Instructions, then Save.

### Hit Test, then check Run History

After it finishes, look under Agent-Memory/<source>/raw/ in the repo. If a connector was missing, the report should say so. Do not invent a transcript.

Start here

## If you want a hand pointing this at a vault you already have

Bring the apps you use. We can walk the first run.

[Book a 30-minute intro](https://cal.com/aaron-makelky/intro) [Back to tools](/tools)
