I like the idea. Many of the controllers have no real value and are degenerate. The generated controllers
could even implement the recommended security provisions to only expose the nested action.
I was playing with routing for a different reason today, but it should not be that hard. The RouteSet looks at the path and extracts a set of parameter values from the environment, then asks each route in the set to match against the route. If it matches it extracts the parameter values from the path. Patching the extraction method to also generate a controller should be pretty straightforward.
patch write_recognition to alias recognize and replace it with a wrapper method that also generates the controller. If that turns out to be a bit too late, do the same with recognition_extraction.