Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Quadratic – Open-Source Spreadsheet with Python, AI (WASM and WebGL) (quadratichq.com)
224 points by davidkircos on April 5, 2023 | hide | past | favorite | 68 comments
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!




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)


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.


Back in 2014 I was contracted to do spreadsheet devops when a similar spreadsheet went rogue and cost the company some 10m dollars: It stopped updating exchange rates because yahoo finance did something with their API.


Wouldn't this same problem arise if you used a "real" programming language and not a spreadsheet?


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.


This is for the room. You understand all of this stuff.

> Our goal isn't to replace production ETL pipelines etc.

Why not? The OP is conflating accidental complexity in current spreadsheet design, there is no reason that you couldn't get a graph of code. Everything becomes production, or mission critical at some point. There is no difference. Production ETL pipelines exist because spreadsheets have historically only run a single machine, hence the whole "big data" definition.

I am absolutely sure you are familiar with https://en.wikipedia.org/wiki/Felienne_Hermans and ZUIs, your work is the intersection of both.

I kinda hope you are pandering to the HN gestalt against spreadsheets. But yes, please do introduce fork/merge/diff (you already have-to to support multiple simultaneous users). As well as property testing.

Aside, I am kinda losing my _, that you pulled all of this off. I absolutely love it. Amazing, hopefully we have a future to thank you.


Is there a way to view the formula / python code alongside the cells? As in have it permanently visible? So many spreadsheet operations could, maybe should, be tabular operations.


History suggests that successful tools find use outside their conceived niche, so it is a very valid concern.


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.


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.


I like this idea.


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


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.


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.


thank god you were joking, you had me in the first half ngl


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?


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.


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.


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

I looked them up but Google wasn't forthcoming about what made them be "done right". Can you explain what they brought?


They are multi-dimensional spreadsheets where one has to instantiate and name each possible column/row, and then the formulae are set aside in a separate pane, and it is possible to re-arrange things as desired.


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.


I can’t imagine you can really charge less, but is there a huge market for an excel substitute that costs more than excel and doesn’t interoperate? I understand the reasons why this is cooler/better, but IME when people want to step up from excel it’s either because they have some use case that fits a BI tool or they are going to hire a dev. (Real problem is that they never realize Excel isn’t enough until it’s the backbone of their company… but…)

Best of luck though, this looks super cool!


> Spreadsheets are broken, and a horrible user experience for technical users.

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


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.)


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.


I'm not sure what you mean by not having it, maybe you mean something different than what I'd usually mean -- on platforms I use it (Android), Google Sheets definitely has pinch to zoom (and it's been awhile since I've used Excel but I was pretty sure it did too -- the docs confirm it indeed does: https://support.microsoft.com/en-us/office/excel-for-android...).


have you tried pinching on quadratic? it's smooth as butter/Figma, not at all like on gsheets


I have not but I honestly don't find it to bother me on gsheets whatsoever (I've never thought twice about it until now. Data entry is way way more annoying on gsheets than navigating is).


Same for the Google Sheets app on iOS.


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.


Yup, working on duckdb-wasm support. Stay tuned!


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!


why did you stop? any concerns on the market demand?


You can read some of the reasons I stopped working on it here https://hackernoon.com/introducing-grid-studio-a-spreadsheet... (not parent)


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?


Yes the bundle is huge, we have made no effort yet to optimize it. Feel free to create a PR :)

Here is how we manage cell dependencies https://github.com/quadratichq/quadratic/blob/main/src/grid/...


Thanks!


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?


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!


Any thoughts on creating a python API to allow data input/output to the locally run instance?


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\"]."}


Infinite canvas looks like a mistake. Is there a way to use sheets?


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.


What about just linking to define-able sections of the infinite grid? Just need the functionality to "jump" to other center point location+zoom level. Maybe also with the option to hide cells (by painting them all white) to create definite borders.


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.


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?


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/


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.


Do users have to bring an OpenAI license key?


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.


1000% create an issue on the repo https://github.com/quadratichq/quadratic/issues


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?


Uh oh can it be a self-hosted Google sheets replacement?! Screenshots look really promising!


This runs in the browser so there isn't really anything to host, it's just a static page.


Then I have to double check their documentation how they organize concurrent editing.


It looks great. I think you should publish a Tauri / Electron desktop version.


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.


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?


i love spreadsheets. i'm also a seed investor in quadratic!


i saw a very early version of Quadratic and was impressed then, so to see what David and team have done in the months since is awesome! congrats on the launch :)


Why do I need an account for a demo?

Where are the data saved? Can I use my own editor for writing code?

What is the business-model?


Any chance you have a docker-compose.yml you can add to your repository? ;-)

Great concept! Congrats on your launch!


What's the business model? Can I configure SSO on the open source offering?


This is extremely cool. Going to give it a spin.


Any chance this can run offline in a standalone way, just like excel? This seems really cool, but asking the PM or marketing to run NPM commands to build and open a *.grid file is a no-go.


Yes it can. It can also run as a standalone app via Electron. We just haven't published builds yet.


This is absolutely awesome, congrats!


Can it load data via http? (edit: it can)

Nice!




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: