As it arrived
loading…
✕ Description
—
✕ Amenities
03 · Content Enrichment
The problem
Supplier feeds arrive with holes: no description, no amenities, nothing to rank on. Those listings sit in the catalogue unfindable and unbookable, and fixing them by hand does not scale past a few hundred properties.
loading…
✕ Description
—
✕ Amenities
—
✓ Description
—
✓ Amenities
The solution
A scanner finds the gaps, a queue distributes the work, and a worker writes copy grounded strictly in facts already on the listing. Run it yourself below.
Guarantees
The prompt receives only the listing's own fields and is told not to invent. The reply is then validated in code: every original amenity must survive and at most three may be added. generator.go
A worker claims a listing with a compare-and-set in SQL, so two workers racing means one wins and the other cleanly skips. Overlapping scans are deduplicated at enqueue time. pipeline.go
If the model is unavailable or the daily budget is spent, a template generator composes from the same facts. Enrichment keeps progressing at zero cost, and the audit records which path wrote each field.
Transient errors release the claim so the queue retries with backoff. Exhausted retries park the listing as failed, where the dashboard shows it rather than losing it silently.