Coiled 2024 in Review#
Hello Users, Teammates, and General Well-Wishers!
It’s that time of year where companies issue year-end summaries, looking back on the past twelve months, acclaiming success, and forecasting incredible growth for the next year. I thought I’d do something similar for Coiled; it’s been quite a year for us.
Tone here will be a bit more grounded/realistic than is typical for founders, which readers of my writing may find familiar. Let’s talk through where we are as a company, what we’ve been doing, and what we need to accomplish.
How did we start 2024?#
Coiled spent its first couple years (2020-2022) as a confused mess (we call this “the beforetimes” or “dark ages” internally). 2023 was the year when we got our shit together and built a decent product. We did this by shutting down all other parts of the company (sales, marketing, HR, …) and focusing on product development, linking customer feedback and product direction directly to engineers. This worked, and by the end of 2023, we had a delightful product and no ability to sell it.
Here is an excerpt from an e-mail to the company summarizing 2023:
Today we have a good product. It’s a product that I think we’re all proud of. Kudos to us 🎉!
We also have customers (not many yet) and a funnel that actually seems to convert eyeballs into users into dollars (although not well enough yet). The company, today, seems to actually work. Given where we started the year I’m impressed. Thank you all for your efforts in this.
So in 2024 our biggest question changed:
[x]
Can we build a great product?[ ] Can we sell this thing? 🤔
In 2024 we shifted our focus to figure out sales and marketing.
Sales#
Where we started#
Advice I got at this time:
Advice: Great job on product. Time to hire a proven sales/marketing leader!
Me: Hell no.
I still felt burnt from the Coiled Dark Ages and was suspicious of Sales/Marketing VP types who had all the answers. My experience was that experienced players come with more confidence than context in our space, and mostly cause noise and trouble. My stance at the time was that early stage startups don’t work like other companies, and we’d be better off figuring out things for ourselves. While intrepid, that thought process mostly didn’t work 🙂
We started 2024 focusing on a self-serve motion.
User acquisition: Content marketing and strategic placement of examples in highly trafficked OSS pages (turns out people click on examples more than on explicit mentions of SaaS products).
User conversion: People would increase usage naturally until they exceeded the free tier and then put in a credit card
This worked, but not well enough.
What we did and how it worked#
In particular we were better at building interest and success than at closing deals, so we decided to hire a couple of sales reps. Here’s a blog post about this at the time: Hiring Sales.
Finding reps that were good at operating in a chaotic environment with high uncertainty was hard. Most sales reps want, you know …
A well-defined thing they can sell
An ideal customer profile
Knowledge about why that customer typically wants to buy it
A defined pricing scheme
We had none of those things. Finding people who are excited about uncertainty is hard but possible. Eventually we found a couple and they started in June. One survived our chaos and today we’re thrilled to have Austin Brown in the family. Austin was previously at FlatFile, and before that an entrepreneur himself with cold brew coffee. (we really value both entrepreneurial experience and experience outside of tech).
Today we sell things. We had to figure a lot of stuff out (for example, see Pivoting away from Usage Based Pricing), and onboarding sales into a product-focused organization was tough, but today the company feels more balanced and general optimism is a lot higher than it has been.
Our typical users / platform customers today fit into a few buckets
A bunch of free users (students, independent contractors, scientists, etc.) who we’ll probably never get money out of (but who we still feel good about serving, as it’s mostly free for us)
Some pay-as-you-go customers paying us ~$1k/month
Small teams paying around $25k-$50k / year
Heavy users paying $100-200k / year
A few larger enterprises paying more
It’s a good mix. We have great customers who give excellent feedback and from whom we’ve learned a great deal. Our customers force us toward success, and we care about making them happy. For the most part I’m proud to think that we’ve achieved that.
What we have to do in 2025#
Today I still worry about sales, but more in a day-to-day operations way, rather than in a “will we ever $@%ing make this work” way. The transition from existential dread to quotidian grind is a delightful change.
There’s still plenty to do to mechanize sales. We spend non-trivial effort educating customers on the value we provide, how to use us well, and on how best to work our way through larger enterprise procurement cycles. This is all hard but straightforward work and I’m confident we have the people in place who can do it.
2025 in sales is about execution, tuning, and eventually expansion. I’d love for us to be in a place where we could hire another AE in 6 months and grow beyond that in 12.
Marketing#
Our marketing for most of 2024 was kinda meh. This is because when we hired sales we slowed down marketing; there was just too much work to onboard and align the new function in the company. New user flow didn’t stop, it just didn’t grow as fast as would have been ideal. We’ve refocused on this for the last couple months and are seeing glimmers of hope.
Generally though, it turns out that marketing is hard, especially today.
I mostly grew Dask’s awareness through four mechanisms:
A personal blog
Twitter
Relationships with other PyData/SciPy core developers
Speaking at Python conferences
That was ten years ago, and the same tricks don’t seem to work today. The world has become a lot noisier since.
We’re trying lots of things and generally getting smarter about marketing, but this is still a big unknown for us. Figuring this out here is a key objective for us for 2025.
Dask#
Where we started#
Two years ago Dask was well-loved but had stability issues. It would break from time to time, which eroded confidence among larger users. Those were mostly fixed in 2023.
In 2024, Dask was stable, but still difficult to use at large scale. This isn’t unusual, ask anyone who has driven Spark at the 10+TiB scale and you’ll hear similar stories. Still though, as a company we target lots of small groups without deep distributed computing expertise. We want to stretch the boundaries of allowing increasingly novice users to attempt increasingly complex workloads. In 2024 we wanted to make Dask workloads smooth at the 10-100 TiB scale.
This is especially hard in the Dask/PyData space because performance doesn’t just depend on Dask, but rather on the interplay of dozens of different libraries. We weren’t developing Dask, we had to develop the ecosystem.
What we did#
To address this we built, ran, and optimized large-scale benchmark suites that targeted full lifecycle workloads.
Dataframes#
We started with TPC-H, a standard benchmark suite for tabular/dataframe/SQL computations, and compared ourselves to DuckDB, Polars, and Spark between scales of 10 GiB to 10 TiB. Over the course of several months and with many exciting new features (query optimization, parquet rewrite, shuffle rewrite, copy-on-write pandas memory semantics) we climbed to a point where Dask Dataframe was on-par across a variety of scales and exceeding the others at large scale. For more information, see DataFrames at Scale Comparison: TPC-H.
This is great, and our dataframe customers are generally much happier on the new system today. We also spend far less time supporting them. Dask dataframe today “just works” far more often than it used to and is technically well positioned to displace Spark.
However, we didn’t do a good job marketing this success (the dataframe space is noisy right now, and we were distracted by integrating the Sales function) and so we missed an opportunity here. This might be something for us to come back to in 2025.
We had a technical win here, but didn’t convert that into a business win.
Geo#
After wrapping up the dataframe technical effort the team switched to geospatial workloads (a non-trivial fraction of our current customer base deals with geospatial data). Unfortunately, there was no standard benchmark in this space, so we started by building one. Here are some blogs on the subject:
This technical work is ongoing and includes work across Dask, Xarray, Zarr, GeoPandas, S3FS, and other libraries. We’ve climbed from “works reliably on 10 GiB” to “works reliably on 100 GiB with improvements on 1 TiB” but still have more work to do as we climb to the 10-100 TiB scale.
Geo is a fun place for us at our current stage; it’s a good place for us to figure ourselves out. Geo is a tighter community where word travels fast, and without as much noise. It’s been a fun vertical for the team to focus on. It’s still early, but uptake and commercials look good.
What we need to do in 2025#
The Dask team at Coiled is delivering broad technical wins fairly reliably. This is good for everyone. Repeating for Geo what we did for Dataframes is a good focus for the first couple quarters of the year.
However, we need to do a better job of connecting this technical success into commercial success. For Geo we’re being more mindful of this than we were for dataframes.
I hope that once the geo effort is feeling complete we can return to the topic of dataframes and stride into that conflict more purposefully, and with more maturity.
Cloud Platform#
The product is good. Usage is up. Service is stable. People have a great time.
We’re thinking about where to go from here.
Usage is up#
Here’s a chart showing usage, grouped by organization, over the last twelve months (each block is a different org).
More importantly though, we now charge for more than just usage (see Pivoting away from Usage Based Pricing) and so revenue is no longer tied to this chart (it’s quite a bit better).
What’s next?#
Coiled, originally conceived as a Dask SaaS product, accidentally became a great system to run general purpose computing tasks. It turns out that to launch Dask clusters, you first need to figure out how to launch general Python jobs in the cloud, and we did that well, arguably better than many cloud services.
This presents some open opportunities we’re considering:
More Dask UX
More charts, more automated warnings, automated hardware selection, etc..
Jupyter Notebooks
Almost every Jupyter Notebook startup that has gone down this route has failed (excepting Hex?), but who knows, we might fare better. The number of users and institutions interested in this feature (despite the flood of startups offering it) is unnervingly high.
Batch jobs
We recently released a feature letting people run arbitrary programs (not just Dask or even Python) on Coiled, competing with tools like AWS/Azure Batch. This took a couple days to put together and has had surprisingly positive response in a short time.
Prefect serverless
Prefect’s serverless push work pool ends up being a surprisingly nice match for Coiled and would be of use to a non-trivial fraction of our current customers.
Probably we could do something with Dagster/Airflow as well.
I’m torn between focusing on fine-tuning our already strong Dask experience, or broadening out to “general-purpose easy-to-use large-scale computing”. Usually I like solving focused problems (like Dask), and view the general purpose problem to be more the purview of the clouds themselves. However, after engaging with their offerings (AWS Batch, Lambda, Sagemaker, etc.) my sense is that they’re not serving the Python data community well, mostly because of a developer experience that doesn’t fit well with the taste of most data developers. (See post Cloud Computing is Broken)
The way we answer this question is likely by observing users. Today our users use Coiled for all sorts of things we didn’t expect, including:
Running geophysical inversion codes to detect where to mine for minerals
Starting up Jupyter notebooks for interactive GPU computation
Augmenting workflow managers like Prefect and Dagster with large machines
Bulk conversion of millions of geotiff images
Benchmarking GPU codes on all possible GPU types available on the cloud
It ends up being easier to misuse Coiled beyond its intended purpose than to use the traditional tools created by the commercial clouds. This atypical usage isn’t currently enough of our revenue to pivot the company today, but it’s an enticing possibility for the future, and one that we’ll likely explore with baby steps in 2025.
Funding#
Ever since the Dark Ages we’ve run a lean shop and so our runway is both generous and growing now that we’ve unlocked sales. I have no interest today in taking on additional outside capital.
Internally though, we should probably start to hire. I think that we have a better idea of how to effectively put our existing capital to use and it’s time to (very gently) push on the gas.
Personal#
In my e-mail to the company at the end of 2023 I wrote the following:
Personally I find this job to be challenging (I don’t think of myself as being naturally suited to this role) but there have been times in the last few months when I’ve actually found myself enjoying it. Thank you all for that.
The trend away from “Leading a startup feels like chewing glass” and towards “I could maybe enjoy this job some day” has continued. I find myself significantly more calm today than I was a year ago. Much of this has to do with everyone in the company growing themselves and learning how to work together more effectively.
Working with smart people who share a common mission makes all the difference.
Summary#
We’re doing ok. In 2024 we unblocked sales and accumulated enough additional exposure to user pain that we have some ideas that might be good.
In 2025 if all we do is execute and tune and mechanize then that’ll be fine. However, I’m excited about increasing creativity, especially in marketing and a broadening of our product offering.