Conversational BI

HeliosDB Full plans conversational business intelligence for analysts who do not write SQL: multi-turn questions in plain language that the database translates into SQL with the schema in context, runs and explains. Conversational BI and natural-language-to-SQL are on the roadmap and not in the current release; today the HTTP gateway serves chat completions, embeddings, vector stores and agent memory.

Planned: conversational BI and natural-language-to-SQL are on the roadmap. Read the documentation.

Problem Being Solved

Root Cause: The SQL barrier excludes most knowledge workers:

  • SQL Expertise Required: Complex syntax, joins, aggregations
  • Schema Knowledge Needed: Table names, column types, relationships
  • IT Backlog: Weeks to get ad-hoc reports
  • Self-Service Failed: BI tools still require training

HeliosDB Solution: Native Conversational BI

Architecture

HeliosDB Conversational BI Architecture:
┌─────────────────────────────────────────────────────────────┐
│                   Natural Language Query                     │
│  "Show me top 10 customers by revenue last quarter"         │
└────────────────────────────┬────────────────────────────────┘
                             │
                             ▼
┌─────────────────────────────────────────────────────────────┐
│              Intent & Entity Recognition                     │
│  Intent: aggregate_query                                    │
│  Entities: customers, revenue, last_quarter, top_10         │
│  Confidence: 0.96                                           │
└────────────────────────────┬────────────────────────────────┘
                             │
                             ▼
┌─────────────────────────────────────────────────────────────┐
│              Schema-Aware SQL Generation                     │
│  ┌─────────────────────────────────────────────────────┐    │
│  │ Schema Context:                                      │    │
│  │ ├── customers table (id, name, segment)             │    │
│  │ ├── orders table (customer_id, amount, order_date)  │    │
│  │ ├── FK: orders.customer_id → customers.id           │    │
│  │ └── 'revenue' maps to SUM(orders.amount)            │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                              │
│  Generated SQL:                                             │
│  SELECT c.name, SUM(o.amount) as revenue                    │
│  FROM customers c                                           │
│  JOIN orders o ON c.id = o.customer_id                      │
│  WHERE o.order_date >= '2024-07-01'                         │
│    AND o.order_date < '2024-10-01'                          │
│  GROUP BY c.id, c.name                                      │
│  ORDER BY revenue DESC                                      │
│  LIMIT 10                                                   │
└────────────────────────────┬────────────────────────────────┘
                             │
                             ▼
┌─────────────────────────────────────────────────────────────┐
│              Query Validation & Execution                    │
│  - Security check: User has access to tables                │
│  - Performance check: Query cost acceptable                 │
│  - Execute and return results with explanation              │
└─────────────────────────────────────────────────────────────┘

Natural Language SQL Interface

-- Enable conversational mode
\chat on

-- Natural language query
User: "Show me top 10 customers by revenue last quarter"

HeliosDB: I'll query the orders and customers tables to find the top 10 customers
by total revenue in Q3 2024.

Generated SQL:
SELECT c.name, SUM(o.amount) as revenue
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE o.order_date >= '2024-07-01' AND o.order_date < '2024-10-01'
GROUP BY c.id, c.name
ORDER BY revenue DESC
LIMIT 10;

| name              | revenue     |
|-------------------|-------------|
| ...               | ...         |

User: "How does that compare to the previous quarter?"

HeliosDB: I'll add Q2 2024 data to compare with Q3.

Generated SQL:
WITH q3 AS (...), q2 AS (...)
SELECT
    c.name,
    q3.revenue as q3_revenue,
    q2.revenue as q2_revenue,
    ROUND((q3.revenue - q2.revenue) / q2.revenue * 100, 1) as growth_pct
FROM q3 JOIN q2 ON q3.customer_id = q2.customer_id
ORDER BY q3.revenue DESC LIMIT 10;

User: "Which of those are in the enterprise segment?"

HeliosDB: Filtering to enterprise segment customers only.
-- Remembers context from previous query

Conversational Sessions

-- Create conversation session
CREATE CONVERSATION SESSION sales_analysis
WITH (
    default_schema = 'public',
    time_context = 'fiscal_year',
    user_role = 'sales_analyst',
    max_rows = 1000
);

-- Multi-turn conversation with context
ASK 'What were our total sales last month?';

ASK 'Break that down by product category';
-- Remembers "last month" context
-- Returns: breakdown by category

ASK 'Which category grew the most compared to the month before?';
-- Remembers time range, adds comparison

ASK 'Show me the top 5 products in that category';
-- Remembers Electronics category
-- Returns: top 5 electronic products

ASK 'Add their inventory status';
-- Extends previous query with inventory join
-- Returns: products with inventory levels

-- Export conversation to report
EXPORT CONVERSATION TO '/reports/sales_analysis_2024_11.md';

Query Explanation & Confidence

-- Ask with explanation
ASK WITH EXPLANATION 'Average order value by customer segment this year';

Response:
┌─────────────────────────────────────────────────────────────┐
│ INTERPRETATION                                               │
│ You want to see the average order value (total amount per   │
│ order) grouped by customer segment for the current year.    │
│                                                              │
│ CONFIDENCE: 94%                                              │
│                                                              │
│ ASSUMPTIONS:                                                 │
│ - "This year" = 2024-01-01 to now                           │
│ - "Order value" = orders.amount column                      │
│ - "Segment" = customers.segment column                      │
│                                                              │
│ ALTERNATIVE INTERPRETATIONS:                                 │
│ 1. Average of all items per order (if you meant line items) │
│ 2. Median order value (if you want central tendency)        │
│                                                              │
│ Would you like to proceed or clarify?                       │
└─────────────────────────────────────────────────────────────┘

User: "Proceed"

Generated SQL:
SELECT
    c.segment,
    AVG(o.amount) as avg_order_value,
    COUNT(o.id) as order_count
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE o.order_date >= '2024-01-01'
GROUP BY c.segment
ORDER BY avg_order_value DESC;

| segment    | avg_order_value | order_count |
|------------|-----------------|-------------|

Concrete Examples

Example 1: Sales Operations

Company Profile: B2B SaaS with 500 sales reps

Challenge: Sales reps need pipeline data without SQL knowledge

Example 2: Marketing Analytics

Company Profile: E-commerce with marketing team of 20

Challenge: Marketers need campaign performance without technical help

Example 3: Executive Dashboards

Company Profile: Public company with C-suite needing metrics

Challenge: Executives need instant access to company metrics

Example 4: Product Analytics

Company Profile: Mobile app with product team

Challenge: PMs need user behavior insights without SQL


Conclusion

HeliosDB's native Conversational BI democratizes data access for all knowledge workers. Organizations can:

  • Accelerate Decisions: Minutes instead of days for insights

Performance depends on workload and hardware. Published figures are measured on representative fixtures; see the benchmarks page and reproduce them on your own workload.