Recurio is a free, privacy-focused tool that scans your email for subscription-related messages, extracts structured subscription data using AI, and reminds you about upcoming renewals.
- 🔐 Secure Gmail OAuth integration
- 🤖 AI-powered subscription data extraction (service name, cost, billing frequency, renewal date, etc.)
- 📊 Dashboard displaying all active subscriptions
- ⏰ Reminders for upcoming renewals via email or dashboard notification
- 💰 Free tier available (Google Cloud $300 credits for 90 days) - deployable on Vercel/Render
- Frontend: React + Tailwind CSS (Vercel)
- Backend: FastAPI (Render)
- AI: Groq AI (Llama 3.1/Mixtral/Gemma) - free tier available, falls back to regex extraction if not configured
- Database: SQLite
- Email: Gmail API + OAuth 2.0
- Scheduler: APScheduler for renewal reminders
- Navigate to the backend directory:
cd backend- Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Create a
.envfile in the backend directory:
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GROQ_API_KEY=your_groq_api_key
GROQ_MODEL=llama-3.1-70b-versatile
USE_GROQ_AI=true
SECRET_KEY=your_secret_key_here
DATABASE_URL=sqlite:///./subtrack.dbAI Setup (Choose One):
Option 1: Vertex AI (Gemini) - Recommended for Better Performance
- Get your API key from Google AI Studio
- Add to
.env:USE_VERTEX_AI=true GOOGLE_API_KEY=your_google_api_key_here VERTEX_AI_MODEL=gemini-1.5-flash # or gemini-1.5-pro for better accuracy
- See VERTEX_AI_SETUP.md for detailed setup instructions
Option 2: Groq AI (Free Tier Available)
- Sign up for a free account at Groq Console
- Get your API key from the API Keys page
- Add your API key to
.envasGROQ_API_KEY - Optionally set
GROQ_MODEL(default:llama-3.3-70b-versatile)- Available models:
llama-3.3-70b-versatile,llama-3.1-8b-instant,mixtral-8x7b-32768,gemma2-9b-it
- Available models:
- Set
USE_GROQ_AI=trueto enable AI extraction (default) orfalseto use regex fallback only
Note: The app tries Vertex AI first (if enabled), then Groq AI, then falls back to regex extraction if neither is configured.
- Run the backend:
uvicorn main:app --reload- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Create a
.envfile in the frontend directory:
VITE_API_URL=http://localhost:8000
VITE_GOOGLE_CLIENT_ID=your_google_client_id- Run the frontend:
npm run dev- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable Required APIs:
- Go to "APIs & Services" → "Library"
- Search for "Gmail API" and click "Enable"
- Search for "Google Calendar API" and click "Enable" (required for calendar reminders)
- Create OAuth 2.0 credentials (Web application)
- Add authorized redirect URIs:
http://localhost:5173/auth/callback(for local development)- Your production frontend URL (for deployment)
- Connect your repository to Render
- Set the build command:
pip install -r requirements.txt - Set the start command:
uvicorn main:app --host 0.0.0.0 --port $PORT - Add environment variables in Render dashboard:
GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETHUGGINGFACE_API_KEYSECRET_KEYDATABASE_URL(or use Render's PostgreSQL)ALLOWED_ORIGINS(your frontend URL)REDIRECT_URI(your frontend callback URL, e.g.,https://your-app.vercel.app/auth/callback)
- Connect your repository to Vercel
- Set the root directory to
frontend - Vercel will automatically detect Vite configuration
- Add environment variables in Vercel dashboard:
VITE_API_URL(your backend URL, e.g.,https://your-app.onrender.com)VITE_GOOGLE_CLIENT_ID
MIT