Skip to content

Smart Parsing

Use quick add to add task using natural language and let TaskTrove turn it into dates, times, recurring schedules, projects, labels, priorities, estimates, and more. This page lists everything the parser recognizes. Unless noted, examples assume “today” as the reference date and pick the next occurrence (e.g., typing “monday” on a Monday schedules it for next Monday).

TIP

Smart parsing is a work in progress—feedback and suggestions are welcome. Please share them on this discussion thread.

Demo

Experiment with the TaskTrove smart parsing. The demo parser matches any allowed projects, labels, and assignees (shown under the form).

Smart Parsing Demo (click to collapse)
Projects
Labels
Assignees

Parsed Output

TypeSource / MatchParsed Value
titlecleaned inputpick up snacks
project#partyparty
labels
assignee@alexalex
priority!!2
date/time · 6pm11/21/2025 · 18:00
recurringevery friRRULE:FREQ=WEEKLY;BYDAY=FR
estimate~30m30min

Dates

  • Relative days: today, tod, tomorrow, tom, tmr, yesterday
  • Relative periods: next week/month/year, last week/month/year
  • Offsets: in 3 days|weeks|months|years; shorthands in 3d, in 1w, in 2mo, in 1y; singles in a day/week/month/year; in an hour
  • Weekdays: monday … sunday, mon … sun; also this friday, next tuesday (if today is that day, it chooses the following week)
  • Numeric dates: 1/15, 01/15/2025, 15/1, 15/1/2025 (rejects impossible dates; picks US vs EU sensibly)
  • Month names: Jan 15, 15 Jan, January 15, 2025, March 3rd (ordinals allowed)
  • Defaults: Missing years default to the current year. Day-based results are at start-of-day; time-based offsets keep the exact time.

Times

  • 12-hour: 3PM, 3 PM, 9:30 AM
  • 24-hour: 14:00, 09:30, at 14:30, at 9AM
  • Keywords: noon (12:00), midnight (00:00)
  • Relative minutes/hours: in 5min, in 5 min, in 5m, in 4h30min, in 2h 15m, in 30sec

Recurring schedules

  • Simple repeats: daily, every day, weekly, monthly, yearly, hourly, quarterly (every 3 months)
  • Custom intervals: every 3 days|weeks|months|years|hours; workdays only: every 3 workdays
  • Weekday-based: every monday, ev fri; ranges every mon-fri, every weekend, every weekday/workday; lists every mon, fri, ev mon, wed, fri
  • Nth weekday: every 2nd Monday, every 3rd friday, every 4th Wednesday; optional month every 2nd Monday jan; with time every 3rd friday 8pm
  • "Every other …" every other day/week/month/year, every other friday
  • Specific calendar days: every 27, ev 7, lists every 2, every 15, every 27; month+day every jan 27; multi-month list every 14 jan, 14 apr, 15 jun, 15 sep
  • Last/first positions: every last day, every last friday, ev last mon, every first workday, every last workday
  • Time-of-day & hourly: every morning (9am), every afternoon (12pm), every evening (7pm), every night (10pm); every hour, every 12 hours; combos ev mon, fri at 20:00

Tip: You can combine a one-time date and a repeat in the same line; the parser keeps both when they don’t overlap (e.g., "ev 2 weeks july 19th" -> recurring every 2 weeks starting on July 19th).

Projects

  • #project-name
  • Picks the longest matching name when prefixes overlap (e.g., #Work Tasks preferred over #Work)
  • Handles unicode: 完成 #项目A

Labels

  • @label-name
  • Tag with multiple labels: @labelA @labelB
  • Longest match wins when names share prefixes
  • Supports unicode: 安排会议 @标签A

Priority

  • Shortcut tokens: p1, p2, p3, p4
  • Exclamation style: ! → p3, !! → p2, !!! → p1

Time estimates

  • ~30m, ~45m, ~30min
  • Hours: ~1h, ~2h, ~8h
  • Mixed: ~1h30m, ~2h15m, ~3h45m

Assignees (Pro)

  • Assign with @ plus a username: @alex, @jane.doe
  • Assign to multiple users: @alex @jane.doe

Quick checklist

  • Use # for projects, @ for labels and assignees, p1p4 or ! for priority, ~ for estimates.
  • Dates and times can be combined: review next tue at 3pm.
  • Repeats stack with dates when they describe different parts: kickoff tomorrow every 2 weeks.