agentic notebook
Ask a question. Build the analysis. Keep the code.
Work with an AI agent in a reactive SQL and Python notebook. Inspect every step, edit the logic yourself, and turn the same analysis into a dashboard or scheduled report.

10h
saved per business employee per week
20x
faster reporting cycles

2 w → 30 m
to produce the insights Growdash's restaurant customers rely on

AI, SQL and Python. One working notebook.
Ask in plain language, write SQL against your warehouse, or use Python for deeper analysis. Move between chat and code with the queries, results and explanation in one place.
notebook

Show me last month's sales breakdown by rep and region, with a trend chart
Called 4 tools
Reviewed notebook state
Explored database
Ran
title
Ran
rep_region_sales
Called 2 tools
Called 2 tools
Ask for edits or dive deeper...

Claude Sonnet 4.6
Agentic capabilities built right in
Ask the agent to investigate a question, write the analysis and refine the result with you.

Rep Performance Summary
sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
SELECT
u.id,
u.name,
u.email,
COUNT(o.id) AS order_count,
SUM(o.total) AS total_spent
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
AND u.is_active = true
GROUP BY u.id, u.name, u.email
HAVING COUNT(o.id) > 0
ORDER BY total_spent DESC
LIMIT 50;
Order ID
Sales Rep
Region
Deal Stage
Revenue
5001
Sarah Chen
West
Closed Won
$48,500
5002
Marcus Rivera
East
Closed Lost
$22,000
5003
Priya Patel
North
Closed Won
$67,200
5004
Jake Morrison
South
Negotiation
$31,750
5005
Lisa Tanaka
West
Closed Won
$89,000
5006
Derek Hughes
East
Closed Won
$45,300
5007
Nina Kowalski
North
Proposal
$53,800
5008
Tom Brennan
South
Closed Won
$71,450
5009
Amy Lawson
West
Closed Won
$36,900
5010
Chris Yamada
East
Negotiation
$58,200
1
2
...
3442
10 out of 244,241 rows
rep_summary
4
5m ago
Write and inspect SQL
Query your warehouse and inspect the results without leaving the analysis.

Monthly Sales Trend
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import altair as alt
import pandas as pd
monthly_trend_plot_df = monthly_sales_trend.copy()
monthly_trend_plot_df["sale_month"] = pd.to_datetime(monthly_trend_plot_df["sale_month"])
chart_monthly_trend = alt.Chart(monthly_trend_plot_df).mark_bar().encode(
x=alt.X("yearmonth(sale_month):O", title="Month", axis=alt.Axis(format="%b %Y", labelAngle=-45)),
y=alt.Y("net_revenue:Q", title="Net Revenue", axis=alt.Axis(format="~s")),
tooltip=[alt.Tooltip("sale_month:T", format="%b %Y"), alt.Tooltip("net_revenue:Q", format=",.0f"), "orders", "units_sold"]
).properties(title="Monthly Net Revenue Trend (Jan 2024 – Aug 2026)")
chart_monthly_trend
Manager performance
2
trend_chart
4
1m ago
Go further with Python
Transform data, calculate results and build charts in Python.
Guide the agent with what your team knows.
Reference a specific cell, apply a saved skill, or use the definitions and exceptions in your workspace. Give the agent the right starting point for the next question.
Work with context

Make
daily_trend
a
bar
chart
instead
...

Reference cells
Point to the exact result you want to change or explore.

Create
a
new
skill
from
this
conversation
...

Appy
compare_periods
...

Reuse analytical workflows
Save a repeatable approach so you can use it again.

Edit
revenue_trend
to
exclude
pilot
customers
...

Bring business rules into the analysis
Use the definitions and exceptions your team has documented.

Rep Performance Summary
sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
SELECT
u.id,
u.name,
u.email,
COUNT(o.id) AS order_count,
SUM(o.total) AS total_spent
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
AND u.is_active = true
GROUP BY u.id, u.name, u.email
HAVING COUNT(o.id) > 0
ORDER BY total_spent DESC
LIMIT 50;
Order ID
Sales Rep
Region
Deal Stage
Revenue
5001
Sarah Chen
West
Closed Won
$48,500
5002
Marcus Rivera
East
Closed Lost
$22,000
5003
Priya Patel
North
Closed Won
$67,200
5004
Jake Morrison
South
Negotiation
$31,750
5005
Lisa Tanaka
West
Closed Won
$89,000
5006
Derek Hughes
East
Closed Won
$45,300
5007
Nina Kowalski
North
Proposal
$53,800
5008
Tom Brennan
South
Closed Won
$71,450
5009
Amy Lawson
West
Closed Won
$36,900
5010
Chris Yamada
East
Negotiation
$58,200
1
2
...
3442
10 out of 244,241 rows
rep_summary
4
5m ago
Work in chat or code
Let the agent take the first pass, then open the SQL or Python and make it your own.

sql
select
salesperson,
sum(revenue) as total_
from dunder_mifflin_sales
sales_by_rep
python
top_reps = sales_by_rep.head(5)
top_reps["label"] = top_reps["salesperson"]
top_reps
Manager performance
top_reps_chart


Rep Performance Summary
sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
SELECT
u.id,
u.name,
u.email,
COUNT(o.id) AS order_count,
SUM(o.total) AS total_spent
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
AND u.is_active = true
GROUP BY u.id, u.name, u.email
HAVING COUNT(o.id) > 0
ORDER BY total_spent DESC
LIMIT 50;
Order ID
Sales Rep
Region
Deal Stage
Revenue
5001
Sarah Chen
West
Closed Won
$48,500
5002
Marcus Rivera
East
Closed Lost
$22,000
5003
Priya Patel
North
Closed Won
$67,200
5004
Jake Morrison
South
Negotiation
$31,750
5005
Lisa Tanaka
West
Closed Won
$89,000
5006
Derek Hughes
East
Closed Won
$45,300
5007
Nina Kowalski
North
Proposal
$53,800
5008
Tom Brennan
South
Closed Won
$71,450
5009
Amy Lawson
West
Closed Won
$36,900
5010
Chris Yamada
East
Negotiation
$58,200
1
2
...
3442
10 out of 244,241 rows
rep_summary
4
5m ago
Called 4 tools
Wrote
sales_breakdown.md
sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
SELECT
u.id,
u.name,
u.email,
COUNT(o.id) AS order_count,
SUM(o.total) AS total_spent
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
AND u.is_active = true
GROUP BY u.id, u.name, u.email
HAVING COUNT(o.id) > 0
ORDER BY total_spent DESC
LIMIT 50;
Wrote
event_breakdown.md
Explored database
Ran
title
Ran
rep_region_sales
Called 2 tools
Called 2 tools

One notebook. More ways to use it.
Arrange notebook outputs into a dashboard, share a report, or schedule the analysis to run again. Keep the underlying code connected to what your team sees.
share

Turn any notebook into a layout
Create an interactive layout that is always up-to-date

Build data apps for people who'd rather point and click.
Give your team ability to filter without touching a single line of code

Workspace
Public
Embedded
Title
Public web link
Make public
Share and manage access
Share with your team, make it public for trusted reports, or embed in your product as iFrame

Automate and run on schedule
Run repeatable analyses on a schedule instead of rebuilding the same report.







