Skip to content

CAP-01: Capture triage — handle natural-language and dash-separated text #614

@Chris0Jeky

Description

@Chris0Jeky

Context

Manual testing (2026-03-31) found that captures with natural-language text and dash-separated items immediately fail triage. Analysis: docs/analysis/2026-03-31_manual_testing_ux_feedback.md §4-5.

Problem

CaptureTriageService.cs uses regex-only extraction (checklist, numbered, bullet patterns). Falls back to entire text as one task. Failures:

  1. "I need to move all the cards..." — natural language sentence, not a task list → fallback hits validation limits
  2. "ACME Ltd - item1 - item2 - item3" — space-dash-space separators don't match ^\s*[-*] regex → treated as one task

Core issue: triage is purely mechanical regex, not semantic. Can't handle free-form text that most users will naturally write.

Solution (Phased)

Phase 1 — Regex improvements (low effort)

  • Add - (space-dash-space) as a delimiter pattern
  • Add ; as a delimiter
  • First segment becomes context/title hint, rest become individual tasks
  • Single-sentence fallback: create one card with text as description (don't fail)

Phase 2 — LLM-assisted triage (moderate effort)

When live providers are enabled, send raw text to LLM with triage prompt:

Extract actionable tasks. For each: title (max 180 chars), evidence (max 280 chars), suggested column.

Fall back to regex when LLM unavailable (mock provider).

Phase 3 — Semantic capture pipeline (strategic)

Classify input type (command, task list, note, question) and route to appropriate handler.

Acceptance Criteria

  • Dash-separated text produces individual task cards
  • Free-form single-sentence captures don't fail — create one card with text as description
  • Retry after failure preserves original text
  • When LLM providers active, natural-language captures produce better task breakdowns

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    Review

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions