An open-source alternative to Gemini Deep Research, built to generate AI-powered reports from web search results with precision and efficiency.
This app functions in three key steps:
- Search Results Retrieval: Using the Bing Search API, the app fetches comprehensive search results for the specified search term.
- Content Extraction: Leveraging JinaAI, it retrieves and processes the contents of the selected search results, ensuring accurate and relevant information.
- Report Generation: With the curated search results and extracted content, the app generates a detailed report tailored to your custom prompts, providing insightful and synthesized output.
Open Deep Research combines powerful tools to streamline research and report creation in a user-friendly, open-source platform. You can customize the app to your needs (change the model, prompt, update rate limits and number of results both fetched and selected etc.)
- 🔍 Web search with time filtering
- 📄 Content extraction from web pages
- 🤖 AI-powered report generation
- 📊 Multiple export formats (PDF, Word, Text)
- ⚡ Rate limiting for stability
- 📱 Responsive design
Try it out at: Open Deep Research
The app's settings can be customized through the configuration file at lib/config.ts
. Here are the key parameters you can adjust:
Control rate limiting and the number of requests allowed per minute for different operations:
rateLimits: {
enabled: true, // Enable/disable rate limiting (set to false to skip Redis setup)
search: 5, // Search requests per minute
contentFetch: 20, // Content fetch requests per minute
reportGeneration: 5, // Report generation requests per minute
}
Note: If you set enabled: false
, you can run the application without setting up Redis. This is useful for local development or when you don't need rate limiting.
Customize the search behavior:
search: {
resultsPerPage: 10, // Number of search results to fetch
maxSelectableResults: 3, // Maximum results users can select for reports
safeSearch: 'Moderate', // SafeSearch setting ('Off', 'Moderate', 'Strict')
market: 'en-US', // Search market/region
}
To modify these settings, update the values in lib/config.ts
. The changes will take effect after restarting the development server.
- Node.js 18+
- npm, yarn, pnpm, or bun
- Clone the repository:
git clone https://github.com/btahir/open-deep-research
cd open-deep-research
- Install dependencies:
npm install
# or
yarn install
# or
pnpm install
# or
bun install
- Create a
.env.local
file in the root directory:
# Azure Bing Search API key (required for web search)
AZURE_SUB_KEY=your_azure_subscription_key
# Google Gemini Pro API key (required for AI report generation)
GEMINI_API_KEY=your_gemini_api_key
# Upstash Redis (required for rate limiting)
UPSTASH_REDIS_REST_URL=your_upstash_redis_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_redis_token
- Start the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
- Open http://localhost:3000 in your browser.
- Go to Azure Portal
- Create a Bing Search resource
- Get the subscription key from "Keys and Endpoint"
- Visit Google AI Studio
- Create an API key
- Copy the API key
- Sign up at Upstash
- Create a new Redis database
- Copy the REST URL and REST Token
- Next.js 15 - React framework
- TypeScript - Type safety
- Tailwind CSS - Styling
- shadcn/ui - UI components
- Google Gemini - AI model
- JinaAI - Content extraction
- Azure Bing Search - Web search
- Upstash Redis - Rate limiting
- jsPDF & docx - Document generation
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
- Inspired by Google's Gemini Deep Research feature
- Built with amazing open source tools and APIs
If you're interested in following all the random projects I'm working on, you can find me on Twitter: