RedoraAI is an open-source, AI-powered lead generation platform for Reddit.
It automates lead discovery, monitoring, and engagement — helping you find and connect with high-intent users across Reddit while staying fully compliant with community rules.
🚀 Automate your Reddit lead generation with AI agents that discover relevant subreddits, monitor discussions, and craft authentic, rule-safe engagement messages.
You can explore and use RedoraAI online at https://redoraai.com
- Features
- Architecture Overview
- Tech Stack
- Getting Started
- Integrations
- Deployment
- Account Safety Strategies
- Gotchas & TODOs
- Contributing
- License
- Extract relevant posts for given keywords, subreddits, and product details
- AI-assisted keyword and subreddit suggestions
- Intelligent post scoring using LLMs
- AI-generated DMs and comments tailored to community guidelines
- Scheduled auto-replies on relevant posts
- Auto DMs with configurable timing and frequency
- Email notifications via Resend
- Slack alerts for daily or weekly summaries
- Email Alerts to users when a connected account is revoked or banned
- Onboarding emails
- Subscription expiry and renewal alerts
- Connect multiple Reddit accounts
- Auto-rotation for comments and DMs
- Rotation strategies:
Random— pick a random accountSpecific— use a chosen accountMost Qualified— based on karma, age, etc.
- Daily and weekly engagement summaries
- Simple in-app subscription logic with plan limits
- Manage all AI-generated comments and DMs
- Generate and schedule Reddit posts
- Posts follow subreddit rules and guidelines
This repository contains all components required to run RedoraAI.
.
├── backend/ # Go backend services
│ ├── portal-api/ # Public API layer for frontend (gRPC + Connect)
│ └── spooler/ # Core tracking engine for subreddits and posts
├── frontend/ # Frontend mono-repo
│ ├── portal/ # Web app (Next.js + PNPM)
│ └── packages/ # Shared UI, config, and protobuf packages
└── devel/ # Local development setup scripts
- Portal — API layer for frontend over gRPC/Connect-Web
- Spooler — Tracks relevant posts based on subreddit/keyword pairs every 24h
- Configurable fanout limits, polling intervals, and daily quotas
- Limits no of posts to track
- Limits Max no of relevant posts per day as per the subscribed plan
- Built-in retry logic for failed posts
- Send scheduled posts, DM and Comments
- Powered by LiteLLM (deployed separately)
- Supports OpenAI and Gemini APIs interchangeably
- Handles scoring, comment/DM generation, and keyword/subreddit suggestions
Backend
- Go
1.23+ - PostgreSQL
- Redis
- Docker
- LiteLLM
- Playwright
Frontend
- Node.js
20+ - PNPM
- Next.js / React
- Tailwind CSS / Material UI
Auth & APIs
- Auth0 (passwordless login)
- Reddit OAuth APIs
- Resend (emails)
- Browserless / Steel.dev (CDP automation)
- DODO Payments (subscriptions)
Ensure you have installed:
- Docker
- Go
1.23+ - Node.js
20+ - PNPM
- direnv for environment variables
Start local PostgreSQL and Redis:
./devel/up.shCopy the environment file and configure:
cp .envrc.example .envrc
direnv allowReplace placeholders (<value>) with your actual secrets and keys.
Run tests and start the backend:
cd backend
go test ./...
go build -o redora && ./redora startInitialize the database:
./backend/script/migrate.sh upCreate a new migration:
./backend/script/migrate.sh new <migration_name>Install dependencies:
cd frontend
pnpm installStart the development server:
pnpm dev:portalVisit: http://localhost:3000
You’ll need three components running:
- Docker — for Postgres, Redis, Pub/Sub emulator
./devel/up.sh
- Backend — use reflex for live reload
reflex -c .reflex
- Frontend — Next.js app
cd frontend && pnpm dev:portal
Visit:
http://localhost:8081→ pgweb (Postgres UI)http://localhost:3000→ Redora Portal
Integrations store external service credentials and configuration.
| Type | Description |
|---|---|
| Reddit Cookies | User-provided cookies for Reddit automation |
| Slack Webhook | Notifications and alerts |
| OAuth Tokens | Reddit access/refresh tokens |
Manually insert an integration using tools. Example (CLI):
doota tools integrations slack_webhook create <org-id> '{"channel":"redora-alerts","webhook":"<slack-url>"}'There is no separate admin interface. Users assigned the role PLATFORM_ADMIN can view all organizations and have access to all accounts across the platform.
- Hosted on Railway.app
- GCP used for LLM and Playwright storage
- Secrets managed via GCP KMS
- PostgreSQL and Redis hosted on Railway
To minimize Reddit account bans:
- Age-based limits — automate only with accounts > 2 weeks old
- Gradual scaling — increase activity slowly
- DM-first approach — DMs are safer than comments
- Rule adherence — generate context-aware replies
- Consistent engagement — reply and post regularly
- Occasional posting — maintain activity score
- We currently use OpenAI for keyword/subreddit suggestions during onboarding and LiteLLM for other AI related tasks. Ideally, we should use a single AI provider for all tasks.
- When scoring a post, if the score is >90, we double check it with an advance model. This could be improved by selecting a better default model.
- Comment and DM generation should be moved into separate LLM calls. Right now, scoring, comment and DM generation are all done in a single LLM call.
- We should add the ability to regenerate comments or DMs.
- To avoid getting banned, we only use Reddit accounts that are > 2 weeks old for AI generation. This is a temporary solution and we should come up with a better way to handle account warmup.
We welcome contributions!
- Fork the repo
- Create a new branch:
git checkout -b feature/your-feature
- Commit your changes
- Open a Pull Request
Please follow Go and JS linting rules before submitting.
Released under the MIT License.
© 2025 DoneByAI — building AI tools that work for you.