A multi-agent customer support platform built with Amazon Nova, Neo4j, and MCP that delivers verified refund decisions with grounded, explainable reasoning from a policy knowledge graph.
| Demo URL | https://staging.d1vug68j94viep.amplifyapp.com/ |
| Demo Video | YouTube Demo |
No login required. The demo is publicly accessible.
Customer support teams spend 70%+ of their time on repetitive refund/return requests. Each request requires:
- Reading customer emails with attachments
- Cross-referencing order databases
- Consulting return policy documents
- Making consistent decisions
VARA.ai automates this entire workflow using Amazon Nova's advanced reasoning capabilities.
VARA.ai is an end-to-end AI system that:
- Monitors Gmail for incoming refund/return requests
- Classifies emails using Amazon Nova's understanding capabilities
- Extracts order details from email text and invoice attachments (Nova Vision)
- Verifies against database using MCP-connected PostgreSQL
- Adjudicates requests by traversing a policy knowledge graph
- Records decisions with full reasoning transparency
https://staging.d1vug68j94viep.amplifyapp.com/
No login required. The demo is publicly accessible.
-
Open the demo URL — You'll land on the Email Pipeline page
-
Select a scenario from the "Select Demo Scenario" dropdown
-
View the request — Email content and attached invoice displayed on the left panel
-
Click "Process Email Request" to trigger the full AI pipeline
-
Watch the pipeline execute in real-time (~1 minute to complete):
- Email Classification
- Order Extraction (Nova Vision)
- Database Verification
- Policy Adjudication (Deep Reasoning)
- Decision with Explanation
Note: In production, this pipeline runs automatically when a customer sends an email to
[email protected]. The demo uses pre-defined scenarios because processing a real email requires the corresponding order to exist in our database. This website serves as a prototype to demonstrate the fully automated end-to-end pipeline.
- Click "Policy Knowledge Base" in the navigation bar
- Click "Visualize Graph" to view the pre-compiled knowledge graph (Best Buy return policy)
- Interactive controls:
- Scroll to zoom
- Drag to pan
- Click nodes for details
- Upload any company's terms and conditions PDF
- Full compilation takes ~20-25 minutes (based on document length), orchestrated entirely by Amazon Nova Pro
The multi-agent system will automatically:
📄 Parse PDF → Markdown (LlamaParse)
↓
🧠 Design graph schema (Ontology Agent)
↓
📤 Extract entities & relationships (Extraction Agent)
↓
🔍 Validate quality (Critic Agent)
↓
🔨 Build Neo4j graph (Builder Agent)
| Agent | Role | Amazon Nova Feature |
|---|---|---|
| Ontology Agent | Designs knowledge graph schema from policy documents | Deep Reasoning |
| Extraction Agent | Extracts policy rules, conditions, and relationships | Content Extraction |
| Critic Agent | Validates extraction quality and suggests improvements | System Prompting |
| Builder Agent | Constructs Neo4j knowledge graph with Cypher queries | Structured Output |
| Adjudicator Agent | Makes refund decisions with full reasoning | Policy Navigation |
VARA.ai uses FastMCP to create modular, tool-based AI capabilities:
| Tool | Description |
|---|---|
list_orders_by_customer_email |
Fetch order history for a customer email |
find_order_by_invoice_number |
Lookup single order with full details |
find_order_by_order_invoice_id |
Alternative lookup by order_invoice_id |
list_order_items_by_order_invoice_id |
Get line items for an order |
verify_from_email_matches_customer |
Check if email exists in customers table |
get_customer_orders_with_items |
Deep fetch with order items |
select_order_id |
LLM-assisted order matching |
llm_find_orders |
Generate SQL from natural language |
| Tool | Description |
|---|---|
process_invoice |
Decode base64 PDF, parse text, and save to file |
| Tool | Description |
|---|---|
analyze_defect_image |
Analyze product defect images using Nova Vision |
Policy knowledge graph operations for storing and querying return policies.
| Function | Description |
|---|---|
check_neo4j_connection |
Test database connectivity |
get_graph_schema |
Retrieve node labels and relationships |
get_graph_statistics |
Node/relationship counts |
execute_cypher_query |
Run read-only Cypher queries |
execute_cypher_write |
Run write Cypher (CREATE, MERGE) |
execute_cypher_batch |
Bulk graph construction |
create_node |
Create/merge a node with properties |
create_relationship |
Create relationship between nodes |
create_schema_constraints |
Set up indexes and constraints |
clear_graph |
Delete all data (destructive) |
validate_graph_integrity |
Check for missing citations, orphans |
sample_graph_data |
Get sample nodes for verification |
PDF document parsing using LlamaParse for policy ingestion.
| Function | Description |
|---|---|
parse_all_policy_documents |
Parse all PDFs in directory to combined Markdown |
parse_single_policy_document |
Parse a single PDF document |
|
AI/ML
|
Databases
|
Cloud & Hosting
|
Frameworks
|
Processing
|
VARA_AI_NOVA/
│
├── gmail-event-processor/ # 📧 Email Ingestion Service
│ ├── app.py # FastAPI Pub/Sub endpoint
│ ├── classifier.py # Nova email classification
│ ├── gmail_processor.py # Gmail API integration
│ ├── store_email.py # Storage queue
│ ├── secret_manager.py # Credentials management
│ ├── Dockerfile
│ └── requirements.txt
│
├── mcp_processor/ # ⚙️ Main Processing Service (AWS App Runner)
│ ├── app.py # Tasks endpoint
│ ├── processor.py # MCPProcessor orchestrator
│ ├── Dockerfile
│ └── requirements.txt
│
├── policy_compiler_agents/ # 🤖 Multi-Agent System
│ ├── agent.py # Pipeline orchestrator
│ ├── ontology_agent.py # Graph schema design
│ ├── extraction_agent.py # Entity & relationship extraction
│ ├── critic_agent.py # Quality validation
│ ├── adjuciator_agent.py # Decision making mechanism
│ ├── graph_traversal.py # Policy graph traversal
│ ├── source_retrieval.py # Citation lookup
│ ├── visualize_graph.py # Graph visualization
│ ├── ingestion.py # Document ingestion
│ └── tools.py # Shared utilities
│
├── db_verification/ # 🗄️ MCP Server - Database
│ ├── db_verification_server.py # MCP tools for order lookup
│ ├── db.py # Cloud SQL Postgres connector
│ └── llm_sql_runner.py # Natural language SQL
│
├── doc_server/ # 📄 MCP Server - Document Processing
│ └── mcp_doc_server.py # Invoice PDF parsing
│
├── defect_analyzer/ # 🔍 MCP Server - Defect Analysis
│ └── mcp_server.py # Nova Vision defect analysis
│
├── neo4j_graph_engine/ # 🔷 Neo4j Graph Operations
│ ├── mcp_server.py # Graph query functions
│ └── db.py # Neo4j async driver
│
├── policy_engine/ # 📚 Policy Document Parser
│ └── mcp_server.py # LlamaParse integration
│
├── knowledge_base_server/ # 🌐 Policy Compiler Web Service (AWS App Runner)
│ ├── main.py # FastAPI server with SSE
│ ├── compiler_service.py # Compilation orchestration
│ └── static/ # Web UI assets
│
├── vara-ai-frontend/ # 🖥️ Web Dashboard UI (AWS Amplify)
│ └── public/ # HTML/CSS/JS frontend files
│
├── bedrock_client.py # ✨ Shared Amazon Nova API Handler
├── mcp_client.py # 🧪 Active MCP client routing
├── requirements.txt # Python dependencies
├── Dockerfile # Container root base
└── README.md # Project documentation
- Python 3.11+
- AWS Credentials / Nova Access tokens
- Neo4j Aura instance
- Google Cloud account with enabled APIs
- LlamaParse API key
# Clone the repository
git clone https://github.com/gagan0116/vara-ai.git
# Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txtCreate a .env file in the project root:
# Amazon Nova Models
AWS_REGION=us-east-1
# Set this for Native Nova API access:
AWS_BEARER_TOKEN_BEDROCK="your_api_token"
NOVA_MODEL_PRO=us.amazon.nova-pro-v1:0
NOVA_MODEL_LITE=us.amazon.nova-lite-v1:0
# Neo4j Aura
NEO4J_URI=neo4j+s://your-instance.databases.neo4j.io
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_neo4j_password
# Cloud SQL (PostgreSQL)
CLOUD_INSTANCE=project:region:instance
CLOUD_DB_NAME=refunds_db
CLOUD_DB_USER=postgres
CLOUD_DB_PASS=your_db_password
# LlamaParse
LLAMA_CLOUD_API_KEY=your_llamaparse_key
# Google Cloud Storage
GCS_BUCKET_NAME=your_bucket_name# Run the Main MCP Testing client
python mcp_client.py
# Run the Policy Compiler web service
cd knowledge_base_server
python main.py| Name | GitHub |
|---|---|
| Gagan Vadlamudi | @gagan0116 |
| Naga Sai Satish Amara |