I talk to my AI assistant dozens of times a day. After months of typing full sentences, I started wondering: what if I could communicate in shorthand?

Not a programming language. Something more like the abbreviated way you’d text a close friend who already knows your context.


The Problem with Natural Language

Natural language is great for complex requests. But for repeated queries, it’s wasteful:

"Hey, can you check my spending for this week and give me a quick summary?"

I ask some version of this daily. That’s a lot of keystrokes for something routine.

Two Modes, Different Constraints

I wanted a system that works for both typing and voice. But these have opposite requirements:

Mode Optimal Why
Typing Shorter Fewer keystrokes
Voice Longer More phonemes = better recognition

Research on wake words suggests 4-5 syllables for reliable voice recognition. But for typing, single characters are ideal.

So I built a dual-mode system.


In Action

Here’s what it looks like in practice — a Telegram conversation with my AI assistant Alfred:

Alfred Command Language Demo

The flow: /start shows a quick intro, ? displays the command reference, and fw >10000 filters weekly transactions over ₹10k. Three characters instead of “show me all transactions from this week that are over ten thousand rupees.”


The Command Structure

Text Mode: Spectrum of Brevity

All these do the same thing:

f                    # 1 character (power user)
fin                  # 3 characters (balance)
finance              # full word (clarity)

The rule: shortest unambiguous prefix wins.

For actions, same pattern:

fw                   # ultra-short
fin.week             # medium
finance.weekly       # full (good for scripts)

Voice Mode: Full Words

For voice, I use complete words for recognition accuracy:

"Alfred finance"
"Alfred finance weekly"
"Alfred kalvi status"

The wake word “Alfred” (3 syllables) plus the command gives enough phonetic information for reliable recognition.


Domain Registry

I organized commands by life domain:

Short Medium Full What
f fin finance Money tracking
k kal kalvi Side project
h hlt health Supplements, gym
w wrk work Calendar, meetings
n note note Quick capture
l lit lights Smart home
s sys system Meta commands

Commands by Domain

Finance

Text Voice What
f “Alfred finance” Today’s spending
fw “Alfred finance weekly” Week summary
fm “Alfred finance monthly” Month summary
f >5000 “Alfred finance over 5000” Large transactions
f @7d “Alfred finance last 7 days” Recent activity

Projects (Kalvi)

Text Voice What
k “Alfred kalvi status” Project overview
ki “Alfred kalvi issues” Open issues
kp “Alfred kalvi PRs” Pull requests
kn “Alfred kalvi next” What to work on

Health

Text Voice What
h “Alfred supplements” Current stack (time-aware)
ham “Alfred supplements morning” Morning stack
hpm “Alfred supplements lunch” Lunch stack
hnt “Alfred supplements night” Night stack

Work

Text Voice What
w “Alfred calendar” Today’s schedule
wt “Alfred calendar tomorrow” Tomorrow
ww “Alfred calendar week” This week
wstd “Alfred standup” Standup prep

Notes

Text Voice What
n <text> “Alfred note [text]” Quick capture
ni <text> “Alfred idea [text]” Idea capture
nt <text> “Alfred todo [text]” Task capture

Home

Text Voice What
ld “Alfred lights dim” Warm/dim
lb “Alfred lights bright” Full brightness
ln “Alfred lights night” Night mode
lo “Alfred lights off” Off

System

Text Voice What
? “Alfred help” List commands
s “Alfred status” System status

Modifiers

Commands can be modified:

Output Modifiers

Text Voice Effect
+q “quick” Brief output
+v “detailed” Verbose output
+t “send telegram” Route to Telegram

Filters

Text Voice Effect
>N “over N” Greater than
<N “under N” Less than
@Nd “last N days” Time filter

Examples

fw +q +t              # Quick weekly finance to Telegram
ki +v                 # Detailed issue breakdown  
f >10000 @30d         # Large transactions this month

Context Awareness

The assistant knows context:

Time-based:

  • h at 7am → morning supplements
  • h at 1pm → lunch supplements
  • h at 8pm → evening supplements

Conversation-based:

  • After k, “issues” → ki (no need to repeat “kalvi”)
  • After f, “weekly” → fw (no need to repeat “finance”)

Voice Confirmation

For voice commands, I built in a confirmation step:

Me: "Alfred finance weekly send telegram"
Alfred: "Weekly finance to Telegram. Go?"
Me: "Go"

Confirmations: “yes”, “go”, “confirmed” Cancellations: “cancel”, “never mind”


Evolving the Language

The spec isn’t frozen. It evolves from actual usage:

  1. Alfred suggests shortcuts — When I type something verbose like “check my spending this week”, Alfred responds with the answer plus a nudge: “Shortcut: fw

  2. New patterns get added — If I find myself repeating a query that has no shortcut, we add one.

  3. Unused commands get dropped — If a command never gets used after a month, it’s cruft. Remove it.

  4. Voice and text co-evolve — The same feedback loop works for voice: “Alfred, what’s on my calendar tomorrow?” gets the suggestion “Voice shortcut: ‘Alfred calendar tomorrow’”

This way the language grows from real behavior, not theoretical completeness. Start minimal, expand only when friction demands it.


What I Learned

Single-letter commands stick. After a week, f and k became muscle memory. I rarely type the full words anymore.

Voice needs more syllables. “Alfred finance” works reliably. “Alfred fin” gets misheard as “Alfred thin” or “Alfred fine.”

Context reduces friction. Not having to repeat the domain after the first command feels natural, like continuing a sentence.

The spectrum helps learning. I started with full words (finance.weekly), graduated to medium (fin.week), now use ultra-short (fw). Having all three available meant no memorization pressure.


The Help Command

Typing ? shows available commands:

> ?

FINANCE: f fw fm f>N f@Nd
KALVI:   k ki kp kn
HEALTH:  h ham hpm hnt
WORK:    w wt ww wstd
NOTES:   n ni nt
LIGHTS:  ld lb ln lo
SYSTEM:  ? s

Modifiers: +q +v +t | Filters: >N <N @Nd

Try It

If you have an AI assistant you talk to regularly, try designing a shorthand:

  1. List your 5 most common queries
  2. Assign single-letter domains
  3. Add 2-3 actions per domain
  4. Test for a week, drop what doesn’t stick

The goal isn’t to build a programming language. It’s to reduce friction on the things you do every day.


References