Hi Manish,
I agree with Richard, the easiest approach would be using External Contacts. (In regards to this at least being fully on Genesys's side, you wouldn't need an external DB/API from the customer)
I would say that's the expected feature to be used to store customer's information, and it also already automatically stores the history of all previous interactions from the same customer.
So it can certainly be used with custom field to store some customer preferences, or even "last choices".
You can also use the previous conversations to check some data stored on the participant data of each of those.
For example, after a call goes through the IVR for the first time, you can update some simple data/preferences/choices into the external contact custom fields of that customer, and you can also set some other extra/complex information on the participant data of that call.
Then when a new call comes in from the same customer, you can check the main preferences/choices on the custom fields from the external contact, and if you need some more detailed information you could use Data Actions to access the participant data of previous conversations and check for that information in there.
If the volume of customers is small, maybe you can use a Data Table as well (to store preferences and previous choices), but I believe DTs come with lots of limits (Number of rows, columns, and how many actions you can run on them per minute/hour, etc.). And I don't think it's supposed to be used for this type of scenario, but it's certainly an option.
------------------------------
Marcello Jabur
------------------------------