Launch HN: Neptyne (YC W23) – A programmable spreadsheet that runs Python

399 points by dosinga ↗ HN
Hi HN! We are Douwe and Jack, founders of https://neptyne.com. Neptyne is a programmable spreadsheet that runs Python. It’s like Google Sheets, but for software engineers and data scientists. If you have three minutes, go to https://neptyne.com/neptyne/tutorial and it gives you a taste.

The world runs on spreadsheets, and for good reason: they are a universal data canvas. But building on top of and around the spreadsheet is clumsy: limiting scripting environments, APIs and file formats get in the way of making the spreadsheet a part of a broader application. Excel workbooks become monolithic and unmaintainable. Google Sheets data become static and stale.

Both Excel and Google Sheets offer some level of programmability but we have yet to find any user who liked the experience. It’s harder than it should be, using programming languages that are more limited than you expect. With Excel you've either got VBA or an extension like pyxll to deal with. With Google Sheets, your options are AppsScript or the REST API. These tools are mediocre but the need for programmable spreadsheets is such that people use them anyway.

With Neptyne, the spreadsheet itself runs in the Python runtime, so you can write to it or read from it like an in-memory data structure, because that's exactly what it is.

Neptyne primarily solves problems that exist at the boundaries of what other spreadsheet tools can do. We make Python a first-class citizen of spreadsheet-land, meaning you don't need a clumsy integration or extension to make your code work with spreadsheets. You can use standard off-the-shelf Python libraries to build on top of an Excel-like spreadsheet environment to build collaborative applications. You mix Excel style cell addresses (A1, C3) and ranges (B2:B20) with Python code (e.g. `A1 = "foo" if B2 > 0 else "bar"`, or `for num in B2:B20:`).

Before starting Neptyne we worked at Sidewalk Labs, where we built models in Python that would typically be shared or used via spreadsheets on an interdisciplinary team. The final step of many pipelines was "write a .csv with the results", which was a great way to share data but only in one direction. What we really needed was a way for users to interact with our Python models through a spreadsheet: tune inputs, see results, make quick aggregations. After making some version of this work with the Google Sheets API, we knew this could be better. What we wanted was basically a Jupyter notebook embedded in our spreadsheet, that could give us the full power of Python while keeping the accessibility of a spreadsheet. We built a proof of concept, found some interest in it, and formed Neptyne.

Neptyne differs from lots of modern takes on the spreadsheet tool in that we really wanted to preserve the "data canvas" nature of a true spreadsheet. While there is value in making spreadsheets more like SQL databases with column-based types and formulas, Neptyne gives you the freedom to structure your spreadsheet as you would with Sheets or Excel. Mix and match data types, table dimensions, graphs, charts, and buttons as freely as you might with those tools.

Neptyne behaves exactly like a spreadsheet but is secretly an alternative frontend to a Jupyter Notebook that has an embedded spreadsheet engine. Because it runs a Jupyter kernel, we support anything you can run in a Jupyter notebook, including all the expected visualization packages (matplotlib, plotly, etc.). This is not merely scripting using Python—you can use any (stateful) Python framework to get serious work done.

Things users have built with Neptyne so far include a Twitter bot, a private spaceflight schedule optimizer, and a CRM that pulls from several different data sources.

Neptyne's basic tier is free to use. As we add more capabilities to the product, certain features will be introduced at paid tiers. For individuals bu...

220 comments

[ 3.1 ms ] story [ 266 ms ] thread
I had three minutes, clicked tutorial and got a modal asking me to sign up.

Left the page.

I didn't even get three minutes; as soon as the page opened, I couldn't do anything without signing into Google or creating an account. Closed the tab.
Ugh fine I’ll take the bait. If you all don’t want to create an account, don’t expect to try anyone’s products! It doesn’t even make sense from a software perspective: A spreadsheet needs to belong to a user. You can’t edit a google doc or sheet without being logged in. Sure, they could create a sandbox demo of their product that works without an account, but that’s kind of an unreasonable feature expectation to thrust onto every website.
"Sign up to save" is a quite common pattern these days and what I would suggest they are doing here as well.
You can still read the tutorial without getting a Google Account, and that can be more than enough to get a feel for the product. At least enough to decide if you want to get a test account.

Here the Tutorial is Login Gated. That's just going to turn people who are curious and have 2-3 min to look at it, away.

