Make special climbing holds with RFID scanners in them. These are your starting holds and your finishing holds.
Sell wristbands or something with RFID tags in them. RFID tag is coded to a climber. Upon starting a route, the start hold scans your chip, and upon finishing (if you finish) it gets scanned.
Now you can use an Elo rating algorithm (think chess ratings, or various video games use it now, too) to rate both routes and climbers in a statistically objective way. If there is any intermixing of climbers among gyms who both have this system, you get cross-gym normalization for free.
Finishing a route counts as the climber "defeating" the route. Likewise, failing a route counts as a route "defeating" the climber. This suffices to create a rating, even though the matchmaking graph is bipartite (e.g. there is no way to have two climbers play each other or two routes play each other).