A presents a challenge to B. B has to spend CPU time to solve it and present the solution to A. The problems are not trivial and will result in B spending CPU time solving it. These problems could be anything from a simple hash target like Bitcoins, to more exotic work challenges that consider a number of data sets.
Ok, that goes some way toward solving the problem... IMO, the votes themselves should be the work, otherwise the frequency with which the challenges arrive might not be sufficient to prevent the sybil problem.
Phew, ok I'm glad you are finally getting a fully picture. Was that not obvious in the primer doc though, or from the earlier example? What was missing? And don't say a full technical doc

I should be able to explain the crux of this in a few sentences and if I can't I want to know why.
I considered that actually, but I determined that it was more efficient this way and could see no adverse problems. Could you expand on your concern?