// Careers · 0 open roles, 1 open door

Build the future of errorhandling. Quietly, and very small.

Catch is a small, remote-friendly team building one tiny SDK for in-app feedback, surveys, and crash reports — 4kb gzipped, zero runtime deps, shipped straight to main. No roles are open today. We're telling you anyway, because the people we want rarely arrive on a job posting's schedule. Drop us a note at @catch.dev.

Remote-friendly Tiny team, real ownership Ship straight to main
careers.ts
1// careers · current state
2value'remote-first'
3cadence'ship to main'
4scope'own it end-to-end'
5openRoles0
team · 12+ countrieshiring · paused
// Why this work matters

Most of the web ships blind.

A button doesn't fire. A checkout silently throws. A user shrugs and leaves — and no one on the team ever finds out why.

That's the default state of most software. Errors happen in production, on devices you'll never touch, and the signal almost never makes it home. Teams learn about it from a one-star review, a churned account, or never. We think that's fixable — and that the fix should be small. Not another heavyweight agent that bloats the bundle it's meant to protect, but one tiny SDK that captures feedback, surveys, and crashes, wires them together, and gets out of the way.

Building that well is unglamorous, careful work: shaving kilobytes, symbolicating stack traces, making a Shadow-DOM widget that never collides with someone else's CSS. If that kind of craft sounds satisfying rather than tedious, you'll recognize yourself in the rest of this page.

// How we work

Small team. Strong opinions. Boring tech.

We're optimizing for shipping product, not process. These aren't aspirations — they're how the repo actually runs today.

01 · Ship to main

Ship to main.

Work lands directly on main behind an automated test gate — no approval queues, no theater. You'll see your code in staging minutes after you push, and you own it end to end.

02 · Boring on purpose

Boring on purpose.

We default to mature, proven tech over the new and shiny: UIKit over SwiftUI, fetch over axios, a 100-line view over a framework. Optimize for the next reader.

03 · Dependency-light

Dependency-light.

Every dependency is a liability we'd force on our users. The SDK is 4kb gzipped with zero runtime deps, and we keep it that way on purpose.

04 · Real ownership

Real ownership.

A tiny team means you own whole surfaces — SDK, backend, dashboard — not a sliver of a ticket queue. Scope is yours; so is the outcome.

05 · Honest by default

Honest by default.

We don't fabricate metrics, fake testimonials, or ship dark patterns. Our legal pages are drafted from verified facts. If a claim isn't true, it doesn't ship.

06 · Security-first

Security-first, multi-tenant.

Tenant isolation is enforced at compile time — a query that forgets the tenant filter is a type error. The security of what we've built is never the thing we cut.

// What we offer

Honest perks. No ping-pong-table promises.

We're early-stage and we'd rather under-promise. Here's what's genuinely on the table today — and what we won't pretend to offer yet.

Remote-friendly

Work from wherever you do your best thinking. We already ship across 12+ countries.

A genuinely small team

Few enough people that your work is load-bearing and visible, and your judgment is trusted from day one.

Whole-surface ownership

Pick up the backend, the Nuxt dashboard, or a native SDK and own it — not a sliver of it.

Ship-to-main velocity

Push to main, the test gate runs, staging deploys. Feedback loops measured in minutes, not sprints.

A codebase that respects you

Tenant-isolation guards in the type system, tests as the safety net, and a hard rule against clever code. You'll enjoy reading it.

Direct line to the founder

No layers between you and the person setting direction. Disagree, propose, decide.

// We don't list benefits we don't have yet. Equity, formal leave, and the rest get built as we grow — ask us where things stand. Real comp happens in a real conversation, not an inflated range posted here.

// How we hire

Four steps. No take-home gauntlet.

We respect your time the way we respect bundle size — we keep it small. No eight-round loops, no free-weekend projects. When a role opens that matches an introduction we've kept, here's the whole path.

1

You introduce yourself

// async

Send a note via the help center: what you'd want to own and a link or two to something you've built. No cover-letter theater.

2

A human reads it

// ~2 days

Every introduction gets read by someone on the team, not a filter. If there's a spark, we reply to start a conversation.

3

A real conversation

// ~30 min

A call about the work, the trade-offs, and whether the fit is real both ways — how we think about tiny SDKs, tenant isolation, and shipping to main. You're interviewing us too.

4

Build something small, together

// scoped + paid

A short, paid, realistic problem from our actual domain — not a leetcode marathon. The best signal for everyone, then a clear yes or no, fast. We don't ghost.

No roles open right now.

We don't post jobs to look busy. We hire when a real need appears and the right person is in front of us — usually in that order. When the work and the person line up, a role appears here, and the people who introduced themselves early are the first we call.

// roles.open === 0 · introductions.open === true · reviewed monthly

Or see what we're shipping in the changelog.

// The ground we stand on

Small team. One wire contract. Everywhere your users are.

No invented metrics, no logo wall we can't back up — just the true footprint of what a small team has already shipped.

2024
// founded
12+
// countries
99.99%
// uptime
4kb
// gzipped, zero deps
// ships everywhere — one wire contract, every platform
// In their words (placeholder)

This space is for whoever's next.

placeholder
"I joined when there were no open roles. I just sent a note about a Shadow-DOM bug that had been bugging me — and ended up owning the whole web SDK. [ Your story goes here. ] We'd rather leave this blank than fake it."
[ Your name ][ Role · catch.dev ]

// placeholder — we don't fake testimonials. The first real one is yours to write.

// Last word

Don't wait for a
job posting.

If you read this far, you're probably our kind of person. Tell us what you'd want to build — and why a 4kb SDK that catches everything is worth your next few years. We read every note that comes in.

// a real human replies · no auto-rejections · no role required