DataSketch – A streamlit app for sketching data chart based on conversational inputs

Concept & Problem Statement

Data visualization can be challenging and require development time, especially for users who lack experience with Altair/Vega syntax. This LLM-based app simplifies the process by allowing users to describe their desired charts in plain language, and it automatically generates the corresponding JSON chart configuration for the vega/altair visualisation.

Key Features

  1. File Upload: Users upload a CSV or JSON dataset.
  2. Chatbot Interface: Users ask for visualizations in natural language (e.g., “Show me a line chart of sales over time.”).
  3. Automatic JSON Generation: The chatbot parses the request and creates a Vega/Altair JSON spec.
  4. Live Preview: The generated chart is displayed in Streamlit.
  5. Export Option: Users can download the JSON spec or the rendered visualization.
1 Like

Sounds exciting! Could you include a link to the app? :grinning:

1 Like

Thanks! At the moment, this is just an idea I had as part of the Connect Challenge. I haven’t built the app yet, but I’m exploring how to make it feasible. Looking forward to any feedback or suggestions!

1 Like

Hey!

I love the idea, I did something very similar which I just released a few days ago, the only difference is that it generates matplotlib code instead of Vega/Altair JSON specs! Would be easy to add the option though.

You can find it here if you’re curious: https://simplyplot.streamlit.app

2 Likes

Hey! I love your work SimplyPlot looks awesome! :tada: It’s really cool how you generate Matplotlib code dynamically. If you’re open to sharing some insights, what type of LLM model did you use for this?

1 Like

Cheers! More than happy to share insights! The actual model being used right now is 4o-mini. I looked at a lot of different LLM orchestration tools, but landed on DSPy because I like their philosophy of auto-prompting optimization. However, I ended up using none of it (yet) haha so it’s basically a fancy wrapper for LiteLLM right now with some nice starter prompts (which tbh gave me quite good out-of-the-box performance simply using their ChainOfThought module).

Also, I really should switch to Gemini Flash 2.0 as it is cheaper and better (and should be as easy as setting up api keys and changing one line of code).

1 Like

That sounds awesome! :rocket: You’ve clearly put a lot of thought into this and done some detailed work. I appreciate the insights! I’ll start from what you’ve shared and begin developing, excited to see where it goes! Thanks again for the guidance!

Week 3 done!