Natural Language

Tycana’s parser extracts dates, times, recurrence, projects, tags, and estimates from plain text. Everything it recognizes is stripped from the title automatically.

tycana add "Renew staging cert tomorrow 2pm @infra #urgent ~2h"
#  title:    Renew staging cert
#  due:      tomorrow at 2:00 PM
#  project:  infra
#  tags:     urgent
#  estimate: 2h

Dates

PatternExample
today, tomorrowDue today or tomorrow
Day namesfriday, tuesday, thurs
next + daynext monday, next friday
in N days/weeks/monthsin 3 days, in 2 weeks
end of week, end of monthLast day of current week/month
this week, next weekStart of this/next week
Month + daymarch 5, jan 15
ISO format2026-03-05
US format03/05/2026, 03/05

Keywords like due, by, and on are optional — friday and due friday both work.


Times

Adding a time makes the task appear as a calendar event. Without a time, it’s a deadline.

PatternExample
12-hour2pm, 3:30pm, 10am
24-hour14:00, 09:30
With atat 2pm, at 14:00
Time wordsnoon, tonight, this morning, this afternoon, this evening
Day + timefriday 2pm, next monday 9am
ISO datetime2026-03-05 14:00

Recurrence

Recurrence patterns create a template that generates instances automatically. See Recurring Tasks for the full workflow.

Starting with a keyword

When the first word is a frequency keyword, the rest becomes the task title.

PatternCreates
Daily standupRecurring daily
Weekly reviewRecurring weekly
Monthly reportRecurring monthly
Biweekly syncRecurring every 2 weeks

The keyword must be first. “Send daily report” creates a one-time task — use “Daily send report” or the every syntax below.

Using every

PatternCreates
every dayDaily
every weekdayMonday through Friday
every fridayWeekly on Friday
every 2 weeksEvery other week
every monthMonthly
every 3 monthsQuarterly

Recurrence and time combine naturally:

tycana add "Standup every weekday at 9am"
tycana add "Team sync every monday 2pm"

Metadata

SyntaxEffectExample
@nameSets project@infra, @ops
#nameAdds tag#urgent, #compliance
~durationSets estimate~2h, ~30m

Multiple tags work: #urgent #p1. Estimates accept m (minutes), h (hours), and d (days).


Querying

tycana list uses the same syntax to filter instead of set.

tycana list "overdue @infra"             # Overdue tasks in infra project
tycana list "next 3 days"                # Due within 3 days
tycana list "@ops #urgent"               # Project + tag filter
tycana list "past week"                  # Tasks from the last 7 days

Status keywords: overdue, completed, done, pending.

Range patterns: next N days, past N days, until friday, this week, next week.

Projects and tags filter the same way as in add@project and #tag.