It names the caller. It never learns who asked.
transcript
Your iPhone rings. An app names the caller. But the company never learns who asked. Or which number.
Apple's rule for live caller ID: answer without learning the question. So hide who's asking. Hide which number. Even hide whether you wanted a block or a name.
Step one. Your query goes through a relay run by Apple. The relay sees your IP address. But only ciphertext. Truecaller sees the query. But only the relay's address.
So how does it stop scrapers? Single-use tokens, collected while you're signed in. Genuine and unspent? Answered. Whose token? Nobody can tell.
Now the number. Truecaller's example splits it into 8 shards. 21 buckets each. Yours is shard 3, bucket 11. Your phone sends a selector. 1 at bucket 11, 0 elsewhere. Encrypted.
Here's the catch. The server can't see which bucket. So it multiplies through every bucket of shard 3. Only your phone can decrypt the answer.
So what does Truecaller learn? A Truecaller user asked about something. Possibly in shard 3. With shards in memory, under 100 milliseconds is a realistic goal.
Full breakdown in the lecture.