I already had a google account when it came time to try Google Docs.

I'm not going to make a new account somewhere just to demo what they offer. I have to be convinced before I enter my personal info

Modern problems require modern solutions. I keep a separate gmail id just for this. Also I signed in using gmail and redirect didn't work in firefox.
Don’t studies show that you have to make users do something that requires friction to boost conversion? Otherwise they’re not valuable leads
Thanks for letting us know. I won't even bother clicking on the link.
With pay-per-use services propping up around AI, I'm sensing that asking users to sign up before trial will become inevitable.

1. Is this a HN only phenomenon or is there a significant drop-off in general because of the signup requirement?

2. If the drop-off is general, how are you planning to handle AI pay-per-use credit tracking without signup?

I think they are referring to the fact you can’t even try it without signing up. I don’t think people mind signing up and paying if they feel they will use it.

So much stuff is released every day, I don’t want to be bothered creating an account and giving my info to everything on the internet. Give me a good demo and if I’m interested I’ll sign up.

(comment deleted)
I hate email signups as much as the next guy, but the truth is...if you find their value proposition so weak that you won't even enter an email address or click through a Google login button?

Then maybe you're not who they want as a first customer anyway.

Perhaps this is just successful self-selection, rather than merely a user-hostile behavior?

no this is just user hostile and a bad sales funnel. Even Googles Tutorials are not login gated, however it expects you to get a 14 day free account to test Google Apps if you want to do the practice material.

Show what you have, then gently nudge people in to the sales funnel. Dont body slam them in to i.

It doesn't do a verification flow on the address provided, so you can just use <randomstring>@sharklasers.com or similar to try it out.
We hear you and we do want to make it possible to try the tutorial without signing up for an account. We're working on making that possible shortly. I'll update here when that's possible

EDIT: this should work now. Just click the new button that says "Skip signup and let me try it out first"

I can't understand how this will improve the work. I see the value of having python instead of sheets formulas for python developers, but developers would work on totally different toolsets (like Jupyter notebook, as you mentioned), or something like StreamIt or https://gradio.app/

This would be useless for spreadsheet users (those who use sheet formulas) as they have to learn python.

I'm not in the target audience, so I might be completely wrong about the use cases.

(co-founder of Neptyne here)

You're spot on in that, if you're a Python developer, you're probably using Jupyter and/or Streamlit, gradio, etc. and spreadsheet users are most comfortable with Excel-style formulas. What we've done with Neptyne is create an environment where teams of both types can be productive in a shared environment: the usual spreadsheet formulas are there, and so is a full Python/Jupyter runtime.

As with any tool that attempts to combine the best of multiple great tools, there's always the risk that it falls short of one or the other. Our aim is to make Neptyne a better alternative to both standard spreadsheets and Jupyter notebooks.

One more thing that surprised me a bit: in talking to spreadsheet power users, you see a lot of interest in using more Python. Neptyne is a great way to start off with a spreadsheet and gently incorporate more Python into your work!

The formula in python will be useful for my use case. I can simply import a package like investpy or openbb then print the output directly into a cell. This will be great, i think.
(comment deleted)
I may be wrong, but most people that know python have already understood there's better ways to code than spreadsheets. Also, at least where I live, not even Google could undermine Excel's dominance.

PS: I'm convinced I was indeed wrong after reading replies, because I didn't consider the interaction of coders with no coders, and this tool may indeed be useful. Nevertheless I maintain these cultural changes are very hard, and wish the company good luck!

Is the argument here that "if you know how to code, spreadsheets aren't useful to you?"

If so, that's false. Spreadsheets are a fantastic way to present visual data and analysis in a way that's auditable by anyone, regardless of technical competence. They are visual programming!

This also makes them a better way to do lightweight data processing. One of my most common workflows is to dump production data into a CSV so I can analyze it and build charts off it. This is perfect for business-as-usual questions, like basic segmentation analyses. Pivot tables!

A major issue with Google Sheets is that the DSL is terrible. Like, try to do any sort of string manipulation (extract the first two words)[1], and you'll see how bad it is. Adding native python support helps solve this.

I'm just a random HN-er who saw this, but I'm very excited about this product.

---

[1] https://www.spreadsheetclass.com/extract-text-or-numbers-fro...

I think there's a real use case here if you can convince the people who write python and the people who write excel spreadsheets to work in the same environment. Like other people have mentioned though, it's easier to add python to excel then it is to change everyone's workflow to some totally different thing.
You convinced me (and I edited my post). Thanks :)
I can't pass something with Python onto my team. I have to work within the constraints of Excel. My team sees the value of Python but none of them want to learn it, and none will maintain it after I go. They do however know spreadsheets (even complicated ones) so those I can.

EDIT: Sorry I see you changed your mind - so what I wrote maybe wasn't necessary but I'll leave it here. To be clear I wish my team would learn Python, but most of them get promoted and richer without learning it.

Traditionally the business is the source of spreadsheets (data comes from the biz side of the equation). The data analyst then has to make sense of the data.

So to convince a BA to input their data on Neptyne because the DA might need to python script it at some point is maybe premature optimization.

That's an uphill battle... But I definitely see it a good case for me personally as someone who both originates data (nothing fancy) and needs to process it further...

Will definitely check it out!

(co-founder of Neptyne) - It's definitely not the easiest market to break in, I am sure you are right there. The Python side of things does allow for easy import of data from anywhere though - you can just go:

A1 = requests.get(SOME_URL).json()

to make a REST API call for example. Right now that's often done by running some script that produces a .csv that then gets emailed around and imported into a spreadsheet.

I believe Google Sheets supports programmability using Javascript these days. Is your product fundamentally different? Thanks and all the best.
(comment deleted)
(co-founder of Neptyne here)

With Google Sheets you get a flavor of JS called Apps Script, a flavor of JS with some limitations. Some ways in which our use of Python differ are:

- run Python directly in the spreadsheet cells, not just as an "extension"

- a full runtime in a Jupyter kernel, so you can import and use effectively any Python package, as long as it runs on Linux

- an interactive REPL that gives you a nice test environment, but also a command line of sorts for working with your spreadsheet. (e.g. you can say `A1 = requests.get(URL).json()`) to do a one-off fetch of some data from an API.

Generally speaking we hope to give you a much more powerful/seamless integration between spreadsheet/Python than what you get with Sheets/JS

First: congratulations. I love the premise.

You've hit the nail on the head: While Google Sheets supports Javascript, the integration feels clunky. You have to switch from the spreadsheet you're working on, to the Apps Script editor. This is awkward enough that I tend to avoid this functionality, even in use-cases where a few lines of Javascript code would probably save me time (vis-a-vis engaging in gymnastics in a bunch of spreadsheet rows/columns or a separate tab).

In comparison, Neptyne makes Python feel like a first-class citizen.

That said, you might want to consider slight changes to the UX so that users conditioned on Google Sheets/Excel's UX paradigms can use it with their "muscle memory." For example, when I select a cell and press the '=' key, I expect to be able to start typing in a formula. Both Google Sheets and Excel behave this way. In Neptyne, I had to double-click on the cell first. The closer the experience to the two "biggies", the easier it'll be to convince folks to switch.

Agree with making it as much the same where it can be the same. In this case it should work the way it works with the other spreadsheets though. Click a cell and start typing should work and for me just did when I tried. Can you reproduce this? Thanks!
Just some feedback: the landing page dimensions are all out of order. There's a horizontal scrollbar under the "sneak peak" section. Never a good thing. The spacing between the heading and the hero image is far too wide.
Thanks, appreciate the feedback! You make good points. We'll have a look at how we can improve the landing page.
I like this idea. If I’m doing anything more than a trivial formula in Excel or Google Sheets then it’s a pain to look up the proper syntax. Just being able to use Python sounds great.
Very cool idea. Since it is based on Jupyter Notebook, can I self host this for my needs?
We don't have a self-host option at the moment. We wanted to build Neptyne as a collaborative platform first, where users could build together and share their work.

I wouldn't rule it out for the future though -- a lot will depend on where we see Neptyne being used.

FYI There is PyXLL which is an add on for Microsoft excel that gives this functionality without a need to log into any thing.
PyXLL is great but installing on users machines can be difficult. The problem that VBA actually solves in my opinion is that it allows technicalish users to build software without any controls. Most enterprise companies lock down the dev experience so much it is impossible to do anything but in VBA you can have direct access to the kernel.
Very cool. I've done plenty of work supporting non-technical users who primarily interact with spreadsheets. This would definitely make my life easier.

