A multi-tenant Business Intelligence artifact that puts SME business KPIs and digital signals on the same view, quantifies their relationship, and surfaces prioritised recommendations through an optional LLM-mediated fusion layer.
This repository is the public reference implementation of a research artifact described in a manuscript currently under pre-publication review. The corresponding production deployment runs at the URL declared on the repository's homepage.
- Run the demo locally with synthetic data, no Google Cloud credentials needed.
- Read the architecture of a production multi-tenant BI artifact: see ARQUITECTURA.md.
- Cite the artifact in your own work: see CITATION.cff.
- Adapt one of the connectors to a different SaaS source by following the contract in
visio/connectors/.
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
streamlit run visio/app.pyThe demo opens in your browser, lists three synthetic tenants, and renders the methodological page template (visio/pages/tenant_template.py) for any of them. No external API is contacted.
- Install the cloud extras:
pip install -r requirements-cloud.txt. - Provide credentials (one of):
GOOGLE_APPLICATION_CREDENTIALSpointing at a service-account JSON, orgcloud auth application-default loginif you prefer ADC.
- Edit
visio/tenants/tenants.example.tomlto declare your real GA4 property ID, Search Console site, Ads customer ID, and BigQuery dataset. streamlit run visio/app.pyagain.
The same pages now read live data instead of synthetic series. The L3 LLM layer remains a stub; bring your own model by replacing visio/llm/stub.py.
visio-public/
├── ARQUITECTURA.md Architecture, OSS shares, replicability table
├── CITATION.cff Cite the artifact / paper
├── LICENSE Apache-2.0
├── README.md This file
├── requirements.txt Demo dependencies (synthetic only)
├── requirements-cloud.txt Optional Google Cloud connectors
└── visio/
├── app.py Streamlit entry point
├── auth.py Email-based tenant routing (no secrets)
├── widgets/ Reusable, sector-agnostic widgets
│ ├── ga4.py
│ ├── search_console.py
│ ├── google_ads.py
│ ├── finops.py
│ └── kpi_card.py
├── connectors/ Source readers (each one swappable)
│ ├── ga4.py
│ ├── search_console.py
│ ├── google_ads.py
│ └── bigquery.py
├── llm/
│ └── stub.py Deterministic L3 stub
├── synthetic/
│ └── generator.py Realistic, non-attributable mock series
├── tenants/
│ └── tenants.example.toml Tenant declaration shape
└── pages/
└── tenant_template.py The single sanitised page template
The production deployment uses the same visio/widgets/ and visio/connectors/ packages, and adds one private page per tenant. Tenant pages and the Core API are not part of this public release.
Research artifact. The accompanying manuscript introduces the artifact methodologically; this repository is the reference implementation cited in that manuscript. The research line continues with empirical case studies on Iberian SMEs.
The 20-60-20 collaboration framework that organises the artifact's human-AI split has prior validations in two adjacent domains; see ARQUITECTURA.md §"The 20-60-20 collaboration model" for the cite chain.
The artifact is classified as limited risk under the EU AI Act (Reg. UE 2024/1689). Its design follows the seven principles of the EU AI HLEG (2019), the controls of ISO/IEC 42001:2023 are scoped as the management framework, and every recommendation produced by the LLM layer is logged with the assembled prompt, the model identifier, and the operator who acted on it. See ARQUITECTURA.md for the mapping.
Issue reports, replication studies, and connector contributions are welcome. The artifact is research code: it values clarity over generality, and connector implementations are deliberately minimal so that a reviewer can audit each one in a single sitting.
Full acknowledgements will be published upon manuscript acceptance.
A citation block (BibTeX / CFF) will be added here upon manuscript acceptance. The machine-readable CITATION.cff is the source of truth meanwhile.
Apache License 2.0. See LICENSE.