The failure that pushed me into this design was not subtle. I had a blended embedding that kept returning candidate matches that looked reasonable at a glance and wrong on inspection. A query about a very specific certification would drag in people with the right industry background but no credential. A query about deep experience in a narrow domain would surface candidates whose skills summary happened to mention the right keywords but whose work history did not support the match. The single vector was doing exactly what I asked it to do: compressing the entire record into one semantic point. The problem was that a candidate record is not one thing.
This is the same failure dense-retrieval people call representational collapse: when you ask one embedding to summarize a heterogeneous object, the model gravitates to the dominant mode and discards the long tail. For a document, that tail is a paragraph. For a candidate record, the tail is an entire field. Credentials get smoothed by industry text. Career trajectory gets smoothed by a polished summary. A single vector turns a structured record into a compromise the search layer has to live with.
A profile has several different centers of meaning — multiple semantic modes that do not collapse cleanly. Work history answers one class of search intent. Skills and designations answer another. A broad profile summary is useful for discovery, but it is a poor substitute for the details that actually separate one candidate from another. The fix is to stop forcing one embedding to carry all of them.






