I'm developing a marketplace application that will eventually list a large number of different types of items.

Currently our search system (powered by Algolia) is built on pre defined attribute fields that must be filled out by the user when adding new items. We would allow 'N/A' to be entered for fields that don't apply or are not known at the time.

This is good because:

  • It makes for a uniform set of filtering options across a product type. Users will know what the available options to filter by are, right away.
  • It ensures a more accurate and complete database as well as more accurate filtering.

But its also bad because:

  • For every new item type we have to research and define a new set of attribute fields, which makes it very labor intensive and slows down expansion greatly.
  • Adding new products is very time intensive for the users as well, which would definitely cause a portion of potential users to avoid using our product.

So to remedy this we are considering moving to a user defined tags system. Which would allow us to expand much faster as there are no pre defined set of inputs per item (aside from basic stuff like item name, price, size, etc). It would also reduce the data entry time for new products.

However I have some issues with this approach:

  • Users don't know the breadth of possible relevant tags per item type, making it difficult to be complete as well as correct. We would implement an autocomplete on the tag input but this would only help the user find tags they already know of.
  • This would likely result in inaccurate filtering for a lot of items until the system matures. Also until we have done an extensive audit of the tags and implemented systems to increase tag accuracy/item searchability (tag voting, auto adding tags)
  • Would result in a lot of user data entry mistakes since a tag can be anything.
  • Generally a less complete and more inaccurate database, until it matures.

I'm looking for some more knowledgeable opinions and advice here, what is a better way to go about this? Are there any issues with the above?


  • It sounds like you already have a pretty good handle on the pros and cons of each approach. Now you just have to decide. Commented May 6, 2018 at 21:41
  • 2
    It sounds like user defined tags would be vulnerable to the synonym problem and the homonym problem. Commented May 6, 2018 at 22:00
  • @RobertHarvey haha, true! I was hoping someone would weigh in and find a hole in my thinking/sway me one way or another. But I realize they both have their merits. I guess one big issue is that I already have the pre-defined attributes system tested and running. The tags system is untested so I'm pretty wary of it, could be a significant time investment getting it going.
    – rt_
    Commented May 6, 2018 at 23:08
  • @WalterMitty I think so yea, it'll definitely introduce a bunch of new issues that I haven't planned for.
    – rt_
    Commented May 6, 2018 at 23:08

1 Answer 1


I'm in favor of a tagging system over predefined fields when many of them are just going to be N/A. All predefined fields do in those cases is suggest things to think about adding. I don't need a pile of text boxes to suggest a list of things to consider adding. I can use lists, tag clouds, or just a paragraph for that.

However, a user defined tagging system is no small thing. You're going to have to quickly teach the user what is important to you to capture this knowledge well.

One technique is to put off the tagging until after the product description has been typed up. You can then scan the description of anything that might match your currently used tags and suggest them. Maybe by highlighting them in the description. This gives the user a chance to notice the tag exists and decide if it should be associated with this product at the tag level.

Another useful technique is to slave synonym tags to a canonical tag. They type colour and it turns into color. Searching colour still matches color.

Wikipedia has taught us the way to deal with user data entry mistakes is more user data entry. Just let people make changes and review those changes. Mistakes are annoying and motivate people to fix them. Let them.

Maybe it's scary to give up control like this but that control really is an illusion when faced with this much work. The best you can do is pick a few products and develop some really good examples for people to follow. Set the pattern and watch it grow. Tweek as needed.

  • Ah this is just what I was looking for, I think tags is the way to go as well. I really like the idea of scanning the description for tags to suggest. And yes I'll definitely get researching on how to train to user to effectively tag. Also re synonyms: One of the many good things about algolia is that the system handles typos and synonyms when searching. If you have any more techniques in mind that could help, please let me know. Thanks!
    – rt_
    Commented May 6, 2018 at 23:39
  • @rt_ best advice is don't trust anything to "just work". Test. Get everyone you can to try the system cold. That means don't tell them how to use it. Just watch them use it and ask them about it afterwards. Look up "hall way testing". Be ready to make changes long into development and after deployment. Commented May 6, 2018 at 23:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.