-
Own frontend features across Opportunities in Vue.js — the pipeline board, deal detail views, stage and pipeline configuration, filters and saved views, bulk actions, and reporting surfaces
-
Build interactions that have to feel instant: drag-and-drop stage moves, inline edits, optimistic updates with clean rollback and clear error states when a write fails
-
Make large pipelines fast in the browser — virtualized and windowed lists, pagination and lazy loading, render and re-render cost, bundle size, and time to first meaningful paint on a board with thousands of deals
-
Design and maintain client-side state and data-fetching patterns (Pinia/Vuex, caching, invalidation) so the UI stays consistent without redundant round-trips
-
Handle concurrency in the interface: live updates when a teammate moves a deal, stale-data detection, and sensible conflict resolution
-
Render dynamic, customer-defined schemas — custom fields, custom objects, and per-workspace configuration — without special-casing every variation
-
Build reusable, well-composed components, and contribute to the shared design system rather than growing one-off UI
-
Work directly from designs, and push back with product and design where an interaction will not hold up in practice
-
Extend the backend where your feature needs it: adding or reshaping NestJS API endpoints, trimming over-fetching, and adjusting payloads for the view you are building
-
Write tests that matter — component and unit tests, plus end-to-end coverage of the flows customers cannot afford to have broken
-
Instrument the frontend: error tracking, real-user performance monitoring, and the event data needed to see how a feature is actually used
-
Care about accessibility, keyboard support, responsive layout, and cross-browser behavior as part of shipping, not as a follow-up
-
Take part in on-call for the surfaces you own, debug production issues, and contribute to postmortems
-
Write clear design docs for the features you own, and participate actively in design and code review