I would start by looking at the AD data management to clean it up. You need reliable data for it to work.
The next step I would take is to get a whiteboard and try to layout a relational database to support it. Perhaps tables for schools, campuses, and groups. Each of these tables would have a unique id for each record, as well as a parent id. This would allow a hierarchy of one to many relationships.
Another approach would be to just use the AD data. Have a script that builds the menus every night, extracting the data from AD. That way, you don't have to maintain the data in multiple places.