Back

Upwork · 2014 – 2026

Product pages,
and the system under them.

Twelve years on one of the world’s largest freelance marketplaces. Two kinds of work: the product pages people use every day, and the infrastructure and UI components those pages are built from.

Product screens cannot be shown here. The work is the process, the surfaces, and the quality bar.

Role
Senior Software Engineer
Stack
Vue · React · Node · GraphQL
Scale
Tens of millions of visits / month

Product features and pages

2018–2026, on the product team. Pages and features from planning with PMs and design through tests and gradual rollout.

Pages

  • Freelancer Profile
  • Freelancer Search
  • Proposals
  • AI Interviews

Proposal Manager

Owned it as the one engineer on the feature — a light CRM where clients review applicants, filter them, and send invites. The UI was built from scratch; tests (Cypress, Jest) and rollout sat with me. Shortlisting and inviting became noticeably faster.

AI Interviews

Built the interview review page: a custom video player with YouTube-style controls and an AI-generated summary of each interview. Clients can screen from a recording instead of scheduling a live call. The player had to feel native to the product, not like a third-party widget dropped on the page.

How we worked

Features from planning to release, with PMs, designers, and QA — design docs, tests, CI, and gradual rollouts. I asked for intent, then made the call in the UI, and caught product inconsistencies at a glance.

Infrastructure and UI components

The layer under those pages: APIs, microfrontends, two core migrations, and the shared component library.

Platform

  • Microfrontends
  • Design system
  • Framework migration

The platform

I started on Infrastructure (2014–2018), designing PHP BFF APIs and the microfrontend layer every upwork.com page sat on. Later I helped drive two company-wide migrations of the frontend core — first to Vue 3, later to React, Next.js, and GraphQL.

The job was evolving what already shipped, not throwing it away: a shared core, fewer one-off stacks, better developer experience. The next page didn’t start from scratch.

Design system

Co-built Upwork’s shared UI component library. Day-to-day with design: Figma to Storybook, implemented in Vue and React. Components high-traffic teams could trust, not a parallel visual language.