Hi @Anonymous,
The docs here will provide what you need to know from a field perspective, focus on "Record Source Type" set to "Query String." With it, when you create a Web Page, the user will access the record by adding the record's GUID to the URL based on the next field, "Record ID Query String Parameter Name". Note that this field defaults to "id" and that usually works best.
E.g., if URL is https://byansakurasportal.powerappsportal.com/project-survey/ for the Web Page to show the Project Survey, then https://byansakurasportal.powerappsportal.com/project-survey/?id=1ba19e3d-2fd1-e511-80df-c4346bac0574 will take them to the Project Survey with a unique record ID identical to the bold GUID.
Now, assuming the Contact that needs to fill it out is also related in some manner, your Power Automate would just construct your URL. E.g., if the email is using an email template, you can have a field on Project Survey that you fill with a Power Automate or a workflow on create to set it to be:
"https://byansakurasportal.powerappsportal.com/project-survey/?id=" + [Project Survey ID]
If not using an email template, you can just do the same directly in Power Automate. Either way, just add the URL or wrap it in an HTML link.
Assuming you don't have Entity Permissions enabled, and you don't list the Project Surveys in any subgrid or entity list on the portal, it would be unlikely that someone could find a survey other than their own sent in the email.
If you need to lock the form after a submission, consider following the method I use here: PowerApps Portal Security Part 3: Locking Forms after Submission | Justin Burch