Skip to main content

Chat

What would youlike to know?

Chat lets you ask anything about your business or your data and get back a full report. Pick a question and watch it work.Here is one from finance.

Olivia Mason asks:Why is our refund rate up?

Sovarium answers:

Parcels damaged on the way to EU buyers. The refund rate rose from 10.9% to 12.6% over the last 30 days, 45 refunds against 39, and refunds for damage in transit on EU orders went from 3 to 9. That accounts for the whole rise.

Every other reason moved by one refund or none, and damage refunds in the US and UK held level, at 4 and 2.

Refund rate is refunded orders over paid orders, as your Context Layer defines it. An order refunded in parts counts once, on the day its refund was processed. Price adjustments are goodwill credits, not refunds, so they’re left out, as are test accounts.

View SQLHide SQL
SELECT CASE r.rfnd_rsn_cd WHEN 1 THEN 'Damaged in transit' WHEN 2 THEN 'Not as described' WHEN 3 THEN 'Wrong size' WHEN 4 THEN 'Changed mind' WHEN 5 THEN 'Arrived late' ELSE 'Other' END AS reason, COUNT(DISTINCT r.ord_id) FILTER ( WHERE r.proc_ts >= CURRENT_DATE - 30 ) AS last_30_days, COUNT(DISTINCT r.ord_id) FILTER ( WHERE r.proc_ts < CURRENT_DATE - 30 ) AS prior_30_daysFROM marketplace.rfnd rJOIN marketplace.orn_ord_hdr o ON o.ord_id = r.ord_idLEFT JOIN marketplace.cust_mst c ON c.cust_id = o.cust_idWHERE r.proc_ts >= CURRENT_DATE - 60 AND r.rfnd_rsn_cd <> 6 AND o.src_sys_cd <> 'INTERNAL_TEST' AND NOT COALESCE(c.is_test_acct, false)GROUP BY 1ORDER BY last_30_days DESC;

Marked lines came from the Context Layer

Horizontal bar chart. Refunds by reason, last 30 days against the 30 before: damaged in transit 15 against 9, wrong size 11 and 11, not as described 8 and 8, arrived late 7 against 6, changed mind 4 against 5.

Refunds by reason, as a table
ReasonLast 30 daysPrior 30 daysChange
Damaged in transit159+6
Wrong size11110
Not as described880
Arrived late76+1
Changed mind45−1

Maya Okafor asks:What was our revenue last quarter?

Sovarium answers:

£125.3K in net revenue last quarter, your fiscal Q3: April to June. The US brought in £63.9K, the UK £33.8K and the EU £27.6K.

Revenue grew every month, from £40.1K in April to £43.4K in June. The EU grew fastest, up 14% from April to June, against 7% for the US and 6% for the UK.

Your year ends in September, so last quarter is fiscal Q3. Net revenue is settled payments less refunds, as your Context Layer defines it, counted on the day each order was paid. Dollars and euros are converted to pounds at the rate for each payment’s day, and test orders are left out.

View SQLHide SQL
WITH paid AS ( SELECT DATE_TRUNC('month', o.dt_2)::date AS month, o.ord_rgn_cd AS region, (p.cap_amt - COALESCE(rf.refunded, 0)) * fx.to_gbp AS net_gbp FROM marketplace.orn_ord_hdr o JOIN marketplace.pmt_txn p ON p.ord_id = o.ord_id AND p.pmt_stat_cd = 5 LEFT JOIN ( SELECT ord_id, SUM(rfnd_amt) AS refunded FROM marketplace.rfnd WHERE proc_ts IS NOT NULL GROUP BY ord_id ) rf ON rf.ord_id = o.ord_id CROSS JOIN LATERAL ( SELECT COALESCE( MAX(x.rate) FILTER (WHERE x.ccy_from = o.ord_ccy_cd), 1 ) / MAX(x.rate) FILTER (WHERE x.ccy_from = 'GBP') AS to_gbp FROM lgcy.fx_daily_rate x WHERE x.fx_dt = ( SELECT MAX(fx_dt) FROM lgcy.fx_daily_rate WHERE fx_dt <= o.dt_2::date ) ) fx WHERE o.dt_2 >= DATE '2026-04-01' AND o.dt_2 < DATE '2026-07-01' AND o.src_sys_cd <> 'INTERNAL_TEST')SELECT month, region, SUM(net_gbp) AS net_revenue_gbpFROM paidGROUP BY month, regionORDER BY month, region;

Marked lines came from the Context Layer

Stacked bar chart. Net revenue by month: April £40.1K (US £20.6K, UK £10.9K, EU £8.6K), May £41.8K (US £21.3K, UK £11.3K, EU £9.2K), June £43.4K (US £22.0K, UK £11.6K, EU £9.8K).

