By way of introduction, this question is about a quirk of Esperanto, but there is a general conlang question at the end, I promise.
In Esperanto, every root has a natural grammatical part of speech, much like how nouns have a grammatical "gender" (or noun category) in many other languages.
For example, "ŝoveli" means "to shovel". It is naturally a verb. The same root with a noun ending, "ŝovelo", does not mean "a shovel". Rather, it is the noun-of-the-verb, that is, it refers to the act of shovelling. To refer to a shovel, you have to say that it's the tool of the act of shovelling, that is, "ŝovelilo".
Similarly, "humana" means "humane". It is naturally an adjective. The same root with a noun ending, "humano", does not mean "human", it is the noun-of-the-adjective, that is, "humaneness".
This was an interesting design choice, and one that's puzzled me. For an Esperanto speaker, this is something you have to learn about every root, like noun classes in many IE languages.
Are there any analogues to this in natural languages, or is this a device that has been used in other conlangs?