Skip to content

Seeding and data quality

Venues are seeded from OpenStreetMap:

  • /api/bars/seed — the admin bootstrap route (legacy name), which upserts OSM-derived places directly into places.places.
  • The platform Fundi worker — city-by-city seeding at scale across the continent.

Every seeded place gets an ownerEntityId: a tier-0 organization is auto-created in entity.entities for each place, so ownership edges exist from day one and the claim flow always has a target.

Some OSM records carry names that are not names — ".", "8318", stray punctuation. The rule:

  • A name containing no letters in any script is junk. It is seeded with status: 'flagged' and isActive: false, queued for admin review, and never published live.
  • A name containing letters in any real script passes — Arabic, Shona, Ndebele, Portuguese, and every other script are valid.

The taxonomy lives in places.categories and maps each categorySlug to one or more schema.org @type values via schemaOrgType. Examples:

categorySlugschema.org @type(s)
restaurantsRestaurant, FoodEstablishment
national-parksPark, TouristAttraction
tech-companiesOrganization
educationEducationalOrganization
landmarksLandmarksOrHistoricalBuildings

Places reference the taxonomy via primaryCategoryId and secondaryCategoryIds — categories are never duplicated onto place documents.