MATIH Platform is in active MVP development. Documentation reflects current implementation status.
1. Introduction
BI & Dashboards

Business Intelligence and Dashboards

Production - bi-service, render-service, semantic-layer -- Dashboard CRUD, widgets, semantic metrics

The Business Intelligence pillar of the MATIH Platform provides a complete dashboard and reporting system that integrates deeply with the conversational analytics layer and the data governance framework. Unlike standalone BI tools, MATIH's BI capabilities are built on top of the semantic layer, ensuring that metrics are consistent across every dashboard, every query, and every conversational response.


1.1Dashboard Service

The bi-service (Java, port 8084) manages the complete lifecycle of dashboards and reports:

CapabilityDescriptionImplementation
Dashboard CRUDCreate, read, update, and delete dashboards with full version historyPostgreSQL-backed with JSONB for layout storage
Widget systemComposable widgets with drag-and-drop layout on a responsive gridChart, table, KPI card, text, filter, and image widgets
Real-time previewLive preview of widget changes with instant data refreshWebSocket-based updates from bi-service to BI Workbench
Sharing and embeddingShare via URL, embed in external applications via iframe, or exportToken-scoped sharing with configurable access levels
VersioningEvery dashboard save creates a version; rollback to any previous versionImmutable version chain stored in PostgreSQL
Folders and tagsOrganize dashboards into folders with free-form tags for discoveryHierarchical folder structure with tag-based search

Widget Types

The BI Workbench supports a rich set of widget types, each configurable through a visual editor:

Widget TypeDescriptionData Requirements
Bar ChartHorizontal and vertical bars, grouped or stackedCategorical dimension + numeric measure
Line ChartTime series or continuous data with multiple seriesTime/continuous dimension + numeric measure(s)
Pie/Donut ChartProportion visualization with interactive segmentsCategorical dimension + numeric measure
Scatter PlotTwo-variable correlation with optional color/size encodingTwo numeric measures + optional categorical
Area ChartStacked or overlapping areas for cumulative trendsTime dimension + numeric measure(s)
Heat MapTwo-dimensional intensity visualizationTwo categorical dimensions + numeric measure
Geographic MapChoropleth or point maps with geospatial dataGeographic dimension + numeric measure
KPI CardSingle metric display with trend indicator and sparklineNumeric measure with optional comparison period
TableSortable, paginated data table with conditional formattingAny combination of dimensions and measures
Text BlockRich text annotations with Markdown supportNone (static content)
Filter ControlDate range, dropdown, multi-select, or search filterDimension values from connected data source

Cross-Filtering

Dashboards support cross-filtering: clicking a data point in one widget filters all other widgets in the same dashboard. This interaction model enables exploratory analysis without writing queries:

Click "Electronics" in Category Bar Chart
  -> Revenue Line Chart filters to Electronics only
  -> Regional Map highlights Electronics revenue by region
  -> KPI Card updates to show Electronics-specific metrics
  -> Table filters to Electronics rows

Cross-filtering is implemented via a shared filter context in the BI Workbench frontend (Zustand store) that propagates filter changes to all connected widgets.


1.2Semantic Layer

The semantic-layer service (Java, port 8086) provides a business-friendly abstraction over raw data schemas. It is the foundation for consistent metric definitions across the entire platform.

Metrics Definitions

A semantic metric defines how a business concept maps to a SQL computation:

Metric: "Revenue"
  SQL: SUM(order_total) WHERE order_status = 'completed'
  Granularity: daily, weekly, monthly, quarterly, yearly
  Dimensions: product_category, region, customer_segment, channel
  Filters: Exclude returns, exclude internal orders
  Owner: Finance team
  Data Quality Threshold: 95% completeness required

Metrics defined in the semantic layer are:

  • Reusable -- The same metric definition powers dashboards, conversational queries, and API responses
  • Consistent -- All consumers see the same computation, eliminating "my numbers don't match" conversations
  • Governed -- Metric definitions require approval to change, with full version history
  • Quality-aware -- Each metric references data quality scores, and consumers are warned when quality drops below thresholds

Dimension Hierarchies

Dimension hierarchies define drill-down paths for interactive exploration:

HierarchyLevelsExample Drill Path
TimeYear > Quarter > Month > Week > Day2025 > Q4 > December > Week 52 > Dec 28
GeographyCountry > State > City > StoreUS > California > San Francisco > Store #42
ProductDivision > Category > Subcategory > SKUConsumer Electronics > Phones > Smartphones > iPhone 16
OrganizationBusiness Unit > Department > TeamRetail > Sales > West Region Team

Row-Level and Column-Level Security

The semantic layer enforces access policies that apply regardless of how data is accessed:

Security TypeMechanismExample
Row-level security (RLS)Filter predicate appended to all queries based on user attributesRegional manager sees only WHERE region = user.region
Column maskingSensitive columns replaced with masked values based on access levelSSN appears as ***-**-1234 for non-privileged users
Metric visibilityEntire metrics hidden from users without specific permissionsCost metrics visible only to Finance role

1.3Render Service

The render-service (Node.js, port 8098) handles server-side rendering of visualizations and documents:

CapabilityTechnologyOutput Formats
Chart renderingPuppeteer + ECharts server-sideSVG, PNG (high-DPI support)
PDF generationPuppeteer headless ChromeMulti-page PDF with cover page, table of contents
Thumbnail generationSharp image processing300x200 PNG thumbnails for dashboard listings
Scheduled reportsCron-based triggers via bi-servicePDF or PNG attachments delivered via notification-service
Email embeddingInline chart images for email reportsPNG with alt text for accessibility

Scheduled Reports

The bi-service can schedule automated report generation and distribution:

  1. Schedule definition -- Cron expression (e.g., "every Monday at 8:00 AM") configured per dashboard
  2. Render trigger -- bi-service calls render-service to generate PDF/PNG of the dashboard
  3. Distribution -- notification-service delivers the rendered report via email, Slack, or Microsoft Teams
  4. Recipient management -- Per-dashboard recipient lists with tenant-scoped access control

1.4Dashboard-Conversation Integration

A unique capability of MATIH is the seamless integration between dashboards and conversational analytics:

IntegrationDirectionUser Experience
Pin to dashboardConversation -> DashboardUser pins a chart generated via conversation directly to a dashboard
Ask about dashboardDashboard -> ConversationUser clicks "Ask about this" on a widget to start a conversational exploration
Dashboard narrationDashboard -> AIAI generates a natural language summary of a dashboard's key findings
Anomaly highlightingAI -> DashboardAnalysis Agent flags statistical anomalies and annotates dashboard widgets

This integration means that dashboards are not static artifacts. They are living documents that can be explored, questioned, and enriched through conversation.


1.5Collaboration Features

FeatureDescription
CommentsThread-based comments on dashboards and individual widgets
AnnotationsDate-based annotations (e.g., "Product launch") visible on time-series charts
Sharing levelsView, Edit, Admin permissions per dashboard with inheritance from folders
Change notificationsSubscribers notified when a dashboard is updated or when data changes significantly
Usage analyticsTrack dashboard views, most-viewed widgets, and user engagement metrics
FavoritesUsers can star frequently accessed dashboards for quick access

Deep Dive References