Skip to main content

CLI tool to convert meeting notes into actionable markdown checklists

Project description

Meeting-to-Action (Project C)

CI PyPI Python

Meeting-to-Action is a small CLI tool that converts raw meeting notes (.md or .txt) into a clean, actionable checklist containing tasks, optional owners, and optional due dates.

V1 Scope

  • One CLI command: parse
  • Input: one .md/.txt file, or a directory of notes files
  • Extraction of action items from bullets and sentences
  • Optional extraction of owner and due date only when obvious
  • Output: one markdown file with a standardized checklist format
  • Basic terminal summary
  • Unit tests for parser and formatter

Out of Scope (V1)

  • Web UI
  • Database
  • Authentication/authorization
  • Third-party integrations
  • Audio transcription
  • OCR/PDF parsing
  • Multilingual support
  • Advanced NLP confidence scoring
  • Background jobs
  • Cloud deployment

Requirements

  • Python 3.11+

Installation

python -m venv .venv
source .venv/bin/activate
pip install -e .

For the smallest release-validation pass in a fresh environment, install the test extra:

pip install -e ".[test]"

Usage

meet2action parse notes.md --out actions.md

To produce machine-readable JSON instead of markdown:

meet2action parse notes.md --format json --out actions.json

The input file must be a local .md or .txt file.

Expected validation failures return a non-zero exit code and do not write an output file:

meet2action parse /tmp/missing.txt --out actions.md
# Error: input file does not exist: /tmp/missing.txt
meet2action parse notes.csv --out actions.md
# Error: input file must be .md or .txt

Validation

python -m pytest
meet2action parse tests/fixtures/notes_sample.txt --out actions.md
meet2action parse tests/fixtures/notes_sample.txt --format json --out actions.json

Example Input

- Alice to draft kickoff agenda by 2026-03-20.
Please send vendor shortlist by Friday.
Bob will follow up with legal.
General discussion about roadmap.

Example Output

# Action Items

- [ ] Draft kickoff agenda (owner: Alice, due: 2026-03-20)
- [ ] Send vendor shortlist (due: Friday)
- [ ] Follow up with legal (owner: Bob)

With --format json:

{
  "total_lines": 4,
  "candidate_lines": 3,
  "actions": [
    { "task": "Draft kickoff agenda", "owner": "Alice", "due_date": "2026-03-20" },
    { "task": "Send vendor shortlist", "owner": null, "due_date": "Friday" },
    { "task": "Follow up with legal", "owner": "Bob", "due_date": null }
  ]
}

If no actionable lines are found, the CLI still writes a valid checklist file:

# Action Items

_No action items found._

Extraction rules (V1)

The parser uses deterministic, conservative rules:

  • Action candidates are lines with clear action cues (for example: to, will, send, review, prepare, follow up).
  • Owner is extracted only for obvious formats:
    • Alice to ...
    • Alice will ...
    • Alice: ...
    • @Alice ...
  • Due date is extracted only for obvious formats:
    • by YYYY-MM-DD or due YYYY-MM-DD (must be a real calendar date)
    • by Monday or due Friday (weekday names)
  • Discussion/status context lines (for example Discussion: or We will discuss ...) are intentionally ignored to reduce false positives.
  • Generic context labels like Topic:, FYI:, and Background: are ignored unless they clearly match an obvious action-owner pattern.
  • Leading Please is removed from task text when present as politeness.

Project Layout

meet2action/
├── src/meet2action/
│   ├── cli.py
│   ├── formatter.py
│   ├── models.py
│   └── parser.py
└── tests/
    ├── fixtures/notes_sample.txt
    ├── test_cli_helpers.py
    ├── test_e2e_parse.py
    ├── test_formatter.py
    └── test_parser.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meet2action-1.0.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meet2action-1.0.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file meet2action-1.0.0.tar.gz.

File metadata

  • Download URL: meet2action-1.0.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for meet2action-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2f5c1b80db45b5ce12920e32142803b219f286fd43de432f111f80b176044800
MD5 dda946e0995ea3107242c2cbe10d1a8b
BLAKE2b-256 3bff056dd8dc0d09be19be11b23ffe8a4abe68537a26fc90f32685167070065d

See more details on using hashes here.

Provenance

The following attestation bundles were made for meet2action-1.0.0.tar.gz:

Publisher: publish.yml on Dami777-code/meet2action

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file meet2action-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: meet2action-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for meet2action-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe1418b6142efbfc55f6e2160cbeb7b83f0fd73f8821f059b8de96a4c8fad554
MD5 477392f90f4ef2ee70a69bbc0fc577ab
BLAKE2b-256 34f64f945013b3db750e0a9328e73ceff39ee0d28045e36a7989905f31a8f493

See more details on using hashes here.

Provenance

The following attestation bundles were made for meet2action-1.0.0-py3-none-any.whl:

Publisher: publish.yml on Dami777-code/meet2action

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page