Description minimum length enforced at submission; short descriptions flagged incomplete
Why it matters
A directory populated with one-word or blank descriptions is functionally indistinguishable from spam. Google treats thin content as low-quality and suppresses the entire directory in search results, not just the bad listings. Users who click through to a listing with no real description bounce in under five seconds, hurting engagement metrics that feed back into ranking. Competitors with enforced minimums outrank you for the same keyword terms because their pages carry enough tokens for semantic relevance.
Severity rationale
High because thin descriptions drag down site-wide SEO and let spam submissions pass through as legitimate listings.
Remediation
Enforce a minimum length on the server before the row touches the database, and mirror the constraint on the form with a Zod schema so the client catches it first. Client-side minLength alone is trivially bypassable; attackers POST directly to the API. Add the check to src/lib/validation/listing.ts and reuse the schema in both the form handler and the API route.
import { z } from 'zod'
export const ListingSchema = z.object({
description: z.string().min(50, 'Description must be at least 50 characters').max(5000)
})
const result = ListingSchema.safeParse(await req.json())
if (!result.success) return NextResponse.json(result.error, { status: 400 })
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