Case study

Destination Research Engine

AtlasAI is a travel website (destinations, places, reviews, blog) with an AI-assisted pipeline that researches and populates destination content for publishing.

Problem

  • Growing a destination content catalog is operationally heavy: destinations need structured metadata, places-of-interest, descriptions, and imagery to be publishable.
  • Public pages must expose only curated/published content while admins can see everything.
  • Image sourcing needs relevance + attribution across multiple sources.
  • SEO requires stable URLs and fresh-but-cached rendering for crawlability.

Solution

  • Split web + API architecture: a Next.js frontend renders pages and fetches content from a Django REST Framework API.
  • Exposed core resources via DRF viewsets (destinations, places, images, reviews, blog posts).
  • Enforced publish gating at the API layer for non-admin users (published-only and “has images” constraints).
  • Implemented async background jobs for research and media ingestion via Celery workers (with retries/partial idempotency).
  • Stored media in S3-compatible object storage (Cloudflare R2), with a local fallback when not configured.
  • Integrated external APIs for enrichment (OpenRouter for LLM + optional web search, Google Places, and multiple image sources).

Architecture

Results

50+ destinations

Structured catalog populated via AI pipeline

Multi-source images

Wikimedia, Pexels, Unsplash with attribution handled

SEO-ready pages

Sitemap, robots.txt, ISR caching, and structured data

Publish gating

Admin can see everything; public sees only curated content

How this maps to client use cases

  • Content-heavy sites that need structured catalog generation with a strict “draft vs published” boundary.
  • Marketing/SEO sites that need crawlable pages with sitemaps and revalidation hooks.
  • Data + automation products that run scheduled enrichment pipelines with async workers and guardrails.