Ironically, on an absolute level this type of problem was pretty much solvable back in the unit record era
You'd construct a database of quasi-representative recipes for every style in which one has an interest. A record with the amounts of every ingredient, for each recipe, for a handy unit volume, like 1 gallon. You'd bang your current list of ingredients on hand and look for compatible recipes at that 1 gallon volume, then have the program tell you how much of each compatible recipe you could make.
The construct would be as broad, deep, and precise as one wanted.
For breadth, if you don't ever see brewing sours, cask ales or Saisons, you wouldn't code them.
For depth, you probably don't actually need to code a hundred recipes for a style - though you'd want to code enough of them to cover some variation in ingredients.
For precision...well, that gets interesting. The program would need to have some run-time adjustments to cover cases, like, you have everything needed to make a nice ESB, except you have C40 and the closest potential match wants C60, so you don't get a "hit" on that one. A slider that would increase the matchable scope of characteristics like color would be handy - you could set it to "+/-20" for crystal malts and get a hit, then make adjustments as needed.
So, sure. It could be done...
Cheers!