The going descriptions in advance can indeed be highly nuanced as you point as you point out - we try normalise these (at the risk of oversimplification) in the table daily_runners_insights which corresponds to the going descriptions in historic_runners_inisights.
These tables are available to all subscribers, see:
See the fields, "grouped_going" and "simplified_going" with corresponding descriptions.
These fields broadly match the fields in daily_runners_insights by pattern matching these long strings to simpler categories in terms of a description, so at least there is always a directly corresponding category for system building and modelling so should address the issue you have raised. However, since going may change right up to the race off time, there is always the issue that the going description may not match what is returned after the race in historic races.
To complicate matters further, there is the possibility that the going description - which is always the responsibility of the Clerk of the course - is inaccurate and was never reflective of the actual state of the ground, either before or after the race. The only way to ascertain this is with a detailed analysis of winning times and consistent performers in races in order to spot anomalies.