You are utterly wrong. Truecaller does take its data from the contact book. It's very easy to test as well. If you happen to know someone's number is not on truecaller, do this - add his number in your contact book with some fake name and install true caller after that. When he calls you, you'll see the fake name.