You can store custom fields on a user in the Canvas data model, but I've not done that personally. The challenge with a popup is that Canvas is moving over to JS frameworks like React, so the HTML is generated dynamically and watching for changes becomes more difficult than looking for a div class and appending, etc.
James Jones has written about using a MutationObserver for dynamic changes, and here's an example of that working. You can write a function that authorizes an API call as the current user which puts data into the user model, like I already mentioned. It's a trick to decide when and where to make that popup happen though.
Robert's idea about using a single-quiz Module with subsequent modules locked until that quiz is completed would be much less overhead.