On my app, when a user selects an interest (example: ios), I'd like to show related interests (swift, xcode, apple, etc). I have a list of around 700 interests/tags (about 300 of them can be classified as tech). How do I design the system so that when a user selects one of the 700 items, the system can show other relevant items? Note that there is no "learning" involved in this. I'd just go and classify each one myself, and this list will be mostly static.
This is how I have been thinking about it:
I could assign a list of categories to each interest. These categories go from narrow to broad. The broadest category is just "tech", so if a user selects "ios", I could right away eliminate the 400 non-tech interests. Now I can fine-tune by looking at narrower categories (example: "mobile-apps", so I could recommend things that are categorized as "mobile-apps". I could go fine-tune further by looking at a narrower category like "ios-apps". So when a user selects an interest, I start by searching for items with the narrowest categories, and if I need more results, and I need to search for more, then, I go broader. To get started with this, I could simply have up to three categories (narrow, medium, broad) for each interest. Once I identify some categories, I can assign them as narrow, medium, or broad to each one. Now for any given interest, I can find out what other interests share the same narrow, medium, or broad categories.
The other approach I was thinking was to maintain a list of related interests for each interest. This requires more initial work on my part, so for each of the 700 interests, I'd find the 5-10 other interests that relate to it best, so for example, "ios" could have related interests like [swift, xcode, iphone, ipad], and so when a user enters ios, I just have to look up this list. I could maintain this list in a relevancy order. This approach is tedious as when I want to add a new interest to my list of 700 interests, I'd have to go through each and see if this new interest needs to be added as a related interest.
My question is--am I trying to reinvent the wheel? Are there any standard data models and algorithms to do this type of thing? I have been trying to Google this and the results seem to indicate things like interests graphs, cluster algorithms. I have no background in data science or machine learning. Any input is appreciated!