Convex's avatar
Convex
5 months ago

$1M Later and Conduit is STILL Rocking Convex

Convex wasn't even at version 1.0 when Punn Kam, known around the team as Pun, first touched it. He was 48 hours out from a demo at TreeHacks in 2023, with no idea what to build and a team waiting on him. Two years and a Y Combinator batch later, his company Conduit still runs on the same backend he picked in that hackathon room. The hackathon win was the smallest part of the story. What mattered was a string of decisions that kept paying off as the company scaled.

From TreeHacks to production

Before that weekend, Pun had only worked with raw, unmanaged infrastructure. TreeHacks had sponsored tracks that rewarded projects built with specific tools. His team had no clear idea yet of what to build, so they picked up Convex on a hunch that it'd let them move faster. It did, almost immediately. "What really convinced me was the real-time updates," Pun says. "That was an immediate eureka moment. We didn't have to refresh every single time to see the UI state change. Convex just automatically updated that." They built all of it before any AI coding tools existed to help write it.

The team built a tool for property managers to track lease payments and won the hackathon's best fintech prize. They missed the prize for the most complex hack, which went to a team doing high-speed real-time data ingestion (something Pun still brings up as impressive). He kept using Convex for side projects afterward, just because he liked building with it. By the time it came to build Conduit for real, the backend decision had effectively already been made.

Why the team stuck with Convex

That didn't mean the team skipped due diligence. Conduit is a chat-heavy product: lots of conversations, notifications, and triggers. The team looked seriously at alternatives before committing. Building the same thing on Postgres would've meant frequent polling to approximate what Convex gave them by default. "We should make some conscious decisions on architecture," Pun says. "We were like, you know what, Convex is working. Let's just continue with it."

Client polling a databaseClient polling a database

What kept them there was compounding developer experience, not inertia. The team got into a rhythm of shipping new features and fixes roughly every hour, a cadence that wouldn't have been realistic on a less integrated stack.

Early edge cases, and a direct line to the team

Being an early, aggressive adopter meant hitting problems nobody had documented yet. Conduit was experimenting with crypto workloads early on and ran into what the team calls the Node-to-V8 chasm. These were environment-hopping issues that were painful before anyone, Conduit included, had worked out a clean pattern for them. As someone on the Convex side put it: "There were many things we encountered where you'd ask how to do X on Convex and we'd say we didn't know, because you were the first to try." Conduit's early friction became part of how the product's best practices got written.

What made that bearable was direct access to the people building the platform. Convex engineer Ian became, in Pun's telling, "the teacher." Ping him in Slack with an edge case and he'd answer in full depth, hopping on a call when writing it out wasn't enough. Convex CEO Jamie Turner answered messages in Discord himself, which Pun still finds remarkable for a company at that stage.

The collaboration went further than messaging, too. Early on, the two teams sat in a Convex conference room and whiteboarded how to make specific workloads work, jumping on Zoom calls when they needed to. Several of those sessions turned into standard parts of the product. Workpool is one of them, the component Convex now ships for bounded, prioritized background job queues, and Pun calls it "huge" for what it let Conduit build afterward.

What Convex's constraints taught the team

Some of what looked like a limitation turned into a lesson. Convex doesn't give you a cheap way to count every document in a table, by design, because a naive COUNT means scanning everything that matches. Conduit ran into that early. Needing a simple counter, the team had to build a more efficient way to get the number instead of reaching for the obvious one. "If we'd done it on Postgres we'd have written inefficient queries," Pun says. "That taught us backend engineering the right way."

Counting documents two waysCounting documents two ways

The same thing shows up with large result sets. Convex pushes you toward explicit, paginated queries rather than open-ended ones, which felt like friction at first and became a habit that scaled with the team.

Scaling the team without slowing down

Onboarding used to be a lot harder than it is now. Early on, there wasn't a clean way to share environment variables across a growing team. There also weren't established patterns yet for how new engineers should think about a serverless backend versus the app-server model most of them already knew.

That's changed. Conduit has brought on four new engineers in the past several months, and each one has gone from a blank laptop to a working local environment in about two hours: sign in, create an account, and the dev environment is there. The Convex dashboard does a lot of that work. It makes the split between dev and production visible, so nobody has to go back and forth with core engineering to figure out where they are. What still takes real ramp-up is Convex-specific reasoning, mainly learning to write queries and think about pagination in a way that doesn't map onto prior Postgres experience.

Where AI coding fits in

The team's engineering workflow has shifted with newer models, and there's a direct line from Convex's constraints to how well AI-generated code turns out. Conduit's codebase has consistent patterns, forced early on by Convex's own limits. So when an AI assistant is asked to build something, it tends to pattern-match against those efficient structures instead of inventing something new. "Best practices in the codebase, forced by the Convex pattern, translate into AI-generated code," Pun says. "Otherwise, a huge query could be repeated 20 times because AI pattern-matches bad practices."

The constraint that felt limiting in year one turned into an advantage once AI tools entered the workflow. There was a well-defined pattern for the model to imitate, instead of a blank slate it could fill in badly.

Failures should stay local

As the team has grown, Pun has become more deliberate about the tradeoff between optimistic and pessimistic concurrency patterns, specifically around keeping failures localized. A high-risk change with non-local effects can drag down the whole team's productivity, and not in a way that's linear with team size. Open-ended queries are the clearest example. At a small scale they're harmless. But as a team grows, letting every query stay fully open turns into a combinatorial consistency problem, because every new feature has to reason about everything else that might be reading the same data. The early limits that once felt like friction are what keep that problem from compounding as Conduit adds people.

Convex hasn't finished this work either, and Pun is candid about that. Incremental compilation across components, for instance, is still a gap, and some codebases and team sizes will keep hitting friction until it's addressed. But the general direction, trading a little early flexibility for a lot of later compositional power, is one he's watched pay off in practice.

Building the same kind of platform, on purpose

That tradeoff shows up again in how Pun talks about Conduit's own product. Conduit is building a horizontal platform meant to support any conversational workflow. The team is deliberately encoding best practices as constraints rather than leaving everything fully flexible, so non-technical users can build on it without accidentally creating something nobody can maintain. Pun sees a direct parallel to how Convex approached its own platform: opinionated by design, not flexible for its own sake.

All gas, no breakages

Convex is the reactive backend platform that keeps up with you and your agents. Database, functions, workflow, sync, search, file storage, and more. All TypeScript, zero glue.

Get started