There's not really much you can do about this. All you can do is hope the app figures out someone in your contacts is the same as someone you're talking to in the app. Different apps will have different logic to determine whether contacts can be associated with users in-app. The trick is making the app figure it out.
The way this works is kind of covered here: https://developer.android.com/develop/ui/views/notifications/conversations#api-shortcuts. What happens, basically, is when the app handles some sort of conversation, it'll create a shortcut and hopefully (in your case) associate a contact with that shortcut. Once a shortcut is associated with a contact, the shortcut appears in the contacts app as well in some other places, like the share sheet or when you tap and hold the app icon.
So, if I were trying to fix this myself, I'd ensure each app has access to contacts, then try to trigger the app to figure out the association. Maybe by trying to start a new conversation with the contact using the contacts list if possible. Or I'd delete an old conversation with that person, then start a new one. Or maybe delete the contact then add them back again. Maybe the app has some logic for processing new contacts.
Other things I'd maybe try, but I doubt they'll help could be:
- change the phone type to something like "mobile"
- you can try adding multiple numbers, an international and local version might help, i.e. for US/Canada +12223334444 (probably preferred since this is the E164 standard) / 2223334444
- Maybe if you live in an area where some area codes' numbers have leading zeros that can be omitted sometimes, try adding/removing the zeros?
If you still can't get it to work, you'd want to contact their support people or communities. GrapheneOS, as far as I know, doesn't modify this part of AOSP. All Android phones would handle shortcuts/conversations/people roughly the same way and have been since Android 11. So, I'd imagine they'd know how to fix this problem.