# TaskCapture Natural language parser for rapid task capture — turns a single sentence into a structured task. --- ## Table of Contents 1. [Overview](#overview) 2. [Features](#features) 3. [Usage](#usage) 4. [API Reference](#api-reference) 5. [Parsing Pipeline](#parsing-pipeline) 6. [Supported Patterns](#supported-patterns) 7. [Troubleshooting](#troubleshooting) 8. [Related Documentation](#related-documentation) --- ## Overview `TaskCapture` is a pure functional module with no state or process dependencies. It takes a natural language string like `"buy groceries tomorrow #home !!"` and extracts structured fields (title, tags, priority, recurrence, due date) into a map ready for `TaskManager.create/2`. The parser runs a sequential pipeline of extractors, each consuming recognized tokens from the input and passing the remainder to the next stage. Order matters — tags and priority are extracted before dates to avoid ambiguity. Date/time parsing uses manual computation for common patterns (tomorrow, next monday, in 2 hours) and falls back to the `Chronic` library for more complex expressions (feb 25 at 2pm, friday). ## Features | Feature | Syntax | Example | |---------|--------|---------| | Tags | `#word` | `#home`, `#work`, `#urgent` | | Priority (explicit) | `p1` through `p10` | `p8` → priority 8 | | Priority (bangs) | `!`, `!!`, `!!!` | `!!` → priority 5 | | Recurrence | keywords | `daily`, `weekly`, `monthly`, `weekdays`, `hourly` | | Recurrence (interval) | `every N unit` | `every 10 seconds`, `every 5 minutes`, `every 2 hours`, `every 3 days`, `every 2 weeks` | | Recurrence (singular) | `every unit` | `every second`, `every minute`, `every hour` | | Recurrence (named days) | `every day,day,...` | `every monday,wednesday,friday` | | Relative time | `in N unit` | `in 20 seconds`, `in 2 hours`, `in 30 minutes`, `in 3 days` | | Standalone time | `at