top | item 35456509

Show HN: Quadratic – Open-Source Spreadsheet with Python, AI (WASM and WebGL)

224 points| davidkircos | 3 years ago |quadratichq.com | reply

Hi, I am David Kircos. The Founder of Quadratic (https://QuadraticHQ.com), an open-source spreadsheet application that supports Python, SQL (coming soon), AI Prompts, and classic Formulas.

Unlike other spreadsheets, Quadratic has an infinite canvas (like Figma). As a result, you can pinch and zoom to navigate large data sets, and everything renders smoothly at 60fps.

Our vision is to build a place where your team can collaborate on data analysis. You can write Python, AI Prompts, and Formulas in one spreadsheet feeding each other data and updating automatically.

Quadratic is built using WebGL and Rust WASM. To render a large grid of cells smoothly, we tile the spreadsheet similar to google maps. If you are interested in the technical details, check us out on GitHub (https://github.com/quadratichq/quadratic/)

You can use AI to help you write Python and then run the code directly in Quadratic. Then, we feed the result back to the AI model so it can follow along, help you debug, and modify your existing code.

AI can also be used to directly generate data onto the sheet with prompts. It knows the context of what's on the sheet and how the data it's inserting fits in. Try it out.

SQL is coming soon... stay tuned!

68 comments

order
[+] probablypower|3 years ago|reply
This looks cool and is well made, but god do I hope my company does not let this become common place. We already struggle with company logic being buried in spreadsheets, brains and walled garden software. The last thing we need is to encourage this modern business anti-pattern of experts implementing their work in byzantine, opaque, impenetrable gardens of logic-data spaghetti bowls.

I'll buy into this in a second, however, if you find a way to defragment the logical mess of a spreadsheet and turn it back into functional transformations of tabular data, such that we can implement it into stream processes or ETL pipelines. Otherwise you're just letting the next generation of corporate workers fall into the same trap of embedding their business logic lazily into a digital grid cemetery that'll end up wedged into the onedrive file pile.

(Apologise if this comes across as cynical, from an implementation perspective you've done an amazing job, I just hate spreadsheets)

[+] shaftway|3 years ago|reply
Back in the mid aughties (circa 2006) I was doing risk analysis at a big bank. The kind of international bank that you read about on a regular basis in the news. Our team supported synthetic bond-backed collateral debt obligations, and this was all principal finance, so the bank investing its own money. We didn't have clients that we had to support. But we did have to generate our risk profile each night and FTP it to the central server.

And it was all done in a Excel spreadsheet.

Each night a bunch of traders would each kick off scripts in Excel. The script would download the new ratings (S&P, Fitch, and Moodys) for each bond, download the new LIBOR curves, update the spreadsheet, save a copy (y'know, for backup purposes and history), then generate an XML file, shell out to the risk tool provided by the quants, then parse the XML result, load it back into the spreadsheet, let it crunch and then FTP it to the central risk server.

Each deal was a separate spreadsheet, and there were about 30 of these deals. Some of the runs would take ~20 hours, so they were basically always running, but most of them took about an hour. The sheets were a spaghetti mess of formulas, often with errors or inexplicably different formulas.

I also am cynical, and I can't imaging supporting something with even more programming ability.

[+] davidkircos|3 years ago|reply
Yeah, it's a valid point.

Our goal isn't to replace production ETL pipelines etc. We are building a place where you can quickly do an ad hoc analysis, share it with your whole team, and iterate on it.

If it's small and works great you're all set. If your work out grows Quadratic just take the Python and SQL code from Quadratic, modify it slightly, and deploy it on more robust infra.

[+] swyx|3 years ago|reply
i hear you but also it wouldnt be too too hard to consume data from your source of choice and to expose data for consumption elsewhere. a fully reactive spreadsheet is in some ways a lot better for a smooth upgrade path from “just trying things out” to “ok it’s in production now” - the holy grail.
[+] mkl|3 years ago|reply
This looks quite interesting. It seems strange to force all the tables into the same grid, so the column widths and row heights interfere with each other. If tables had their own grids and lived on a gridless canvas (or multiple canvases, or whatever), they could have whatever formatting they liked without interference, and cell references would automatically be more meaningful as they'd refer to the table.
[+] el_don_almighty|3 years ago|reply
The nerd in me loves seeing tools like this and the amazing integration of coding tools for manipulating data

The enterprise manager of complex financial and equipment excel models worries about managing those code bases if they are spread out all over God's creation, hidden in a thousand cells without change management or access control...

Is there a single code/formula base location for everything? (I admit, I have only been playing with it for a little bit...)

How do I manage who gets the 'user version' and who gets to play with the 'creator' version?

We always use the first worksheet as a version control chart tracking recent changes and modifications. It's rudimentary, but surprisingly effective over time now that OneDrive desperately undermines these controls with history management

[+] davidkircos|3 years ago|reply
We are working towards having your code stored in a way where you can manage it with git.

Access controls will allow you to set who can edit and who can view. We also want to have a mode where you can edit, but only in your own fork.

[+] carom|3 years ago|reply
Would an adjustable frame rate be possible? I have a 240hz monitor and would like to match the FPS to remain competitive.

Jokes aside, this is legitimately awesome. I have been dreaming about an application like this ever since I found out Excel can't handle more than 1 million rows. I'm glad spreadsheets are getting a fresh rewrite with modern technologies.

[+] swyx|3 years ago|reply
thank god you were joking, you had me in the first half ngl
[+] adamdill|3 years ago|reply
Spreadsheets are broken, and a horrible user experience for technical users.

I'm excited to see work in this space, because it's such a great lever for continued productivity.

how do you see your open source model making money and continuing to scale feature development?

[+] Andrew_nenakhov|3 years ago|reply
Spreadsheets are not broken. Spreadsheets are probably the most impactful and accessible tool that boosts productivity for many users in very many areas, from commerce to finance to statistics to automation to sales.
[+] WillAdams|3 years ago|reply
No, the prevailing implementations are mapped to the grids of ledger sheets which the accountants who were the initial market were accustomed to. (A vivid memory from when I was young was the accountant who pulled up to the computer store I was at and said, "I want a Visicalc" --- after a bit of back-and-forth w/ the salesman, he loaded up his Trans Am w/ pretty much one of everything in the store (Apple ][, 80 column card, dual floppies, wide printer, &c.)

Look up Lotus Improv and Javelin and Quantrix for examples of spreadsheets done right.

[+] davidkircos|3 years ago|reply
We plan on charging organizations using Quadratic for collaboration. Our pricing will be low so it's affordable to get seats for the whole team. Think <$15 / user / month.
[+] deely3|3 years ago|reply
> Spreadsheets are broken, and a horrible user experience for technical users.

How so? Could you please elaborate, whats wrong with technical users and spreadsheets?

[+] JulianWasTaken|3 years ago|reply
Just a marketing note, as I haven't tried to use this yet, but starting the feature list on the page with "pinch to zoom" striked me as pretty odd. Sheets (Google or Excel) already do this, and even if they didn't I don't personally find it to be a killer feature anyhow. I know the point is pinch to zoom + infinite sheet, but the pinch to zoom doesn't strike me as interesting there from a marketing perspective.

To pick something else -- I again haven't used it yet and might not be in the target market as I don't find myself saying "I wish my spreadsheets had more functionality" -- but if I were, I'd probably lead with more of the flexibility or collaboration functionality (e.g. "write Python not VB", even though Google Sheets lets you write JS at this point.)

[+] davidkircos|3 years ago|reply
Good point - we will move things around on the marketing site.

Google Sheets does not have pinch to zoom. Maybe Excel does on some platforms, it doesn't on 365. The only other spreadsheet I know with decent pinch to zoom support is Numbers on mac.

[+] jarpineh|3 years ago|reply
This looks really interesting and useful to start looking into data and doing ad hoc processing. It reminds me of https://natto.dev/

Without knowing anything about your architecture I wonder if you could support Duck DB WASM as a data source and SQL engine. Also, since there’s Python there you could conceivably bring Jupyter into the mix. Shared runtime (or at least a connection) and data space within browser sounds like a powerful combination.

[+] davidkircos|3 years ago|reply
Yup, working on duckdb-wasm support. Stay tuned!
[+] hyuuu|3 years ago|reply
hah i tried to build this myself, I think there is a huge market to be able to connect multiple data sources + proper programming language support logic instead of vbscript/excel formula. Did the user interviews as well, I saw a lot of real world tangible use cases can be solved with this. Congrats on your launch!
[+] swyx|3 years ago|reply
why did you stop? any concerns on the market demand?
[+] nhatcher|3 years ago|reply
Hey David, I just tried it out and looks great! Congratulations on a great product! Colour me impressed.

There are a million things in my head. Let me just mention two:

* When you are sending close to 20Mb of data compress it, it's going to make a huge difference in loading times. * I think, and I might be very wrong, but I think that when you are looking at a spreadsheet that looks like Excel you have certain expectations about the the UX. How to insert formulas, the way you extend content from some cells to others, etc

One question, what algorithm are you using to evaluate the dependencies? Could you point me to the source?

[+] knewter|3 years ago|reply
This looks great, and I'm always eager for competition for Google sheets and friends. Supporting python directly makes it seem great for a massive variety of use cases, and python is incredibly accessible.

Connecting this up to databases seems like it would provide a great deal more value - excited to see that come to fruition.

Additionally, from the demo video, I have to say the performance is impressive. I haven't seen a similar product yet from that respect - curious if this is due to my ignorance or your ingenuity.

At any rate, congratulations!

What are some of the useful things you've used it for recently?

[+] davidkircos|3 years ago|reply
We do many of our company operations dashboards in Quadratic.

Directly using SQL would make this even easier.

We are also working on support for popular Python charting libraries like MatPlotLib and Plotly!

[+] timmit|3 years ago|reply
Thanks for sharing, it is an interesting tool.

I was quite surprised that the AI feature is free for everyone's trial, I believe it is quite expensive.

The payload for consuming the GPT-4 is interesting as well, there are one 1 out of 7 messages were from users, the first 6 are all system promots.

Looks like it is an example for users to understand how to use the ai assitant.

{"role":"system","content":"For example if a user asks for a list of 3 months starting at Jan 2020, you reply [\"Jan 2020\", \"Feb 2020\", \"Mar 2020\"]."}

[+] marwis|3 years ago|reply
Infinite canvas looks like a mistake. Is there a way to use sheets?
[+] davidkircos|3 years ago|reply
Right now there is only one sheet.

We are working on support for multiple sheets (both infinite or finite) and support for Python files to enable reusability of code across the sheets.

[+] HactarCE|3 years ago|reply
Super excited with where Quadratic is going! I've been long frustrated that performance and reliability of web apps is so awful, and the fact that Quadratic emphasizes both of those as core product features is a significant reason I'm working there now as the main Rust dev.

Currently the classic Excel-style formulas are implemented in Rust, and we're planning on writing the spreadsheet core + multiplayer server in Rust as well.

[+] swyx|3 years ago|reply
this is super HN bait - webgl, rust, wasm, figma, AI in spreadsheet!

congrats on your launch - wondering how youre thinking about the UX of AI integration in spreadsheets?

[+] dsnr|3 years ago|reply
The Figma reference strikes me as odd. You can implement an infinite canvas in plain html/css, and there’s a gazillion tools that have this feature. I get the feeling the text is written for search engines rather than HN.

On a related note, there’s no mention that the product is built using Pixi.JS, an open source 2d graphics engine.

https://pixijs.com/

[+] davidkircos|3 years ago|reply
With the first iteration of AI in Quadratic, the UI/UX is a chatbot that knows the context of your document, your code, the output, and our documentation.

This context makes it easy to use GPT to write, edit, and debug your code to get the desired result faster.

We are working on inline code completions and experimenting with whole document generation.

Imagine a spreadsheet that generates all you need for your analysis, with each step being verifiable in code, SQL, and formulas. Then being able to share it with your team with a link.

[+] zokier|3 years ago|reply
Neat. From tech point of view, one improvement I'd love to see is more named ranges/tables etc so that the python<->grid interaction doesn't need to rely only on coordinates. I'd imagine it'd also make sense for stuff like sql queries and dataframes to have column names mapped somehow sensibly into the datamodel.
[+] tritiy|3 years ago|reply
I always like to view pricing information first. It usually tells me the scope of the service and roughly gives me an idea if the service will make it or not.

However, there is no pricing information on the page. Where is this information?

[+] Andrew_nenakhov|3 years ago|reply
Uh oh can it be a self-hosted Google sheets replacement?! Screenshots look really promising!
[+] drexlspivey|3 years ago|reply
This runs in the browser so there isn't really anything to host, it's just a static page.
[+] marcus_yallow|3 years ago|reply
It looks great. I think you should publish a Tauri / Electron desktop version.
[+] jonathaneunice|3 years ago|reply
Love the approach. Direct Pandas DataFrames access/manipulation rocks.

Accessibility, however, needs work. Must be a way to zoom on the inspector/code pane for those of us with less than stellar vision.

[+] m00nsome|3 years ago|reply
We tried to use a canvas based control for rendering data too, but the text rendering qualities of canvas were just too bad at the time. Do you have any plans to overcome that?