# Extract Action Items from Meeting Notes

Extract action items, owners, and decisions from meeting notes or daily notes with deterministic rules. Markdown checklist or JSON, private in-browser.

## Run it

- **CLI:** `gizza tool action-item-extractor "ACTION: update the roadmap
Alice will send the deck
Book the venue @bob
Decided: ship on Friday"`
- **Web:** https://gizza.ai/tools/action-item-extractor/
- **Agents:** machine-readable descriptor (parameters JSON Schema) at https://gizza.ai/tools/action-item-extractor/tool.json

## Inputs

- `input` — Meeting or daily notes _(field)_
- `format` — Output format _(field)_
- `group_by` — Group tasks by _(field)_
- `include_decisions` — Include decisions _(field)_

## Output

- Structured tasks (text)

## Query parameters

Open the tool pre-filled and auto-run via URL:

- `input` — Meeting or daily notes
- `format` — Output format
- `group_by` — Group tasks by
- `include_decisions` — Include decisions

Example: `https://gizza.ai/tools/action-item-extractor/?input=ACTION%3A%20update%20the%20roadmap%0AAlice%20will%20send%20the%20deck%0ABook%20the%20venue%20%40bob%0ADecided%3A%20ship%20on%20Friday&format=markdown&group_by=type&include_decisions=true`

---

## Turn messy meeting notes into a checklist

Paste meeting notes, standup notes, or daily bullets and this tool extracts the lines that look like **action items** plus the lines that record **decisions**. It runs entirely in your browser and uses deterministic rules: explicit `ACTION:` / `task:` markers, `@handles`, owner assignments like `Alice will send the deck`, trailing owner tags, imperative task verbs, and decision words such as `Decided`, `agreed`, or `resolved`.

Because it is not an LLM, it does **not** invent unstated tasks or rewrite your meeting into a summary. The output is a structured task list you can copy into a project tracker.

Choose **Markdown** for a checklist, or **JSON** when you want to feed the result to a script. Keep the default **Group by type** to show one action checklist with owners inline, or choose **Group by owner** to make headings for each person. Turn off **Include decisions** when you only need tasks.

### Worked example

Input:

```text
ACTION: update the roadmap
Alice will send the deck
Book the venue @bob
Decided: ship on Friday
```

Output:

```markdown
## Action Items

- [ ] update the roadmap — _Unassigned_
- [ ] send the deck — **@Alice**
- [ ] Book the venue — **@Bob**

## Decisions

- ship on Friday
```

### FAQ

<details>
<summary>Does this use AI to infer tasks from vague prose?</summary>

No. It is intentionally deterministic: it only extracts lines with explicit action or decision signals. That keeps it predictable and avoids hallucinated tasks, but it also means subtle commitments hidden in prose may be skipped.

</details>

<details>
<summary>How are owners detected?</summary>

Owners come from `@handles`, leading assignments such as `Alice will send the deck` or `Bob to book the room`, owner markers such as `owner: Sam`, and short trailing tags such as `Prepare slides (Carol)`. Pronouns like `we` are not treated as owners.

</details>

<details>
<summary>What counts as a decision?</summary>

Lines with decision markers such as `Decided:`, `decision`, `agreed`, `resolved`, `approved`, `consensus`, or `final call` go into the Decisions section. Prefixes such as `Decided:` are stripped so the decision reads cleanly.

</details>

<details>
<summary>Why did a line not appear in the output?</summary>

It probably did not have an explicit signal. Add `ACTION:`, `task:`, an `@owner`, a leading owner assignment, or a listed action verb such as `send`, `review`, `schedule`, `update`, `finish`, `fix`, or `verify`.

</details>

### Limits & edge cases

- Input is read one line at a time. Put each bullet, action, or decision on its own line.
- The extractor cleans bullets, numbering, and checkbox prefixes, but it does not parse nested agendas or tables.
- It does not extract due dates, priorities, transcript speakers, or implicit commitments. Those require semantic/LLM handling or a separate purpose-built parser.
- If no action item or decision is found, the tool reports a clear error instead of returning an empty list.

## Related tools

- [Base Decoder](https://gizza.ai/tools/base-decoder/): Auto-detect and decode Base16, Base32, Base45, Base58, Base64, and Base85 text, including nested layers, locally in your browser.
- [cURL Command Parser](https://gizza.ai/tools/curl-command-parser/): Paste a curl command to see its method, URL, query params, headers, body, auth, cookies and flags — or rebuild clean curl. Browser-only.
- [Data Format Converter](https://gizza.ai/tools/data-format-converter/): Convert data between CSV, TSV, JSON, and NDJSON (JSONL) in any direction — auto-detects the source, infers types, unions keys. Free, in-browser, no upload.
- [Dotenv Manager](https://gizza.ai/tools/dotenv-manager/): Parse, validate, merge and secret-mask .env files in your browser: flag duplicate and missing keys, lint names, and export .env.example or JSON. No upload.
- [Files to Prompt](https://gizza.ai/tools/files-to-prompt/): Bundle multiple files into one LLM-ready prompt: a directory tree, fenced file contents, and a token estimate. Free, in your browser, nothing uploaded.
