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.