Senior Product Designer
Cal.com
- Location
- Worldwide
- Employment
- Full Time
- Work model
- Remote
- Level
- Senior
- Salary
- $100k – $150k/yr
- Posted
- 1h ago
Skills
About this role
%HEADER_COMPANY_WEBSITE% Senior Product Designer Worldwide %LABEL_POSITION_TYPE_REMOTE% %LABEL_POSITION_TYPE_FULL_TIME% Product $100,000 – $150,000 / year %BREADCRUMB_JOB_OPENINGS% Senior Product Designer %BUTTON_APPLY_TO_POSITION% %BUTTON_APPLY_USING_INDEED% %BUTTON_APPLY_USING_LINKED_IN% About Cal.com Cal.com is building the open scheduling infrastructure for the world. We help individuals, teams, and enterprises book time without friction, used by companies like Deel, Notion, Framer, and AngelList. We’re a remote-first, async-focused team working across 10+ time zones. We prioritize autonomy, transparency, and building scalable systems for both our users and our team. About the Role We’re hiring a Senior Product Designer to own core product surfaces end to end, from the first sketch to a prototype running in the browser. You’re a product designer first. The craft, the judgment, the taste, the decisions about what we build and why: that’s the job. But you don’t stop at a static file. You take your work to a working prototype, because a prototype answers questions a mockup can’t, and it removes the ambiguity that gets lost in translation. Those prototypes get handed off. That’s exactly why they have to be built right. Real semantics, real keyboard paths, composed from our actual primitives, close enough to how it will be implemented that an engineer picks it up and recognizes it. A prototype that cheats is a prototype that lies about the design. We build on coss ui , our open-source component library built on Base UI. That part is settled. It’s our foundation and it isn’t changing. What isn’t settled is how good it gets. We want someone who treats the design system as a product in its own right: finding the gaps, tightening the primitives, and pushing new patterns back into the library instead of solving the same problem locally for the fifth time. We’re building a world-class product, down to every detail. That means the empty state, the focus ring, the error copy, the 200ms of motion nobody articulates but everybody feels. If that level of detail is where you enjoy spending your time, this is the role. You’ll work day to day with our Head of Product and our Design Engineer. It’s a small, deliberately complementary group. We want someone who thinks out loud, shares work early and unfinished, and gets sharper by being challenged. If your instinct is to disappear for two weeks and come back with something finished, this won’t feel good to you. Async here means you choose your hours, not that you work alone. This role is async by default, globally remote, and part of a company culture that prioritizes deep work, flexibility, and real ownership. You’ll be trusted to take initiative, experiment, and ship. What You’ll Do Own core product surfaces from concept through working prototype: booking flows, scheduling primitives, team and enterprise surfaces Build and test working prototypes with whatever answers the question fastest, whether that’s Figma, Claude Code, Cursor, or v0 Hand off prototypes that engineers can build from directly. Correct semantics, real states, composed from our primitives, no shortcuts that fall apart in production Continually improve coss ui. Audit what exists, close the gaps, refine the primitives, and land new components in the library rather than one-off in the app Keep the system honest: tokens, spacing, states, dark mode, motion. Every new surface should make the library better, not route around it Pressure-test the architecture alongside Design Engineering: data shape, state boundaries, what’s a primitive vs. a one-off Own the outcome, not just the artifact. Frame the hypothesis, define what success looks like, stay with it through implementation, and read the results Hold the accessibility bar: keyboard paths, focus management, semantics, contrast, motion preferences. Non-negotiable, not a QA pass at the end Sweat the last 10%. Empty