ERPWhisperer
05 · ERP & Enterprise
FrappeERPNextNL2QueryPythonLLM

ERPWhisperer

Talk to your ERP in plain English. "Show invoices from Q3 where payment was late and client is in Lahore." It translates, runs the query and shows results. No filters, no dropdowns.

Status
Building
Platform
Frappe / ERPNext
Method
NL → Frappe ORM
Access
Plugin / API
The Problem

Your ERP knows everything.
Nobody can ask it anything.

ERPs store the operational truth of a business — invoices, inventory, payroll, client history, supplier relationships. But to extract anything useful from them, you need to know the data model, the filter system, the report builder, or have a developer write a query for you.

The people who most need the data — business owners, operations managers, finance teams — are exactly the people who can't get it. ERPWhisperer removes this bottleneck entirely. Ask in plain English. Get the answer.

ERPWhisperer · Natural Language to Frappe ORM
You say
Show all unpaid invoices from Q3 2024 where the customer is from Lahore and the amount is above 50,000
Generated query
frappe.get_list("Sales Invoice",
  filters=[
    ["status", "=", "Unpaid"],
    ["posting_date", ">=", "2024-07-01"],
    ["posting_date", "<=", "2024-09-30"],
    ["customer_city", "=", "Lahore"],
    ["grand_total", ">", 50000]
  ]
)
You say
Which supplier has caused the most purchase order delays in the last 6 months?
Generated query
frappe.db.sql("""
  SELECT supplier, COUNT(*) as delays
  FROM `tabPurchase Order`
  WHERE schedule_date < delivery_date
  AND creation >= %s
  GROUP BY supplier
  ORDER BY delays DESC
  LIMIT 1
"""
, [six_months_ago])
Features

What ERPWhisperer does

🗣️
Natural Language Queries
Ask questions in plain English or Urdu. The system translates to Frappe ORM or raw SQL, executes, and returns formatted results.
🧠
Schema-Aware Translation
Trained on the Frappe/ERPNext data model. Knows the difference between a Sales Invoice and a Payment Entry and how they relate.
📊
Automatic Visualisation
Results are automatically presented as the right format — table, bar chart, timeline — based on the nature of the data returned.
🔒
Permission-Aware
Respects Frappe's role-based access control. Users only see data they have permission to see — the AI doesn't bypass security.
💾
Saved Queries
Frequently asked questions become one-click reports. "This month's late invoices" becomes a permanent dashboard button for any non-technical user.
🔌
Frappe App Plugin
Ships as a native Frappe application. Install it into any ERPNext instance with standard bench commands. No custom infrastructure required.
Stack

How it's built

🏗️
Frappe
App Framework
🤖
LLM API
NL Translation
🐍
Python
Core Logic
🗄️
MariaDB
ERP Database
Redis
Query Cache
🎨
Vue.js
Frappe UI
📊
Chart.js
Visualisation
🔐
RBAC Layer
Permissions

Currently in development

Schema mapping complete · NL→ORM translation at 81% accuracy · Building Frappe app scaffold

← Uncanny Valley of Text Next: The Empathy Compiler →