I dunno how much work this would be or if it's worth including, but it's important for my project, and I'd be willing to do the work for you.
One thing I noticed is that is seems all the various creatures are placed in the wrong categories.
Just one of many examples, Goblins I would think should be placed as Humanoids, yet they are marked as creatures along side bears. I feel the same about Ogres, Spriggans, Grummites, etc.
In fact, there are only two creatures that are even marked as Humanoids, a test Spriggan and a "dead lover" zombie.
Is there a purpose for the Creature Types other than categorizing them? (Creature, Humanoid, Undead, Horse, Giant, Daedra)
If that is too much work, another option (which is an OBSE question) is how could I tap into the sub-category (Goblin), and how do you select the sub category in the construction set (which is a CS question, I know).
I have a feeling I'm probably overlooking something important, so any words of wisdom/advice would be greatly appreciated.
I believe Humanoid is a leftover category, maybe from the times the developers were considering something (maybe talking creatures?) but scrapped it.
Other than that, the http://cs.elderscrolls.com/constwiki/index.php/Category:Creatures seems to have the best info about what each category is about.
To identify a creature's appearance through OBSE, one way is using its model path, as most creatures should have the name of their 'species' in their model path unless the creator was 'too creative' in file packing procedures.
For example with goblins, you could use a string_var and evaluate it looking for the word goblin:
string_var modelref actor...let model := actor.GetModelPathIf eval (sv_Count "goblin" model > 0);actor should be a goblin...
Problem is that many (all) modded creatures use the model paths of vanilla creatures but represent different species, like the little demons in WarCry using the goblin skeleton, and thus they could be incorrectly identified as such. You can combine it with a name check against those creatures to avoid it in some extent.