I've done some pre-seeding to be able to auto-install Debian on bare metal and as virtual machines. Using classes is a useful addition for conditional execution of configuration management.
What you probably ought to be doing instead is specifying the option you want via the `classes` setting (an alias for `auto-install/classes`), and then implementing the behaviour you want by setting `preseed/run` in a minimal preseed.cfg, and having a script do whatever you want in response to the classes= setting you specified. So your preseed.cfg would just be:
d-i preseed/run string start.sh
and your start.sh would be something like:
#!/bin/sh
. /usr/share/debconf/confmodule
db_get auto-install/classes
db_set preseed/include "${RET:-default}".cfg;;
(you might want to check that the value of $RET makes sense before using it)
Then the real configs go in `default.cfg` and `alternative.cfg` (assuming you're planning on specifying `classes=alternative`)
You may be able to get inspiration from here: https://hands.com/d-i/
although the class handling there is quite deeply buried.
Here's a simpler example of using preseed/run to do odd things to D-I, that while not involving classes, is easier to follow: https://hands.com/d-i/bug/846002/
BTW `auto-install/classes` is reserved for users (it is not used by D-I internally), so it's there specifically for you to implement whatever scheme you like.
Additional information on pre-seeding can be found at B.2. Using preseeding.

