A Go application that monitors Reddit for freelance opportunities and sends notifications via Telegram. This tool automatically scans multiple subreddits for relevant job posts and filters them based on your criteria.
- Monitors multiple Reddit subreddits for freelance opportunities
- Intelligent filtering based on keywords, technologies, and quality indicators
- Categorizes opportunities by type (Full-Stack, Frontend, Backend, etc.)
- Sends rich notifications to Telegram with priority levels
- Tracks statistics and seen posts to avoid duplicates
- Optional Google Sheets integration to log opportunities
- Configurable filtering and notification settings
Before running this application, you'll need:
-
Reddit API Credentials:
- Create a Reddit app at https://www.reddit.com/prefs/apps
- Note your
client_idandclient_secret
-
Telegram Bot Token:
- Create a Telegram bot by messaging @BotFather
- Get your bot token and the chat ID where you want to receive notifications
-
(Optional) Google Sheets Credentials:
- Set up Google Sheets API and create service account credentials
- Share the target spreadsheet with your service account email
# Clone the repository
git clone <repository-url>
cd reddit-job-notifier
# Install dependencies
go mod tidy
# Build the application
go build -o reddit-monitor cmd/reddit-monitor/main.go# Build the Docker image
docker build -t reddit-monitor .
# Run the container
docker run -d --env-file .env reddit-monitorCopy the example environment file and update with your credentials:
cp .env.example .envConfigure the following environment variables in your .env file:
REDDIT_CLIENT_ID: Your Reddit app client IDREDDIT_CLIENT_SECRET: Your Reddit app client secretREDDIT_USER_AGENT: User agent string for API requests
TELEGRAM_BOT_TOKEN: Your Telegram bot tokenTELEGRAM_CHAT_ID: Chat ID where notifications should be sent
GOOGLE_SHEETS_ENABLED: Set totrueto enable Google Sheets integrationGOOGLE_SHEET_ID: ID of the Google Sheet to useGOOGLE_SERVICE_ACCOUNT_EMAIL: Service account emailGOOGLE_SERVICE_ACCOUNT_PRIVATE_KEY: Service account private key
MONITORING_INTERVAL: Interval between checks in seconds (default: 900 = 15 minutes)MIN_POST_SCORE: Minimum post score to consider (default: 1)MAX_POSTS_PER_CHECK: Maximum posts to check per subreddit (default: 50)POST_AGE_LIMIT_HOURS: Maximum age of posts to consider in hours (default: 24)
LOG_LEVEL: Logging level (DEBUG, INFO, WARN, ERROR) (default: INFO)ENABLE_NOTIFICATIONS: Whether to send notifications (default: true)
NOTIFICATION_FRESHNESS_MINUTES: Only notify for posts within this time window (default: 15)MAX_COMMENTS_FOR_NOTIFICATION: Only notify for posts with fewer than this many comments (default: 5)
./reddit-monitor./reddit-monitor --once- The application periodically checks configured subreddits for new posts
- Posts are filtered based on:
- Explicit hiring language ("hiring", "looking for", etc.)
- Development-related keywords
- Work type indicators ("freelance", "contract", etc.)
- Quality indicators and negative keywords
- Relevant opportunities are categorized and assigned priority scores
- Notifications are sent to Telegram with detailed information
- Posts are tracked to prevent duplicate notifications
- (Optional) Opportunities are logged to Google Sheets
This project follows standard Go project structure:
reddit-job-notifier/
├── cmd/
│ └── reddit-monitor/
│ └── main.go
├── internal/
│ ├── config/ # Configuration management
│ ├── models/ # Data models
│ ├── reddit/ # Reddit API client
│ ├── filter/ # Post filtering logic
│ ├── telegram/ # Telegram notification client
│ ├── templates/ # Response templates
│ ├── persistence/ # Data persistence
│ ├── sheets/ # Google Sheets integration
│ └── monitor/ # Main application orchestrator
└── data/ # Local data storage (gitignored)
go run cmd/reddit-monitor/main.gogo test ./...- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests if applicable
- Run
go fmtto format code - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Reddit API for providing access to job opportunities
- Telegram for messaging platform
- Google Sheets for optional data logging