Isso me parece ser um problema típico de árvore de decisão (Decision Tree).
Na minha opinião, é um dos algoritmos mais simples da área de inteligência artificial e tende a ter um bom resultado para esse tipo de problema (Random Forests também).
Aqui um exemplo para analise de qualidade de vinho: https://www.kaggle.com/code/rajyellow46/decision-tree-analysis-of-wine-quality-data
Pesquisando aqui, eu vi que existem libs com implementação do algoritmo ID3, ele até que é bom, mas seria melhor procurar por uma implementação do C4.5, que é uma evolução do ID3.
Mas, obviamente, se preferir, pode implementar o teu algoritmo do zero. Nesse caso, as principais dicas que te dou são:
- Criar um diagrama da Árvore de Decisão (isso vai te ajudar a visualizar o fluxo que você está seguindo);
- Deixar o código o mais "separado" possível, ou seja, não fazer tudo numa função cheia de IFs, e sim várias funções, cada uma com seu propósito único, pois será muito mais fácil dar manutenção no futuro;
- Preste atenção com a complexidade do código, dependendo da forma que você implementar isso, pode se tornar bem lento. (A muito tempo atrás, eu consegui resolver uma situação dessas aplicando um pouco da teoria de automatos finitos, tendo uma melhora de desempenho de mais de 90%)
P.S.: Normalmente é mais viável utilizar um algoritmo de decision tree já existente, pois tu terá que se preocupar apenas com os dados/cenários, e a preocupação com a lógica para tomada de decisão ficará por conta do algoritmo...e depois, se as tuas "perguntas" e cenários mudarem, você só terá que retreinar o algoritmo com os novos dados...