[HN Gopher] Show HN: Probly - Spreadsheets, Python, and AI in th...
___________________________________________________________________
Show HN: Probly - Spreadsheets, Python, and AI in the browser
Probly was built to reduce context-switching between spreadsheet
applications, Python notebooks, and AI tools. It's a simple
spreadsheet that lets you talk to your data. Need pandas analysis?
Just ask in plain English, and the code runs right in your browser.
Want a chart? Just ask. While there are tools available in this
space like TheBricks, Probly is a minimalist, open-source solution
built with React, TypeScript, Next.js, Handsontable, Hyperformula,
Apache Echarts, OpenAI, and Pyodide. It's still a work in progress,
but it's already useful for my daily tasks.
Author : tobiadefami
Score : 157 points
Date : 2025-02-27 15:02 UTC (1 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| yawnxyz wrote:
| Very cool!! Do y'all have an use-your-own-key example deployment
| to try it?
| tobiadefami wrote:
| Thanks you!
|
| Right now, you can clone the repo and follow the instructions
| to run it locally with your own OpenAI key. I'm working on a
| hosted demo that will let you try it out directly without any
| setup. stay tuned :)
| kippinitreal wrote:
| Amazing name for this tool.
| tobiadefami wrote:
| Glad you like it!
| arthurcolle wrote:
| From the Miami colloquialism, "Supposably" could be good for
| an advanced stats add-on!;)
| tobiadefami wrote:
| haha! i'll consider it
| librasteve wrote:
| How about a screen video?
| tobiadefami wrote:
| posted one about a week or so ago on my LinkedIn
|
| https://www.linkedin.com/posts/oluwatobiadefami_vibe-coding-...
| librasteve wrote:
| excellent - thanks!
| westurner wrote:
| TIL that Apache Echarts can generate WAI-ARIA accessible textual
| descriptions for charts and supports WebGL.
| https://echarts.apache.org/en/feature.html#aria
|
| apache/echarts: https://github.com/apache/echarts
|
| Marimo notebook has functionality like rxpy and ipyflow to auto-
| reexecute input cell dependencies fwiu:
| https://news.ycombinator.com/item?id=41404681#41406570 ..
| https://github.com/marimo-team/marimo/releases/tag/0.8.4 :
|
| > _With this release, it 's now possible to create standalone
| notebook files that have package requirements embedded in them as
| a comment, using PEP 723's inline metadata_
|
| marimo-team/marimo: https://github.com/marimo-team/marimo
|
| ipywidgets is another way to build event-based UIs in otherwise
| Reproducible notebooks.
|
| datasette-lite doesn't yet work with jupyterlite and _emscripten-
| forge_ yet FWIU; but does build SQLite in WASM with pyodide.
| https://github.com/simonw/datasette-lite
|
| pygwalker: https://github.com/Kanaries/pygwalker ..
| https://news.ycombinator.com/item?id=35895899
|
| How do you record manual interactions with ui controls and
| spreadsheet grids to code for reproducibility?
|
| > _" Generate code from GUI interactions; State restoration &
| Undo" https://github.com/Kanaries/pygwalker/issues/90 _
|
| > _The Scientific Method is testing, so testing (tests,
| assertions, fixtures) should be core to any scientific workflow
| system._
|
| ipytest has a %%ipytest cell magic to run functions that start
| with test_ and subclasses of unittest.TestCase with the pytest
| test runner. https://github.com/chmp/ipytest
|
| How can test functions with assertions be written with Probly?
| tobiadefami wrote:
| Probly doesn't have built-in test assertion functionality yet,
| but since it runs Python (via Pyodide) directly in the browser,
| you can write test functions with assertions in your Python
| code. The execute_python_code tool in our system can run any
| valid Python code, including test functions.
|
| This is something we're considering for future development, so
| this is a great shout!
| westurner wrote:
| To have tests that can be copied or exported into a .py
| module from a notebook is advantageous for prototyping and
| reusability.
|
| There are exploratory/discovery and explanatory forms and
| workflows for notebooks.
|
| A typical notebook workflow: get it working with Ctrl-Enter
| and manually checking output, wrap it in a function(s) with
| defined variable scopes and few module/notebook globals,
| write a test function for the function which checks the
| output every time, write markdown and/or docstrings, and then
| what of this can be reused from regular modules.
|
| nbdev has an 'export a notebook input cell to a .py module'
| feature. And formatted docstrings like sphinx apidoc but in
| notebooks. IPython has `%psource module.py` for pygments-
| style syntax highlighting of external .py modules and `%psave
| output.py` for saving an input cell to a file, but there are
| not yet IPython magics to read from or write to certain lines
| within a file like nbdev.
|
| To run the chmp/ipytest %%ipytest cell magic with line or
| branch coverage, it's necessary to `%pip install ipytest
| pytest-cov` (or `%conda install ipytest pytest-cov`)
|
| jupyter-xeus supports environment.yml with jupyterlite with
| packages from emscripten-forge: https://jupyterlite-
| xeus.readthedocs.io/en/latest/environmen...
|
| emscripten-forge src: https://github.com/emscripten-
| forge/recipes/tree/main/recipe... .. web:
| https://repo.mamba.pm/emscripten-forge
| szajbus wrote:
| Interesting choice of a screenshot in the README... Manchester
| United in top four, clearly a hallucination produced by the AI.
| tobiadefami wrote:
| Or the AI is a man united fan and is hopeful for a top 4 finish
| this season :D
| smjburton wrote:
| Any plans to add a config for a Dockerfile/docker-compose.yml?
| This could be really useful in a self-hosted environment. If you
| go down this route, the ability to use something like Ollama in
| place of OpenAI would be a nice feature as well.
| tobiadefami wrote:
| Docker config is already implemented--you can check out the
| repo now. Adding support for other LLM providers like Ollama is
| something to consider for future development. Thanks for the
| suggestion!
| Onavo wrote:
| Can you package it as a standalone npm component library for
| embedding?
| jimbokun wrote:
| One of the things that has seemed suboptimal to me is having AI
| "write code".
|
| Doesn't it make more sense to ask AI a question, and the AI
| figures out what code is needed to answer the question, run it,
| and report the answer?
|
| From the description sounds like this project is a step in that
| direction.
| hathawsh wrote:
| OTOH, what is "code"? In a general sense, I think of "code" as
| the "codification of a process." If we want to know what steps
| the AI is following to complete a process, then having an AI
| write code seems like a correct and necessary part of the
| solution.
| librasteve wrote:
| I have a pressing need to come up with a household budget and had
| already decided to try using LLMs to help on this task since
| learning LLMs/prompt engineering is more fun than just writing a
| dumb script to do accounts.
|
| Thought i would try this tool - and here's a quick review of the
| experience:
|
| - the quickstart instructions are very clear and I was up and
| running on my localhost (a mac - but I think this will work well
| on windows and linx too)
|
| - the UX is good ... slight wrinkle is that the upload button has
| a down arrow ... also Ctrl+Shift+/ doesn't work on a mac - took
| me a while to find the speech bubble icon in the bottom right
|
| - love the import / export, love the chat box - worked well with
| my existing OpenAI account
|
| So - this is a fantastic concept and a well executed MLP -
| thanks.
|
| That said - and I highly encourage you to keep going - there are
| a couple of caveats:
|
| 1. The task I set is realworld - "please categorize my bank
| transactions into household expense groups" - and proved too much
| for my ChatGPT o1 account - most lines were labelled as 'other',
| bank charges were labelled 'fuel', etc, etc - so the underlying
| AI engine is not yet ready for this sadly (I am happy to be
| corrected if others know the recipe)
|
| 2. I wonder if using a tool like this, a set of LLM prompts to
| set up the query and to comb the response would help to chip away
| at [1] ... so I suggest that having a way for my config to
| accumulate my prompts maybe a nice feature.
|
| Please do not take this f/back as negative to your work ... it is
| more my getting to grips with the AI sweet spot.
| tobiadefami wrote:
| Thanks for taking the time to try it out and share your
| thoughts. I really appreciate the detailed feedback from a
| real-world use case.
|
| Glad to hear the setup was smooth and that the chat box +
| import/export features worked well for you. Noted on the UI
| tweaks, I'll look into making them more intuitive.
|
| On the categorization issue, yeah, LLMs can struggle with
| nuanced transaction labeling, especially without proper context
| or examples. Structured prompting could help, which ties into
| your second point -- having a library of refined prompts that
| can be reused for repetitive tasks would be really valuable.
|
| I love your feedback -- it's exactly what helps improve the
| tool. And again, thanks for testing it out!
| librasteve wrote:
| having thought about this a bit - my new conjecture is that
| if I had a way to feed in an example map of transaction payee
| => category, as one of the prompts, and a way to
| incrementally add prompts for outliers, then the AI _might_
| be able to do a reasonable job - I am planning to mess with
| raku LLM::Functions to see if I can get this to work
| tim-fan wrote:
| Hi I've been thinking about the same thing, in the context
| of beancount / plain text accounting.
|
| https://www.reddit.com/r/plaintextaccounting/s/BKsaLrfy3A
|
| I already have thousands of labeled examples and a list of
| valid categories. I'm also hoping an llm will do a
| reasonable job.
|
| At the moment I'm wondering what to do with all the example
| transaction data, as it's likely larger than the context
| window. I guess I could take a random downsample, but
| perhaps there's a more effective way to summarize it.
| swyx wrote:
| any comparisons with https://github.com/quadratichq/quadratic ?
|
| *necessary disclosure, i'm a small angel investor in it but
| genuinely open to see new approaches
| tobiadefami wrote:
| I'm actually a fan of what the team at Quadratic is building.
| It's definitely the more mature product with a robust Python
| implementation and a well-designed interface that bridges
| spreadsheets and code. Their stack appears to be built on Rust,
| which likely gives them performance advantages.
|
| Probly is earlier stage and more minimalist, but we're tackling
| the same fundamental problem. Our specific focus is on making
| data analysis a fully autonomous process powered by AI - where
| you can describe what you want to learn from your data and have
| the system figure out the rest.
| canadiantim wrote:
| Any possibility for google sheets support?
| thrdbndndn wrote:
| Second this.
|
| I'd consider myself the target audience since I frequently
| dance around spreadsheets and scripts, but being able to use my
| tool of choice is a must. A simple table or even a database
| can't fully replace a full-featured spreadsheet application.
| They are just not the same thing.
| anonu wrote:
| I can see ChatGPT including a spreadsheet component like this in
| their chat one day.
| gamer_545 wrote:
| This is nice, is there a limit to the data set been provided?
| linwangg wrote:
| This looks interesting! How does Probly handle complex Pandas
| operations compared to something like Deepnote or Jupyter AI
| plugins? Does it support custom Python scripts, or is it more of
| a prompt-based solution?
| tobiadefami wrote:
| Great question,
|
| Unlike Jupyter or Deepnote where you write code directly,
| Probly is primarily prompt-based - you describe what analysis
| you want in natural language, and the AI generates and executes
| the appropriate Python code behind the scenes using Pyodide.
|
| The key difference has to be that Probly runs python entirely
| in your browser using WASM, while jupyter/Deepnote run code on
| servers.
| linwangg wrote:
| That's an interesting approach! Running Python entirely in
| the browser via WASM could have some big advantages--
| especially for privacy, portability, and offline use.
| mfdupuis wrote:
| Disclosure, I'm a founder in the data space[1]
|
| Have you thought about how you would handle much larger
| datasets? Or is the idea that since this is a spreadsheet,
| the 10M cell limit is plenty sufficient?
|
| I find WASM really interesting, but I can't wrap my head
| around how this scales in the enterprise. But I figure it
| probably just comes down to the use cases and personas you're
| targeting.
|
| [1] https://www.fabi.ai/
___________________________________________________________________
(page generated 2025-02-28 23:02 UTC)