G2 returning HTTP 200 with "Something went wrong" is the best single lesson in the post. Asserting on something only success can produce, a new URL or a record id, is the rule I would put at the top of any browser automation brief, because status codes describe the request and not the outcome.
The StartupBlink case is useful too. Checking the Public Suffix List before accepting the rejection, rather than assuming the form was right, is the kind of verification an agent should do and a hurried person often skips.
I also liked that the agent refused personal declarations like "I am 16 or older" unless you approved them by name. That is a sensible boundary for anything signed in your company's voice.
"Submitted is not live" deserves wider circulation. With 13 submissions sitting in review queues, do you plan to recheck each row on a schedule, or wait for the directories to email back?