So, for Firefox for Metro and Firefox for Android, they're both firefox, but with different uis. So what we'd infer would be correct. For true correctness, I'd have to maintain a list of which products it's ok to infer the rest of the details for and which ones it isn't. Even then, there are edge cases where it's incorrect. E.g. you're leaving feedback for Metro, but using Firefox and the versions are different.

The mildly yucky thing here is that the way I implemented things, I'm conflating formnames with products. So that code gets trickier if we decide not to infer the rest of the things from the user agent.