The printed name for all people looks something like "[age], [defining feature] [gender]",
Also, in a case like this, you might find it easier to use rules for printing the name of rather than the printed name property. That may be kind of opaque, so let me explain…
An object has a property called the printed name. This is a text property whose default value is the source code name of the object, but you can set it directly:
npc_1 is a person in the hallway. The printed name of npc_1 is "Frevelyn".
and change it dynamically in the course of play:
Carry out giving the Cursed Pot of Name Change to npc_1: now the printed name of npc_1 is "Harge".
There’s also a “printing the name of something” activity, documented in Writing with Inform §18.10. This is what gets invoked when you say [npc_1] or something like that. Its default behavior is just to print the printed name of the object, but you can modify it with “before printing the name of” rules and “after printing the name of” rules. So you could write:
Before printing the name of a person (called individual): say "[age of the individual], [defining feature of the individual] [gender of the individual] ".
(though you probably wouldn’t want that exactly, because your genders are nouns rather than adjectives).
You could even write a For printing the name rule that overrides the normal behavior:
For printing the name of a person when the player is not wearing the glasses: say "blurry individual".
(though this doesn’t override any before/after printing the name rules you may have written).
The punchline is that the understanding by properties thing that Eleas pointed out applies to text properties like the printed name, too:
Understand the printed name property as describing a person.
However, if you use this, the player will need to type the whole name. If the printed name of npc_3 is “Rindy Auld”, then this line will allow the game to understand “x rindy auld” but not “x rindy” or “x auld.” Whereas if she’s called Rindy Auld in the source code, both “Rindy” and “Auld” will automatically be understood.
Anyway! If what you’ve got is working for you right now, there’s no particular need to change it, but I thought you might be interested in those details. And if you want one word of arbitrary text that can be understood (like a proper name), then one approach would be to make that the printed name and use Before printing the name of and After printing the name of rules to get the rest of the properties in. (Though you can also have other text properties that can be understood–you could give an npc a first name and last name property, and have both of those be understood as describing a person.)