Listing pages display all submitted core fields; no field silently dropped
Why it matters
Storing a field users submitted but never rendering it silently drops the value they trusted you to display. Phone numbers missing from listing pages cost the business real leads; missing hours send customers to closed locations; missing addresses break local SEO signals and schema.org LocalBusiness structured data. Users who submitted via a suggest-an-edit form conclude the system is broken and stop contributing. Directory trust collapses quickly when visible data does not match what submitters remember providing.
Severity rationale
High because dropped fields degrade listing quality, undermine user contributions, and weaken local SEO extraction.
Remediation
Audit the listing detail template against your Prisma or SQL schema and render every populated column. Add an automated test that fetches a fully-populated fixture and asserts each schema field appears in the rendered HTML, so future schema additions cannot silently bypass the UI. Keep the rendering in a single ListingDetail component at src/components/listings/listing-detail.tsx.
export default function ListingDetail({ listing }: { listing: Listing }) {
return (
<article>
<h1>{listing.name}</h1>
<p>{listing.description}</p>
{listing.phone && <a href={`tel:${listing.phone}`}>{listing.phone}</a>}
{listing.address && <address>{listing.address}</address>}
{listing.hours && <Hours value={listing.hours} />}
</article>
)
}
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Listing Data & Schema Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from directory-listing-schema·automated