Kim Lawlor
All Case Studies
Interaction DesignPower UsersDesign SystemsFintech

Command Line

Every tool was reachable, if you already knew which module held it. An instruction here is a command plus the thing it acts on, and a mistake costs one correction instead of a restart.

Command line

A command you can see the shape of.

Every instruction is a command and, usually, one argument. Once the command is accepted it stops being text and becomes a chip, so the line always shows what is settled and what is still being typed.

1

The accepted command. A chip, not text. It survives edits to the rest of the line.

2

The argument being typed. Still plain text, still editable, matching as each character lands.

3

The keys that move it forward. Named in the footer so the model is learned by using it, not by reading a manual.

RESMSFEsc

Select a symbol for Company Research.

Microsoft CorporationNGSMSFT
Microsoft CDRTSXMSFT:CA
TabCompleteSpaceAcceptEnterRun
The problem

Every tool in QSWeb was reachable, but only by knowing which module held it and clicking through to find it. That is a fair price in the first week and an expensive one on the hundredth repetition, which is exactly the audience the platform is built for. Search would have been the easy answer. The design question was how to let the product understand an instruction before it had finished being typed, without making the fast path something you earn by memorising codes, and without letting a typo turn into a dead end.

Outcome

Built and in user acceptance testing, giving QSWeb one keyboard entry point that opens tools and resolves symbols without navigating a menu or rearranging a workspace.

Role
Senior Product Designer
Year
2026
Status
UAT
What I owned
Product definitionUX architectureInteraction designUI designPrototyping
System at a glance
11
Commands in the catalogue
Grouped by the work: research, trading and monitoring, tools.
2
Stages in an instruction
A command, then the symbol or list it needs. Some need nothing.
Both
Name and short code
Every command answers to its full name and its alias.
Keyboard
Primary input
Every step has a key. The mouse stays optional, never required.
Key decisions
01

Give an instruction a grammar you can learn once

A command line is only as good as its predictability. If the same typing produces different results depending on how far the product has got in parsing it, speed is worth nothing, because every instruction has to be watched. A fixed grammar means the rules hold every time, and the product can show how far it has got with what you typed. What a user has to hold in their head shrinks to the part only they can supply.

Process

The chip was a decision, not a given.

An instruction has two halves and the interface has to say which half it has understood. Three ways of doing that were on the table, and each one moves the cost somewhere different.

AOne plain line, parsed on Enter
res msftEsc
Nothing new to learn and nothing to look at either. Until you press Enter you cannot tell whether the line is an instruction or a search box, and a typo anywhere means retyping all of it.
BTwo fields, command then argument
CommandCompany ResearchSymbolMSFT
Unambiguous, and slow. Two fields mean a focus move between every command and its argument, which is exactly the cost a keyboard-first surface exists to remove.
COne line, two states
RESMSFEsc
One field, still typed straight through, but the accepted half is visibly settled. The cost is a control that has to be learned once, and it is paid back the first time an argument is wrong and only the argument has to change.Shipped

The third option only works because the command commits early. That is what turns a failed symbol into one correction rather than a restart, and it is why the recovery behaviour further down exists at all.

Trade-off

It introduces a control that has to be learned once, which a plain text box would not. That cost is paid back the first time an instruction is half wrong and only half of it has to be fixed.

02

Fast should not mean memorised

The usual bargain with a command line is that it rewards the people who memorised it and punishes everyone else, which quietly makes it a tool for the users who need it least. Accepting more than one spelling for the same command removes that bargain: nobody has to earn the fast path, they arrive at it by using the product. The guide works the same way, writing an instruction into the line rather than describing it and leaving the user to retype it from memory.

Vocabulary

Two ways to say the same thing.

Terse codes are fast once you know them and useless before that. Rather than pick a side, every command answers to both its name and its short code. New users type the word they already know, and the chip they get back teaches them the code for next time.

Types research

researchEsc

Types res

resEsc
Both resolve to the same command.
RESMSFTEsc
Microsoft CorporationNGSMSFT
Command[ symbol ]RES, FND, TECH, TR, ALERT
Command[ list name ]WATCH, PORT
CommandNEWS, POS, ORD run on their own

Supporting both spellings means two things to keep in sync: the catalogue a user browses and the strings the matcher accepts. That cost is the trade for not making speed conditional on memorising the product.

Trade-off

Two spellings mean two things that can fall out of sync: the catalogue a user browses and the strings the matcher accepts. Gating speed behind recall was the only cheaper option.

03

Make a bad command recoverable

The fastest way to make a keyboard shortcut worthless is to answer an imperfect instruction with a dead end. Everything the product has already understood stays understood, and only the part it could not resolve is put back in question. The user keeps their place instead of being returned to an empty line with nothing to show for what they typed.

Recovery

Nothing matched, and nothing was lost.

A command line is only fast if a mistake costs less than starting over. Text that is not a command simply stays text, so it is obvious what the system did not accept. And when the command is good but the symbol is not, the chip stays put and only the argument is in question.

The command is not recognised
reserchEsc

No command called "reserch".

Company ResearchOpen research for a symbolRES[ symbol ]
Fund ResearchOpen fund research for a symbolFND[ symbol ]
It never became a chip, so the typo reads as a typo. Accept a suggestion and the rest of the line carries on from here.
The command is fine, the symbol is not
RESMSFTXEsc

No symbol matches "MSFTX".

Microsoft CorporationNGSMSFT
Microsoft CDRTSXMSFT:CA
The work already done stays done. Only the unresolved half is editable, so recovery is one correction rather than a retype.
Trade-off

A line that can sit half-valid is harder to design, and harder to explain, than a simple pass or fail. The return is that no mistake is ever expensive.

Shipped

A command layer the product can keep growing into.

The command line is built and in user acceptance testing. It gives QSWeb a single entry point that opens tools, resolves symbols and starts actions without navigating a menu or rearranging a workspace. Because commands, their arguments and their grouping all come from one catalogue, adding a command is a data change rather than a redesign, and it appears in the guide, the suggestions and the matcher at the same time. The interaction model is the part meant to last: the chip, the two stages and the partial recovery hold regardless of how many commands are added later.

Discovery

The guide types for you.

Help is the usual dead end: you read a list, close it, then type from memory. Here the guide lives in the same surface, grouped by the work rather than alphabetically, and picking a row drops the chip into the line with the argument still to fill.

Browse by the work, not the alphabet
Company ResearchOpen research for a symbolRES[ symbol ]
Technical ChartOpen a technical chart for a symbolTECH[ symbol ]
NewsView latest market newsNEWS
Trade TicketOpen a trade ticket for a symbolTR[ symbol ]
WatchlistOpen a saved watchlistWATCH[ list name ]
PositionsView open positionsPOS
Pick a row
The line is already started
RESEsc

Select a symbol for Company Research.

BackspaceEdit the commandEnterRun
The argument is left empty on purpose. The guide gets you to the part only you can answer, then gets out of the way.

Because the same catalogue drives the guide, the suggestions and the matcher, a new command is added in one place and appears in all three.

Planned measurement

Once released, I would use these signals to see how the command model performs in practice, so the decisions in it can be checked rather than assumed.

  • Commands executed, to see which parts of the product people actually reach for.
  • Name against code usage, to test whether supporting both spellings earns the cost of keeping them in sync.
  • Failed commands and symbols, to find the gaps in the vocabulary worth closing.

The vocabulary cannot drift

The suggestions, the guide and the matcher all read from one catalogue, so what a user learns in one place is what works in the others.

Prototype

Loading commands…
Loading commands…

Related Projects