Personalisation is only as good as what it is written from. Somebody's own recent posts are the one source that is genuinely about them and genuinely current.
Most personalisation at scale is firmographic dressed up as personal: their industry, their headcount, their funding. It is accurate and it is impersonal, and buyers have learned to read it as a merge field.
Somebody's own words from three weeks ago are a different category. The opener can reference a real position they took rather than a fact about their employer, and that is the difference between a message that sounds researched and one that sounds generated.
On a typical B2B list a large minority have published nothing recently. This is marked explicitly rather than hidden, because it decides the personalisation route: those leads need a different angle, and pretending otherwise produces an opener that references nothing.
After the list is built and verified, before copy is written. Running it earlier wastes the pull on leads that get filtered out; running it later means the copy was already written without it.
Skills compound. These are the ones we usually install alongside it.