One page per category, not one page listing everything
A single products page competes for nothing. "Edibles [city]" and "pre-rolls [city]" are separate queries with separate intent, and each needs a page that is genuinely about it. Most dispensary sites push every query at an embedded menu iframe, which search engines and AI crawlers largely cannot read.