Community
Signal
Without the Noise.

Upload Discord exports. Dedupe, classify, ship to Notion. Built for people drowning in community signal.

Try it live →

Built on

(The problem)
Discord is where your users actually talk. It’s also where that signal goes to die.

0

files ingested in test

0

servers supported

0

char min for LLM eligibility

(Pipeline)

How the pipeline works

01

Upload .txt

Drag and drop Discord export files. One file per channel.

Tinkerer Club - ai - ai-av-generation [1468719053190463638].txt
02

Parse filename

Extract server, category, channel, and discord_channel_id from the filename convention.

Server - Category - Channel [ID].txt
03

Three-pass categorize

Links (rule-based), Popular (reaction_score ≥ 3), Products (GPT-4.1 Mini, batched 20).

categories: ["links", "popular", "products"]
04

Filter + export

Cascading filters, full-text search, then export to Notion, CSV, or JSON.

POST /api/export-notion { messageIds, notionDbId }
(What’s inside)

What you get

Content-hash dedup

Unique index on (server, category, channel, author, timestamp, content_hash). MD5 of content, first 16 chars. No false duplicates even for same-minute messages.

CREATE UNIQUE INDEX ON messages
  (server, category, channel,
   author, timestamp, content_hash);

Auto-loop classification

Loops until all messages are classified. Progress bar, cancel button. GPT-4.1 Mini in batches of 20, 0.5s between batches.

Cookie auth

30-day cookie set on first visit with ?secret=. Edge middleware for cookie check, service role server-side only.

Saved filter presets

Save any combination of filters to localStorage. Pill UI for quick recall. Delete presets you no longer need.

Cross-page select

Gmail-style "Select all N matching" banner. Works across pages — fetches from API when selections span pagination.

Cascade delete

Delete an upload and all its messages go with it. Orphaned messages (uploaded before tracking) can be bulk-deleted from the UI.

(See it running)
discord-export-five.vercel.app

live app preview

Upload

Drop .txt files here

Filters

Server
Category
Channel
Tag

Classification

Done72%
Failed8%
Pending20%
(Under the hood)

Architecture

BrowserNext.js App RouterAPI RoutesServer-side, service roleSupabasePostgres + RLS + FTSOpenAIGPT-4.1 MiniNotionDatabase export
  • Next.js 16 + App Router + TypeScript strict
  • Supabase Postgres with RLS, RPC, FTS
  • GPT-4.1 Mini for product classification
  • Notion API export with retry/backoff
  • Edge middleware for auth
  • Content-hash dedup (MD5, 16 chars)
  • Batched classification (20/batch, 100/request)
  • CSV + JSON + Notion export paths
(Self-host)

Free. Self-hosted. Your data, your keys.

  • Supabase free tier
  • OpenAI pay-as-you-go (~$0.15/1M tokens)
  • Vercel free tier
  • Notion API free
Clone the repo →

Want it built for you?

Need a custom deployment, extra integrations, or help wiring it into your stack — get in touch.

(Questions)

Frequently asked questions