May 5, 2026

Densly: AI-Powered Daily Digest

A full-stack newsletter platform that aggregates newsletters, YouTube channels, and podcasts into a single AI-summarized digest email delivered once a day.

FastAPINext.jsPythonPostgreSQLCeleryRedisAnthropic ClaudeSendGridClerkSupabaseVercelRailway
Densly: AI-Powered Daily Digest cover image

Overview

Densly is a full-stack content digest platform that replaces inbox clutter with one clean email per day.

Users subscribe to newsletters, YouTube channels, and podcasts through a source directory. Every day at their configured send time, Densly fetches everything they're subscribed to, summarizes it with Claude, and delivers a single digest email via SendGrid. No more tab-switching or half-read newsletters — just one email with everything that matters, already distilled.

The system is built as a clean MVP with a hard separation between the Next.js frontend and the FastAPI backend, deployed independently on Vercel and Railway.


Densly source page


What I built

  • Designed and built the full backend: FastAPI + SQLAlchemy (async) + Celery + Redis + PostgreSQL via Supabase, handling user subscriptions, content ingestion, digest scheduling, and email delivery.
  • Built an inbound newsletter webhook pipeline that writes incoming emails to Redis and reads them at digest time, keeping ingestion decoupled from delivery.
  • Implemented Celery Beat scheduling that polls every 60 seconds to check which users are due for a digest based on their timezone and configured send time, defaulting to 7am if unset.
  • Integrated Anthropic Claude to summarize each user's daily content pull into a single coherent digest.
  • Wired SendGrid for digest delivery with per-user send time configuration.
  • Built the Next.js 14 App Router frontend with Tailwind CSS, including source configuration, digest schedule settings, and a newsletter discovery directory.
  • Implemented auth with Clerk: JWTs issued on the frontend, verified server-side in the Python backend.
  • Deployed the frontend to Vercel and the backend + Celery workers to Railway.

Outcome

  • Delivered a working end-to-end MVP: users subscribe to sources, Claude summarizes their daily content, and a single digest email lands at their chosen time.
  • The inbound webhook + Redis architecture keeps newsletter ingestion async and decoupled from the digest delivery pipeline.
  • The Celery Beat polling loop handles per-user timezone-aware scheduling without requiring a per-user cron job.
  • Source directory gives users a structured way to discover and add new newsletters, channels, and podcasts without manual configuration.