AIGENDA (a.k.a. RoboBill) is a Streamlit web app that uses Google Gemini 1.5 Flash to analyze invoice and receipt images. Upload a photo of any bill, ask a natural-language question ("What's the total?", "List all line items", "Who is the vendor?"), and get an instant, structured answer powered by multimodal AI.
- Multimodal Invoice Analysis -- Upload JPG/PNG images of invoices, receipts, or bills
- Natural Language Queries -- Ask anything about the document in plain English
- Google Gemini 1.5 Flash -- Powered by Google's latest multimodal LLM
- Instant Responses -- Get structured answers in seconds
- Zero Config UI -- Clean Streamlit interface, no frontend code required
- Docker Ready -- Ship anywhere with the included Dockerfile
User Streamlit UI Gemini API
| | |
|-- upload image ----->| |
|-- type question ---->| |
| |-- image + prompt ----->|
| | |-- multimodal LLM
| |<-- structured text ----|
|<-- display answer ---| |
- User uploads an invoice image and types a question via the Streamlit UI
- The app encodes the image and sends it alongside the prompt to Google Gemini 1.5 Flash
- Gemini processes the multimodal input and returns a text response
- The answer is rendered in the Streamlit interface
- Python 3.11+
- A Google AI Studio API key
# Clone the repository
git clone https://github.com/gitswagata1/AIGENDA.git
cd AIGENDA
# Create a virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt# Linux / macOS
export GOOGLE_API_KEY="your-api-key-here"
# Windows (PowerShell)
$env:GOOGLE_API_KEY="your-api-key-here"streamlit run streamlit_app.pyThe app opens at http://localhost:8501. Upload an invoice image and start asking questions.
docker compose up --build| Question | What Gemini Returns |
|---|---|
| "What is the total amount?" | Extracts and returns the total from the invoice |
| "List all line items with prices" | Structured breakdown of every item and cost |
| "Who is the vendor and what's their address?" | Vendor name, address, and contact details |
| "Is there any tax applied? How much?" | Tax breakdown with percentages and amounts |
| "Summarize this invoice in 3 bullet points" | Concise summary of the key invoice details |
AIGENDA/
├── streamlit_app.py # Main application (Streamlit + Gemini)
├── requirements.txt # Production dependencies
├── requirements-dev.txt # Development dependencies (linting, testing)
├── Dockerfile # Container image definition
├── docker-compose.yml # Docker Compose config
├── Makefile # Dev commands (lint, test, clean)
├── .github/
│ ├── workflows/ # CI/CD (lint, CodeQL, release, stale)
│ ├── ISSUE_TEMPLATE/ # Bug report & feature request templates
│ └── PULL_REQUEST_TEMPLATE.md
├── CONTRIBUTING.md
├── CODE_OF_CONDUCT.md
├── SECURITY.md
├── LICENSE # MIT
└── CHANGELOG.md
# Install dev dependencies
pip install -r requirements-dev.txt
# Lint
make lint
# Test
make test
# Clean caches
make clean- Multi-page invoice support -- Handle PDFs with multiple pages
- Expense categorization -- Auto-classify line items (food, travel, supplies)
- Export to CSV/Excel -- Download structured invoice data
- Batch processing -- Upload multiple invoices at once
- Google Calendar integration -- Auto-schedule payment reminders
- Multi-language support -- Analyze invoices in any language
- Invoice templates -- Pre-built prompts for common invoice types
See the open issues for community-requested features.
Contributions are welcome! See CONTRIBUTING.md for guidelines.
- Fork the repo
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push and open a Pull Request
Distributed under the MIT License. See LICENSE for details.
- Google Gemini AI for multimodal intelligence
- Streamlit for the rapid UI framework
- Pillow for image processing
Built by Swagata Banerjee