Introducing Plotly Studio

Hey everybody - I’m so excited to finally announce a product we’ve been working on for a long time at Plotly - Plotly Studio: Introducing Plotly Studio

Plotly Studio is an AI-native desktop app that generates data apps in 2 minutes.

The apps are built in Python and editable in code or in natural language “Specification” files or in prompts.

A lot has gone in to the product and I wrote about it extensively in the announcement blog post

Early access to the product is available through this sign up link - Plotly Studio | Early Access Program

Can’t wait for you all to get access and give it a try :slight_smile:

15 Likes

Signed up and can’t wait to be honest.

2 Likes

celebrate

Mustafa Kaddoura reacted to your message:

Hey @chriddyp!

This looks great!

Maybe you would like to keep the details secret, but what technologies did you use for that? A custom agentic setup? Fine tuned LLM’s on plotly/dash content? Something like Cursor? LangChain/LangGraph? CrewAI?

This looks pretty intriguing, but from the demo it seems like it only works with a single < 200 MB CSV file? Are there plans to have this support connecting to and querying existing databases?

Custom agentic set up. We’ve been employing a bunch of different strategies - mcp, templating, prompting, incorporating TONS of Plotly best practices, auto error correction, and more. We’re not using any high level framework like LangChain - we’ve found that we need to working much “closer to the metal”. On the model side, we switch between different models for different types of tasks to get the right fit of accuracy vs speed.

A unique thing about Plotly Studio is that we’re able to actually run and test each of the generated files of the project in a consistent way and feed that in to our agentic retry loop for code auto-correction in case the LLM generates code with errors. This is made possible with our custom agentic setup paired with a managed Python runtime and structuring the code generation in a way that it can be auto-tested.

Some other fun tech notes: The desktop app is built with Tauri instead of Electron, which makes the executable quite a bit leaner, enabling more memory to be used for processing data rather than running the app itself. We’ve also built a Rust backend to give us some nicer low level access to things like managing the runtime and subprocesses.

6 Likes

200MB CSVs for now and we’ll be opening that up to GBs as we go forward and support faster data processing libraries like Polars or DuckDB plus further auto sampling, aggregation, and WebGL rendering.

Databases will also be supported in the future too. Working with a data extract today is a really great way to develop the app though, because you can isolate a whole class of connection and performance issues and benefit from a faster, more reliable dev experience.

Our plan with data connections is to enable separate initial queries from the downstream data extract/dataframe so that we can automatically run a background scheduler to periodically refresh the data extract that the app uses during runtime.

Refreshing the data extract can take 10s of seconds to minutes which means it needs to run in the background for performance. This is also one of the reasons behind us building Plotly Cloud for hosting Dash apps - we need deeper integrations for things like reliable and easy background schedulers.

The apps today generate a data/data.py file with a simple get_data() function that reads the dataset. To work with a database or external API today, this function can be swapped out with your own data query code in Python. As long as the function returns data with thet same columns as the original data extract, the app will work without any additional changes required to other parts of the code base. It’s pretty similar to how I build Dash apps “from scratch” today and a great example of some of the “best practices” that we’re putting in to the generated apps by default.

2 Likes

That’s really impressive. :clap:

I’m really excited about trying this out and really curious about the Plotly Cloud offer.

But the main question that I have in mind is : is it now useless to learn Dash?

1 Like

Never useless to learn how something works.

Dash is also more than a visualization tool. :smiley:

1 Like

Nah, still super helpful. You’ll be able to build and steer better apps with Plotly Studio if you know Dash under the hood than if you don’t.

:100:

@spriteware … there’s a gazillion form of callbacks, hooks, partial property updates, etc. … all the stuff that gives Dash such “Max Headroom” / allows us to head into very deep waters … Plotly Studio as much as anything - metaphorically speaking - allows us to wade very close to shore (if not onshore, if BI = onshore … and full stack = marianas trench)

2 Likes

Besides … knowing moreso all that Dash can do - vs (initially) mastering the specifics of such - will allo you to ask the right questions (aka prompt engineering) … and let Plotly Studio mind the details … while still being all python all the time under the hood

1 Like

Thank you @chriddyp !

The development must have taken some time. Sounds like a nice AI engineering project. Did you finetune LLM’s with plotly content or are you “just” switching between different models like Llama4, Claude or any other pre-trained model?

I agree that sometimes the exiting agentic frameworks are too much of everything.

We haven’t yet needed to fine tune a model although I expect that day will come. Using the rest of the techniques (autocorrection, templating, prompting, few-shot examples, custom MCP tools, agentic loops, dynamic context) as well as testing and evaluating different models has gotten us to a great place so far.

2 Likes

Sounds great, kudos!

Thanks for sharing some details!

1 Like