Is it going to be cloud-only, or are you planning on making a desktop app? If it's cloud-only, you can grab some (hopefully many) Google Sheets users, but most Excel users will probably pass.

Thank you! I do hope you find it useful.

To answer your question, it's cloud-only -- we wanted to build Neptyne as a collaborative platform where teams of programmers and non-programmer types could get things done together. I think you're right in that this will mean it doesn't work for a certain class of user, but for now at least, we're focused on Neptyne as a web app.

This is neat. Congrats on the launch. Having a python repl next to spread sheet will be handy for a lot of user cases.
This sounds like a really good idea - combining spreadsheet convenience with being able to do programmatic manipulations with python can be really value for people who are using spreadsheets to do modeling (e.g financial). I think (especially based on some other comments) a big challenge will be just getting people out of their current bubble. If you do financial modeling, you might be entrenched in excel, and if you so data science in python, you might never dream of using spreadsheets.

My unsolicited advice (that's probably on your radar anyway) would be to try and get a management consulting firm on board with this. The flexibility this has would be well used there, and you've got lots of people who are engineers stuck using spreadsheets that would be on board with trying something like this.

(co-founder of Neptyne here)

Our biggest challenge as you say is definitely the fact that lots of users will be entrenched in Excel. Our goal right now is to appeal not to those who are happy in Excel today, but to those who have grown disillusioned: lots of users today build up amazingly complicated things in Excel and grow frustrated by the difficulty of maintaining that complexity. Python can be a much better fit in many cases for a lot of that complexity.

And as a platform for data science, we've found Neptyne really nice for sharing results. I was surprised at how often I heard from users: "well, we usually do everything in Jupyter, but then whenever management wants to see the output, they ask for it in a spreadsheet".

The concept of Python-based spreadsheets was explored by Resolver One[1], a defunct proprietary desktop app that was discontinued ~10 years ago[2].

It seems a web version of the app has been published in open-source[3] but that too has been EOL.

[1] https://web.archive.org/web/20120211201410/http://www.resolv... [2] https://www.resolversystems.com [3] https://github.com/pythonanywhere/dirigible-spreadsheet

I remember this from the book IronPython in Action. The book teaches IronPython (Python for .Net) by having you build a spreadsheet application. The author worked on Resolver One.
(cofounder of Neptyne here)

Thanks for mentioning this! I came across Resolve One recently in another HN thread. Were you a user yourself? What did you think of it?

I did try it, but that was ages ago. I remember going wow! and thinking this is the future of spreadsheet. Alas it didnt pan out that way. One thing it had if I recall waell, was defining a function without having to go full VBA style scripting. It was more like a lambda you define in a cell.
I have the install files for Resolver One cached somewhere. If there's interest I'll dig them out and post publicly.

I was very sorry to see the project go insolvent. I didn't become an active user due to accident of time not discovering it until the final months.

Resolve One was on my radar at the time because I was deep into building ERPs in Python.

All our clients had stacks of sedimented business rules and know-how, lying around in a mess of unreliable, unmaintained and un-versioned Excel files.

I was thinking of using Resolve One as a conduit that might be helpful to absorb all of that. A UI similar to a spreadsheet would be a clever trojan for adoption, as I could win the hearts and minds of the users that were not seeing themselves as developers. While bringing better software engineering and QA in the enterprisey world of organically grown, ad-hoc solutions.

Neptyne seems to revive that grand vision, so it would be interesting to study how and why Resolve One failed. Too soon perhaps, as the market wasn’t as big as it is today? Or maybe by the time you reach the critical point of the messy pile of Excel docs, you consent to invest into your core business and hire internal developers. I’d love to read a post-mortem of Resolve One.

(comment deleted)
"Supercharge your spreadsheets with Python and AI"

lol, threw in the AI there just in case

Congrats on the launch. Building a product of this complexity is no easy feat! Out of curiosity: given the old adage that a product needs to be 10x to overcome switching costs, how do you prove users that you are 10x better than Google Sheets or Excel?
can it handle a million rows? 10M?

believe it or not this is my biggest problem with Sheets, and while Excel does better it's still capped at 1M

Once you hit a million rows wouldn't it be easier to just make it a proper database? Maybe there are some use cases where this is not true, but I can't imagine what they are.
Since manually scrolling through 10M rows is not likely... at that point isn't it better to just use an SQL DB rather than a spreadsheet?

SQlite could be enough, and it's comparable to a spreadsheet in that it is well suited to a single-file single-user local-DB scenario, yet can still handle large quantities of data.

No one loves SQL more than me but the effort jump between "paste into a spreadsheet" and "load into SQLite" is at least 100x

Computers are fast, I have gigabytes of RAM, I should be able to look at 10M rows

Currently it cannot. However we find that many millions of row use cases don't actually need those millions of rows to be in the spreadsheet - you just want to be able to process that amount of data. So connect to a SQL database from the python side of things, read in 10 million rows, aggregate them into something succinct and write that to the spreadsheet is to sort of thing we're seeing.
I (mainly) don't want to aggregate them, I want to look at them.

Don't forget "Filter". It's very easy in a spreadsheet to take a huge number of rows and cut them down -- interactively! -- to a subset that's of interest.

Based on what I see I may want to scribble formulas in the margins.

I love love love SQL but it is not a spreadsheet. SQL is great at aggregating down a column but very awkward at aggregating across a row. My SQL prompt doesn't have scatter plots built-in. I can't arbitrarily color rows/columns/cells.

Questions:

This is a platform as a service?

How does the frontend work with the backend, it’s all backend and magic stuff to reflect it on the frontend?

> This is a platform as a service? That is correct

> How does the frontend work with the backend, it’s all backend and magic stuff to reflect it on the frontend?

All the logic is happening the backend, yeah. The Jupyter kernel runs Python, but the Python is processed in a way that it understands spreadsheet expressions like A1, B3:C8 and has the Excel functions available. The frontend reflects the state of the backend at all times and syncs over a websocket. This setup gets you multi user for free.

LibreOffice Calc combined with python's pandas and numpy modules meet all needs I have for spreadsheets, with matplotlib and seaborn for visualization. The Ipython shell is the optimal IDE for this approach IMO. My desktop reference is:

"Python for Data Analysis 2nd ed" (Wes McKinney, 2018)

And it's something that'll literally last forever. Not dependent on a company or pricing.
Somewhat same, but I'm not sure what you need Calc for, I can't remember the last time I deliberately opened a spreadsheet.

On the other hand, while Matplotlib and its ecosystem of add-ons and close imitators is fantastic, it's not friendly to most people, and making it interactive is a massive pain. If you want to wiggle sliders and watch your charts change in real time, you need to use pyplot or something instead.

(Neptyne cofounder here)

All great tools to be sure! I am a huge fan of numpy and pandas especially. For plotting in Neptyne I usually opt for plotly over matplotlib/seaborn. Agreed too on the shell -- that's why we built one into our product.

I am curious though, do you typically share/collaborate on these spreadsheets with others? Do you have a neat way of packaging up the spreadsheet+Python code?

I like the idea: I was actually looking at an open source tool that does something similar: combine spreadsheets with python.

I do have a question: Similar tools tend to fall down after the code grows to a certain size. Modularity, unit tests, etc. become more useful at this point. I'm wondering if Neptyne will (or does?) support these sorts of features?

Edit: Here's a link to the developer docs: https://docs.google.com/document/d/1zLOXBoy-nf05SU3d5sZ7lDDg...

Having multiple code panes (files) is a recurring feature request that hopefully we'll get to at some point. Similarly we have some ideas around testing - automated testing for spreadsheets seems like it could be very useful! You can pip install anything you want though, so having your orgs libraries separately installable is one way to go about it.
Very cool! I constantly struggle trying to do things in spreadsheets that are easy in Python. But I/O makes it annoying to write one-off scripts for a 30 second op. This would solve that pain point!

I would love a Google Sheets integration, since that's where I already live with most of my CSV/Sheets data + it would seamlessly fit into my workflow. If this was a Chrome extension I would have installed it today.

As is, I don't see myself using another spreadsheet app.

Switching tools is hard, that's something we understand. You can import sheets fairly easily of course into Neptyne. Would a two way sync (where a certain region of a Neptyne document and a certain region of a Google Sheet would automatically be kept in sync) make you have another look?
I'd like to try - it's quite a cool idea. But the interface seems broken.

Is that the HN hug of death, or my corporate netowrk playing up?

What exactly are you seeing that is broken? Can you share a screenshot?
Well, my corporate network seems to be blocking websockets to your domain...

So it's definitely not a neptyne problem (it works great on my personal laptop).

Cool product! Thanks for the good work there.