To try charts in Claude, ChatGPT or another AI client without your own database, add the Acme sample: an online shop’s orders in a
PostgreSQL database Bonnard hosts. Every workspace reads the same database, so it is read-only.
Requirements
A workspace with no connections. The Demo data group shows on the Data page only until the workspace has
one, the sample included, and shows again if you remove them all.
Any member of the workspace can add the sample. Creating an app on it needs the Admin role.
Add the sample
In the console at app.bonnard.ai, select Data.
Under Demo data, select Ecommerce.
DataConnect the databases and integrations your apps read.Available connectionsDatabasesPostgreSQLBigQueryRedshiftClickHouseMotherDuckMySQL / MariaDBMSSQLIntegrationsPostHogDemo dataEcommerceEcommerceSetting up…PostHog
Bonnard adds a database named Acme sample and opens it. There is no connection form and no tenancy step: the
sample uses No tenancy, so everyone who connects to an app on it sees the same rows. To keep each customer to its
own rows, connect your own database instead, as in PostgreSQL.
DataAcme samplepostgresOverviewOverviewTables (4)Tables (4)TenancyTenancySettingsSettingsConnection detailsHostpostgres.railway.internalPort (optional)5432DatabaserailwayUseracme_readerSSL modedisableCA certificate (PEM) (optional)Optional. Paste the CA bundle for verify-ca/verify-full when the DB uses a private CA (e.g. AWS RDS). Not neededfor public-CA hosts.Password (optional)enter secret valueEncrypted at rest.Test connectionDiscard changesSaveUsed by (0 apps)No apps use this connection yet.Search tables…4 tablesSchemaTable ↑TypeRowsColumnsacme_samplecustomerstable605acme_sampleorder_itemstable8005acme_sampleorderstable4005acme_sampleproductstable405TenancySaving…SavedNo tenancyHow each customer's data is separated. The customer's identity resolves to a tenant, andthat tenant resolves to the physical data here.No tenancyMulti-tenant (RLS)Schema per tenantNo customer routing is applied. Every allowed caller sees the data available to this credential.TenancySaving…SavedMulti-tenant (RLS) · tenant key not setHow each customer's data is separated. The customer's identity resolves to a tenant, andthat tenant resolves to the physical data here.No tenancyMulti-tenant (RLS)Schema per tenantRow-levelisolationbytenant,withapolicythatfiltersoncurrent_setting('app.tenant_id').RequiresRLSalreadyenabledonyourtables.SeesetupSQL.Tenant ID lookup (optional)Pick a table and column where your customer IDs are, these will be used for tenant mapping purposes.TableSelect a table…ColumnSelect a column…GeneralSaving…SavedConnection nameAcme sampleDanger zoneDelete this connection. Delete the apps that use it first.Delete connectionDataAcme samplepostgresOverviewOverviewTables (4)Tables (4)TenancyTenancySettingsSettingsConnection detailsHostpostgres.railway.internalPort (optional)5432DatabaserailwayUseracme_readerSSL modedisableCA certificate (PEM) (optional)Optional. Paste the CA bundle for verify-ca/verify-full when the DB uses a private CA (e.g. AWS RDS). Not neededfor public-CA hosts.Password (optional)enter secret valueEncrypted at rest.Test connectionDiscard changesSaveUsed by (0 apps)No apps use this connection yet.Search tables…4 tablesSchemaTable ↑TypeRowsColumnsacme_samplecustomerstable605acme_sampleorder_itemstable8005acme_sampleorderstable4005acme_sampleproductstable405TenancySaving…SavedNo tenancyHow each customer's data is separated. The customer's identity resolves to a tenant, andthat tenant resolves to the physical data here.No tenancyMulti-tenant (RLS)Schema per tenantNo customer routing is applied. Every allowed caller sees the data available to this credential.TenancySaving…SavedMulti-tenant (RLS) · tenant key not setHow each customer's data is separated. The customer's identity resolves to a tenant, andthat tenant resolves to the physical data here.No tenancyMulti-tenant (RLS)Schema per tenantRow-levelisolationbytenant,withapolicythatfiltersoncurrent_setting('app.tenant_id').RequiresRLSalreadyenabledonyourtables.SeesetupSQL.Tenant ID lookup (optional)Pick a table and column where your customer IDs are, these will be used for tenant mapping purposes.TableSelect a table…ColumnSelect a column…GeneralSaving…SavedConnection nameAcme sampleDanger zoneDelete this connection. Delete the apps that use it first.Delete connection
What it contains
The tables are in the acme_sample schema. Foreign keys join orders to customers, and order_items to orders
and products.
Acme sample tables
Table
Rows
Columns
customers
60
id, name, email, country, created_at
products
40
id, sku, name, category, price
orders
400
id, customer_id, status, total, ordered_at
order_items
800
id, order_id, product_id, qty, unit_price
Countries are NL, DE, GB, US and FR. Product categories are Widgets, Gadgets, Tools and Parts.
Order status is paid for 60% of orders, and pending or refunded for 20% each.
Orders are one an hour over 400 hours (about 17 days), so a chart by month has one or two bars.
Customers are named Customer 1 to Customer 60, with emails at example.com.
Get charts in your AI client
Create an app on Acme sample, publish it and install it, as in the
Quickstart. The New app form suggests the name
Acme analytics (sample) and the Internal audience, so only your team can connect.
AppsNew appNameAcme analytics (sample)DatabaseAcme sampleAudienceInternalAll customersSpecific customersOnly members of your organization can call this server. No customer can.Create & configureCancelNameAcme analytics (sample)DatabaseAcme sampleAudienceInternalAll customersSpecific customersOnly members of your organization can call this server. No customer can.Creating...CancelAppsNew appNameAcme analytics (sample)DatabaseAcme sampleAudienceInternalAll customersSpecific customersOnly members of your organization can call this server. No customer can.Create & configureCancelNameAcme analytics (sample)DatabaseAcme sampleAudienceInternalAll customersSpecific customersOnly members of your organization can call this server. No customer can.Creating...Cancel
Then ask your AI client a question, naming the app:
Using Acme analytics, chart revenue by product category.
Revenue by product categoryUsing Acme analytics, chart revenue by productcategory.Used Acme analytics (sample)Explore schemaRender chartRevenueCategory020,00040,00060,00080,000GadgetsPartsToolsWidgetsGadgets brought in the most revenue, 75,463, followed by Parts at 68,547, Tools at29,640, and Widgets at 26,962.Write a message…Revenue by product categoryUsing Acme analytics, chart revenue by productcategory.Used Acme analytics (sample)Explore schemaRender chartRevenueCategory020,00040,00060,00080,000GadgetsPartsToolsWidgetsGadgets brought in the most revenue, 75,463, followed by Parts at 68,547, Tools at29,640, and Widgets at 26,962.Write a message…
Using Acme analytics, which countries have the most paid orders?
Remove the sample
You need the Admin role. Delete the apps on the sample first: while one uses it, Bonnard refuses with
In use by 1 app: Acme analytics (sample). Delete those first.
On the Data page, open Acme sample, then its Settings tab.
Under Danger zone, select Delete connection, then Remove database.
Dashboards and charts built on the sample stay with the removed database. Adding the sample again creates a new
Acme sample, and they do not move to it, although the remove dialog says they run again.