Just have a second AI validate the first and tell it that its job is spotting fake products.
Asking the LLm to read the text and output all the names it found -> it gets the names but there's lots of false positives.
Asking the LLM to then classify the list of candidate names it found as either name / not name -> damn near perfect.
Playing around with it it seems that the more text it has to read the worse it performs at following instructions so having low accuracy pass on a lot of text followed by a high-accuracy pass on a much smaller set of data is the way to go.