An ad mentions a familiar app name. Your importer attaches it to the first matching catalogue result. The dashboard now looks more complete and may be less correct.

Identity matching is one of the unglamorous jobs that determines whether competitive intelligence is useful.

Prefer durable identifiers

Keep the source advertiser identifier, landing URL, observed app-store link and destination app identifier where available. A display name is supporting context, not a universal key.

A publisher can operate several apps. An agency can advertise for several clients. Two unrelated products can share similar names. A translated or abbreviated name can make the relationship even harder to infer.

Store the reason for the match

An exact store link is stronger evidence than a shared word in the creative. Record whether the relationship was direct, reviewed manually or inferred with limited confidence.

Allow an unmatched state. A smaller collection of correctly linked ads is more useful than a larger collection in which unrelated campaigns silently decorate app profiles.

Make corrections reversible

If a reviewer changes a match, preserve the source record and the previous decision. Do not rewrite the raw observation to make it appear that the corrected relationship was always known.

For a hypothetical app-research workflow, show the advertiser and source link beside the creative so a user can inspect the connection. A hidden confidence score helps less than a visible explanation of why the ad belongs there.

Before publishing a claim such as “this app is advertising heavily,” verify both identity and the meaning of the observed count. Multiple creative records may be variants of a campaign rather than independent campaigns or evidence of high spending.

The matching layer will never be the most photogenic feature in your product. It is nevertheless what keeps the photograph attached to the right business.