Net revenue by month, as a table
MonthUSUKEUTotal
April£20.6K£10.9K£8.6K£40.1K
May£21.3K£11.3K£9.2K£41.8K
June£22.0K£11.6K£9.8K£43.4K

Priya Nair asks:Where are our new customers coming from?

Sovarium answers:

Paid search brought in the most: 71 of 214 new customers in the last 30 days, a third of them. Organic brought 58 and paid social 39.

Email and affiliates added 26 and 20. Paid search and organic together found more than half of all new customers.

A new customer is someone whose first paid order fell in the last 30 days. People are matched by email, so a guest who later signed up counts once, and each is credited to the last channel they came through before that order.

View SQLHide SQL
WITH firsts AS ( SELECT DISTINCT ON (o.cust_email_hash_snap) o.ord_id, o.dt_2 FROM marketplace.orn_ord_hdr o WHERE o.dt_2 IS NOT NULL AND o.src_sys_cd <> 'INTERNAL_TEST' ORDER BY o.cust_email_hash_snap, o.dt_2)SELECT t.chnl_cd AS channel, COUNT(*) AS new_customersFROM firsts fJOIN growth.attr_touch t ON t.order_id = f.ord_id AND t.attr_mdl_cd = 'LAST'WHERE f.dt_2 >= CURRENT_DATE - 30GROUP BY t.chnl_cdORDER BY new_customers DESC;

Marked lines came from the Context Layer

Horizontal bar chart. New customers in the last 30 days by channel: paid search 71, organic 58, paid social 39, email 26, affiliates 20.

New customers by channel, as a table
ChannelNew customers
Paid search71
Organic58
Paid social39
Email26
Affiliates20

Tom Hughes asks:Are EU deliveries getting slower?

Sovarium answers:

Yes, this week. EU on-time delivery fell to 82.4%, from 93.2% last week, after seven weeks between 92.9% and 94.0%. Late EU parcels spent 4.2 days in transit on average, against 2.6.

The US and UK held above 93%, at 95.1% and 93.8%.

On time means delivered by the estimated date the buyer was shown, read from the carrier’s delivery scan rather than the shipment status, which some carriers stopped updating. A parcel still in transit past its date counts as late.

View SQLHide SQL
SELECT DATE_TRUNC('week', s.est_dlvr_dt)::date AS week, o.ord_rgn_cd AS region, AVG(CASE WHEN s.act_dlvr_ts::date <= s.est_dlvr_dt THEN 1.0 ELSE 0.0 END) AS on_time_shareFROM ops.shpmt sJOIN marketplace.orn_ord_hdr o ON o.ord_id = s.order_idWHERE s.est_dlvr_dt >= CURRENT_DATE - 56 AND s.est_dlvr_dt < CURRENT_DATE AND o.src_sys_cd <> 'INTERNAL_TEST'GROUP BY 1, 2ORDER BY 1, 2;

Marked lines came from the Context Layer

Line chart. Weekly on-time delivery over eight weeks. The US holds around 96% and the UK around 95%; the EU holds near 93% until this week, when it falls to 82.4%.

On-time delivery by region, as a table
WeekUSUKEU
11 Aug96.2%94.9%93.1%
18 Aug95.8%95.3%93.8%
25 Aug96.5%94.4%92.9%
1 Sep95.9%95.0%94.0%
8 Sep96.8%95.6%93.6%
15 Sep96.1%94.8%93.4%
22 Sep95.7%94.1%93.2%
This week95.1%93.8%82.4%

Leah Brennan asks:Which sellers are getting the most 1-star reviews?

Sovarium answers:

Casa Olivo, a home and kitchen seller in the EU: 7 one-star reviews in the last 30 days, 4 of them this week. No other seller had more than 3.

Five of its seven mention breakage or a crushed box, and all seven orders went to EU buyers.

Counted from the reviews themselves rather than the seller rating snapshot, which lags by a week. Reviews hidden or removed by moderation stay in the table but aren’t counted.

View SQLHide SQL
SELECT s.selr_nm AS seller, COUNT(*) AS one_star_reviewsFROM fin.review rJOIN marketplace.orn_selr_mst s ON s.selr_id = r.seller_idWHERE r.rating_val = 1 AND r.posted_dt >= CURRENT_DATE - 30 AND r.vis_stat_cd = 'VISIBLE'GROUP BY s.selr_nmORDER BY one_star_reviews DESCLIMIT 5;

Marked lines came from the Context Layer

Horizontal bar chart. 1-star reviews in the last 30 days: Casa Olivo 7, Hearth & Oak 3, Pinecrest Outfitters 3, Atelier Brisa 2, Kite & Compass 2.

