2026-09-12 — Listing media review and city-level location

Summary

Community and seeded listings can go live without a fine map pin. Submitter city becomes the last-reported city for Find; optional fine location can be added at registration or later. Listing images run through Gemini auto-review, show a truck-mark placeholder while pending or flagged, and stay flappable for manual PR review afterward.

Location

  • locationPrecision: unknown | city | fine

  • City-only listings resolve Find pins from city centroids (light name jitter); unknown stays unpinned

  • submitCommunityListing + updateListingReportedLocation capture submitter city and optional fine coords

  • Memphis curated seed includes Chakka Aur Chaat at city level (no fake fine pin); syncMemphisDirectorySeedFields updates existing rows

Media review

  • Community uploads start pending; Gemini auto-approves or rejects (listingMediaReviewAction, GEMINI_API_KEY / optional GEMINI_LISTING_MEDIA_MODEL)

  • Owner Manage uploads remain immediately approved

  • Signed-in users can Flag photo after approval → flagged + listingMediaFlags queue

  • PR queue at /manage/pr/listing-media

  • Public profile/Find hide non-approved images and show Diana Montero truck mark placeholder (no badge circle): public/images/brand/truck-listing-placeholder.svg

Data plane note

Local and seed work target Convex deployment opulent-cobra-206 (dev deploy key). Point Vercel Preview/Production NEXT_PUBLIC_CONVEX_URL at that shared-dev URL when cutting test.foodtrucknerdz.com over from empty deployments.