QuickFlow is a web application that enables easy processing of text and images through a sequence of predefined Large Language Model (LLM) tasks. It provides a simple interface for chaining various data extraction and analysis operations.
- Text Processing: Process text input through various LLM-powered tools
- Image Processing: Upload or capture images directly from your smartphone camera
- Tool Chaining: Send results from one tool as input to another tool
- Predefined Tools: Built-in tools for common tasks like:
- Item List extraction
- Link extraction
- IOC (Indicators of Compromise) extraction
- Contact information extraction
- Date extraction
- Named entity extraction
- Text summarization
- Item grouping/categorization
- Docker and Docker Compose
- OpenRouter API key (sign up at openrouter.ai)
- Clone the repository:
git clone <repository-url>
cd QuickFlow
- Set up your environment variables by editing the
docker-compose.yml
file:
environment:
- OPENROUTER_API_KEY=your_api_key_here
- OPENROUTER_MODEL=google/gemma-3-27b-it:free
- Build and run the application:
docker-compose up --build
- Access the application at
http://localhost:5000
- Install Python dependencies:
pip install flask requests werkzeug
- Set environment variables:
export OPENROUTER_API_KEY=your_api_key_here
export OPENROUTER_MODEL=google/gemma-3-27b-it:free
- Run the application:
python app.py
- Select a Tool: Choose from the available processing tools on the main page
- Input Data:
- Enter text in the textarea, or
- Upload an image file, or
- Take a photo directly (on mobile devices)
- Process: Click the Submit button to process your input
- Chain Tools: Use the result as input for another tool by clicking on the tool buttons below the result
QuickFlow is optimized for mobile devices:
- Use the camera capture feature to take photos directly
- Responsive design works well on smartphones and tablets
- Touch-friendly interface for easy navigation
- Item List: Extracts a list of items from text or images
- Group Items: Categorizes items into logical groups
- Extract Links: Finds and extracts URLs and hyperlinks
- Extract IOCs: Identifies security indicators like IP addresses, domains, hashes
- Extract Contact Info: Finds names, emails, phone numbers
- Extract Dates: Identifies and extracts date information
- Extract Entities: Finds named entities (people, organizations, locations)
- Summarize Text: Creates concise summaries of longer text
GET /
- Serves the main web interfaceGET /tools.json
- Returns the available tools configurationPOST /process
- Processes text or image input through the selected tool
You can add custom tools by editing the tools.json
file:
{
"name": "Your Tool Name",
"description": "Description of what your tool does",
"prompt": "Your prompt template with {input} placeholder",
"structured": true
}
OPENROUTER_API_KEY
: Your OpenRouter API key (required)OPENROUTER_MODEL
: The LLM model to use (default: google/gemma-3-27b-it:free)
- Frontend: React-based SPA with Tailwind CSS
- Backend: Flask web server
- LLM Integration: OpenRouter API for model access
- Image Processing: Base64 encoding for image data
QuickFlow/
├── app.py # Flask backend application
├── index.html # Frontend React application
├── tools.json # Tool definitions and prompts
├── Dockerfile # Docker container configuration
├── docker-compose.yml # Docker Compose setup
└── README.md # This file
- Enable debug mode by setting
FLASK_ENV=development
- Use volume mounting in docker-compose for live code reloading
- Check the console logs for debugging information
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT
For issues and questions, please create an issue on the repository.