1-star reviews by seller, as a table
Seller1-star reviews
Casa Olivo7
Hearth & Oak3
Pinecrest Outfitters3
Atelier Brisa2
Kite & Compass2
Example data.

No more guesses.

The agent doesn’t guess and doesn’t make numbers up: every figure comes from a query it ran on your data. When it can’t be sure, it asks. When it assumes something, it says so.

What was our revenue last quarter?

£125.3K in net revenue last quarter, your fiscal Q3: April to June. The US brought in £63.9K, the UK £33.8K and the EU £27.6K.

Revenue grew every month, from £40.1K in April to £43.4K in June. The EU grew fastest, up 14% from April to June, against 7% for the US and 6% for the UK.

What it assumed

  1. Your year ends in September, so last quarter is fiscal Q3.
  2. Net revenue is settled payments less refunds, as your Context Layer defines it, counted on the day each order was paid.
  3. Dollars and euros are converted to pounds at the rate for each payment’s day, and test orders are left out.

Every assumption, in writing

“Last quarter” has a standard reading: your fiscal quarter. Chat takes it, answers, and lists under the answer everything it assumed, from the year end to the exchange rates. Nothing is left for you to guess at, and anything that’s wrong is one reply away from fixed.

Show me sales for our big sellers

Who counts as a big seller? I can use your Gold tier, or the top 10 sellers by net revenue over the last 90 days.

Top 10 by revenueReplyReplay

Your top 10 sellers took £45.3K in the last 90 days, 36% of all net revenue. Hearth & Oak led with £6.8K.

Horizontal bar chart. Net revenue in the last 90 days: Hearth & Oak £6.8K, Casa Olivo £5.9K, Maple Row Goods £5.4K, Nordlicht Studio £4.9K, Brightwater Audio £4.6K, Atelier Brisa £4.2K, Pinecrest Outfitters £3.9K, Copper Kettle Co. £3.5K, Kite & Compass £3.2K, Lumen & Loom £2.9K.

It asks when it can’t be sure

It doesn’t guess what “big” means to you. When a question could mean two things, it asks one short question and waits for your answer before it runs a query.

Then keep going.

Ask the next thing

It keeps the thread. “Those EU parcels” are the 9 damage refunds on EU orders in the last 30 days.

Which carrier took those EU parcels?

EuroPost Economy. It carried 34 of the 78 parcels sent to EU buyers in the last 30 days, and 8 of the 9 that came back damaged.

EU parcels and damage refunds by carrier service, last 30 days
Carrier serviceEU parcelsDamage refunds
EuroPost Economy348
EuroPost Standard271
Other EU services170

Be told when it moves

Ask for an alert for the metrics you care about. It checks the number now, says the default aloud and asks who should hear: everyone in your Slack alerts channel, or just you by email.

Tell me if EU damage refunds go above 5 in a week.

There have been 3 in the last 7 days. I’ll call it “EU damage refunds (7 days)” and check it daily. Should this be an org-wide alert, posted to your Slack alerts channel and visible to everyone, or a personal alert, emailed just to you?

Org-wide, please.

Done. “EU damage refunds (7 days)” is set: Sovarium checks it daily and posts to your Slack alerts channel when it goes above 5. It’s at 3 now, and the next check is tomorrow at 8:00. You can pause or delete it on the Alerts page.

Keep the chart

Pin any chart to Command View. It reruns its query with your dashboard each morning, so the number stays current.

Pinned to Command View

“Refunds by reason” will refresh with your dashboard each morning.

Ask from Slack

Mention it, message it or type /sovarium. The same agent answers in the thread, with the chart as an image, and follow-ups stay in the thread.

Tom Hughes9:12

@Sovariumhow many orders did we ship yesterday?

Sovarium9:12

We shipped 14 orders yesterday, Monday 28 September, against a 7-day average of 11.9. Three went to EU buyers.

Orders shipped per day

Bar chart. Orders shipped per day, 22 to 28 September: 13, 14, 12, 15, 8, 7 and 14.

Tom Hughes

How many of last week’s arrived late?

Sovarium

7 of the 83 orders shipped in the last 7 days arrived after their estimated date: 91.6% on time. Five of the seven were EU orders.

  • @Sovarium in a channel
  • A direct message
  • /sovarium

Or start from Command View

Every insight on Command View opens a chat with the question already asked, the numbers included, so the answer starts at “why”.

About this insight on my Command View dashboard:

“Refund rate is up 15.7% on the prior 30 days”

From 10.9% to 12.61% of orders.

Period: Last 30 days

Help me understand what is driving this.

See it work on your own data.

Tell us about your warehouse and your team. Our data experts write your Context Layer, then anyone can ask in plain English, in the web app or in Slack, and see how every answer was made.