Loading...
Built for HVAC, plumbing, electrical, and recurring service teams.
Loading...
Thorbis hires curious, mission-driven people who love solving real-world problems for dispatchers, technicians, and operators. We work fast, ship thoughtfully, and measure impact by the outcomes our customers achieve.
25+
Team Members
100%
Remote-First
4
Quarterly Onsites
150+
Years Combined Experience
We believe great work comes from happy, healthy, and supported people.
These aren't guidelines we aspire to — they're the actual constraints the codebase enforces. If you join Thorbis, you'll work this way from day one.
The target is 85%+ server-rendered pages. No useEffect data fetching, no React Query, no client-side loading spinners where a Server Component will do. We use React.cache() to deduplicate queries across components so the same database call never runs twice per render.
Target: 85%+ Server ComponentsEvery import comes from the specific subpath: @thorbis/ui/button, not @thorbis/ui. The lint rules enforce it. Barrel imports pull in code the bundler can't tree-shake — on a server-rendered Next.js app that shows up as cold start latency.
import { Button } from '@thorbis/ui/button'51+ Zustand stores in the web app cover everything from filters and selection state to real-time GPS position. React Context is off-limits for shared state — it causes full subtree re-renders and makes debugging state transitions unnecessarily hard.
51+ stores in apps/web/src/lib/stores/Migration → RLS policy update → TypeScript type regen → security advisors → code update → documentation. Skipping any step creates inconsistency between the schema, the security model, and the TypeScript types. The sequence is non-negotiable.
Migration → RLS → types → advisors → codeWe're a small team shipping real software to contractors who depend on it every day. Here's what that looks like in practice.
We're spread across time zones so async communication is the norm, not the exception. You write clearly, share context proactively, and respect other people's focused work time. Meetings are short and intentional — most decisions happen in written threads.
Features go from spec to production in days, not quarters. We keep scope tight, use feature flags to decouple deploy from release, and iterate on real usage data. You'll see your work in the hands of contractors within a week of merging.
Every team member joins at least one customer call per month — not as a listener, but as a participant. Engineers talk directly to dispatchers. Designers ride along on field visits. We don't insulate the team from the people using what we build.
There are no committees approving designs or architecture reviews that take three weeks. You own your work end-to-end: from database schema to RLS policy to TypeScript types to UI. You're trusted to do it right, and you're trusted to ask when you're uncertain.
Four times a year the team meets in person — rotating cities, focused agendas. Day one is strategy. Day two is customer empathy: we visit contractor offices and watch their teams use Thorbis. Day three is team time. You come back with context that takes months to build remotely.
Decisions are documented. Architecture choices have written rationale. The codebase has a 900-line CLAUDE.md that explains not just what the rules are but why. Good writing is a core competency at Thorbis — not something we outsource to a documentation team.
Own full feature slices from database schema to UI. You'll work across Server Components, Server Actions, and Supabase RLS policies. The team ships weekly and expects engineers to drive architecture decisions, not just implement tickets.
Build the technician mobile app that runs on job sites without signal. You'll design offline-first sync architecture, own the 800×240 signature canvas, and ship features that technicians depend on to capture photos, track materials, and collect payments in the field.
Own UX for dispatch, scheduling, and customer-facing workflows. You'll extend a mature design system (1,200+ components), lead field research visits with HVAC and plumbing operators, and make complex scheduling data scannable for dispatchers running 40+ jobs a day.
Guide contractors through migration, configuration, and first 90 days of live dispatch. Industry experience in HVAC, plumbing, or electrical is a genuine advantage — you'll speak the language of the operators you're supporting and earn their trust faster.
Own organic search, conversion rate optimization, and marketing analytics for the Thorbis site. You'll instrument the funnel, run experiments, and ship code — this is an engineering role that sits in a growth function, not a marketing role that occasionally writes SQL.
We respect your time. The process is transparent, predictable, and scoped to the work you'd actually do in the role.
We read every application. If your background is a fit, you'll hear from us within 2–3 business days with specific feedback on why we want to talk — not a form rejection.
A conversation with the hiring manager — not HR. You'll hear about the role, the team, and the specific problems we're solving. We'll answer every question you have about the company, the product, and what success looks like in the first 90 days.
Live coding for engineers. Design exercise for product and design roles. We share the format in advance so you can prepare. No surprise algorithm puzzles — the exercise is scoped to work you'd actually do in the role.
Three 45-minute conversations with people you'd work with day-to-day. No whiteboard puzzles. No trick questions. We're evaluating how you think through real problems and whether you'll raise the bar for the team.
If we're aligned, you'll have a written offer within 5 business days of your final interview. We don't string candidates along. The offer includes salary, equity, and benefits in plain language — no surprises.
Our commitment to candidates
You'll get specific, written feedback at every stage — not a form rejection. If we're not moving forward, we'll tell you why. If we are, you'll know within the timelines above.
We hire for impact and character over pedigree and credential. These are the signals we look for regardless of the role.
We want people who know when to follow the established pattern and when to challenge it. The best engineers know when NOT to add a new abstraction.
Product requirements evolve as we talk to customers. You adjust without losing momentum. You ask good questions before assuming.
We write clearly, push back when we disagree, and share bad news early. Diplomatic honesty is more valuable than polished hedging.
You notice things that aren't your job and fix them. You don't wait to be assigned a task when the need is obvious. You care about the outcome, not just the ticket.
You're curious about the businesses we serve. You've talked to a dispatcher, visited a job site, or worked in an industry where schedules and margins matter.
You ship features that hold up over time. You write tests for edge cases. You document decisions. You clean up what you break.
We hire exceptional people across product, design, engineering, customer experience, and go-to-market. Tell us how you want to make an impact.
Send us your story