Shy Trump factor/Clinton effect
First, it remains uncertain that there was a shy Tory factor in the Donald Trump election. The popular vote was within the margin of error of the polling. It's only in two states (Wisconsin and Michigan) that the actual result differed from the polling result by more than the margin of error. The greater problem was that polling was off in Trump's favor in five states that mattered (also Pennsylvania, North Carolina, and Florida). It's unclear exactly why that might be true.
Note that California had almost as high an error (6.5%) as Wisconsin. We just ignore it because it didn't change the statewide result (Clinton won) and because it was in the opposite direction. Yet California makes more sense than Wisconsin as a place where people are likely to feel unwilling to admit to voting for Trump.
If there was a shy Trump factor, we'd expect to see it more where Trump was unpopular. Instead, Trump won the parts of Wisconsin that he was expected to win by an unexpected margin. Statewide, he got roughly the same vote as Mitt Romney in 2012. It was Hillary Clinton who underperformed, getting a lower vote than Barack Obama had.
If United States voting has a Bradley effect, we would have expected to see it in 2012. Obama is exactly the kind of figure that the Bradley effect says should do better in polling than in reality. Polling should have overestimated his vote. Yet in reality, polling underestimated Obama's vote share in 2012. In fact, it underestimated Obama's vote share by more (3.2%) than the polling miss for Trump in 2016 (1.2%).
It is disputed that there was a "Bradley effect" in the actual Bradley election.
Is it possible that we could come up with a system that would detect people lying to pollsters? Sure. We could come up with a series of innocuous questions that people won't recognize but which would allow us to estimate their vote. The problem is that even a small margin of error in that prediction would overwhelm the alleged shy Tory factor. The difference in the margin in Wisconsin was only 7.2%. So your method would have to be consistently more accurate than that.
Another problem with this would be collecting the data. How will you know the person's true feelings? The whole point is that the person is lying in polls about the actual vote. How would you associate the real result with your calculated result? You'd have to assume that people who truthfully tell you that they are voting for the Tory candidate give the same responses as those who say they are voting for the Bradley candidate but who are really voting for the Tory. That may not be true.
The presumption is that they do not want to admit to their true preference because it seems racist (anti-Bradley), economically selfish (Tory), or some similar explanation. There are multiple reasons to vote for each candidate. For example, some people may have voted Trump because he was the only Republican-like candidate who could reasonably win. But that's the kind of thing that someone could simply say. Others might prefer Trump because he says what he thinks, however racist or misogynistic it might be. That's a harder reason to admit.
You have to separate the group of admitted Trump voters who prefer Trump for the same reasons as the hidden Trump voters from other admitted Trump voters. It's not clear how you do that without first identifying them.
I looked at the Electoral Compass site. That seems more like it is trying to guess who you might like than to actually predict for whom you might vote. As a Bradley effect detector, it has the problem of not hiding what it is trying to do. I suspect that I could make it answer the result that I wanted it to give. It's likely that a shy Tory voter would lie to it as well as to more traditional pollsters. The stage where it asks if various people are smart, caring, experienced, etc. would work better, but it might be hard to calibrate it.
Let's say that we were able to overcome all those problems. We have a system that asks certain questions and correctly determines how that person will vote with 100% accuracy even if that person is lying in some responses. That still doesn't get us 100% accurate polls.
The problem is that polls are a sample of the population, not the population itself. To get that 100% accuracy in predicting the vote, the poll would have to successfully question every single voter. More than that, the poll would have to correctly determine who is and is not going to vote, also with 100% accuracy.
The truth is that sampling just isn't that accurate. A pollster calls a thousand landline phones (cell phone calling may incur an expense for the recipient, so is more restricted). More than half the people who answer say that they don't want to talk right now. That is self selecting and in an of itself distorts the response. Some people never will take the poll.
That bias is in addition to what is called the margin of error. The margin of error is a purely mathematical construct. It says that if you randomly select a certain number from a larger population, that the chance that their makeup will match that of the larger population is 95% within the margin of error. So you have only a 5% chance of getting a really wrong answer.
Now when are polls most interesting? When the result is close. When are polls least likely to be accurate? When the result is close. So when you most care what the result is, the polls can't predict the winner. Why? Because a polling result of 50.1% to 49.9% could equally well represent a population with real preferences anywhere from 51.1% to 48.9% to 49.1% to 50.9%, even neglecting the 5% chance of a result outside that interval and any polling bias. And most polls don't have a margin of error of just 1%.
Another problem is that selection bias is often associated with certain demographic groups. For example, voters in the 18 to 29 age group are both more likely to be Democrats in the US and more likely to use their cell phones as their only phones. People who are working a high number of hours and never available are more likely to be Republicans. So pollsters adjust their polling demographically. They artificially try to make their polls have enough people who vote like cell phone users and who vote like people who work a high number of hours.
The problem comes when they have to estimate those demographic groups. What is the best predictor of how the demographics will be in a particular election year? A look back at the demographics of the last similar election year. But demographics change every election. And we don't know how they'll change until after the election. We can poll for it, but that poll is also subject to selection bias and sampling error.