Careers

Company: Vercel

Remote: No

Posted: 2026-03-16

Status: new

Apply: https://vercel.com/careers#positions


Careers((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f?.[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","zeit-theme","system",null,["light","dark"],{"light":"light-theme","dark":"dark-theme"},true,true)
// Protect Geist code blocks from 1Password DOM flattening
(function() {
  const codeBlockSnapshots = new WeakMap();
  let isRestoring = false;

  function saveSnapshot(codeElement) {
    if (!codeBlockSnapshots.has(codeElement)) {
      codeBlockSnapshots.set(codeElement, codeElement.cloneNode(true));
    }
  }

  function checkAndRestore(codeElement) {
    if (isRestoring) return;

    // Check if our specific structure was flattened
    const hasOurStructure = codeElement.querySelector('[data-geist-code-block-line]');
    const snapshot = codeBlockSnapshots.get(codeElement);

    if (!hasOurStructure && snapshot && snapshot.querySelector('[data-geist-code-block-line]')) {
      // Our structure was destroyed (likely by 1Password), restore it
      isRestoring = true;
      codeElement.innerHTML = snapshot.innerHTML;
      isRestoring = false;
    }
  }

  function initializeCodeBlocks() {
    document.querySelectorAll('code[data-geist-code-block]').forEach(saveSnapshot);
  }

  // Single global observer for all code blocks
  const globalObserver = new MutationObserver(function(mutations) {
    if (isRestoring) return;

    mutations.forEach(function(mutation) {
      // Check if new code blocks were added
      mutation.addedNodes.forEach(function(node) {
        if (node.nodeType === 1) {
          if (node.matches && node.matches('code[data-geist-code-block]')) {
            saveSnapshot(node);
          } else if (node.querySelectorAll) {
            node.querySelectorAll('code[data-geist-code-block]').forEach(saveSnapshot);
          }
        }
      });

      // Check if existing code blocks were modified
      var target = mutation.target;
      if (target.nodeType === 1) {
        // Check if the target itself is a protected code block
        if (target.matches && target.matches('code[data-geist-code-block]')) {
          checkAndRestore(target);
        }
        // Check if the target contains protected code blocks
        else if (target.closest && target.closest('code[data-geist-code-block]')) {
          checkAndRestore(target.closest('code[data-geist-code-block]'));
        }
      }
    });
  });

  // Initialize existing code blocks and start observing
  function init() {
    initializeCodeBlocks();
    globalObserver.observe(document.documentElement, {
      childList: true,
      subtree: true,
      characterData: true
    });
  }

  // Run immediately and after DOM is ready
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init);
  } else {
    init();
  }
})();
(({protect:a})=>{function b(a){return new Promise((b,c)=>{if(document.querySelector(`script[src="${a}"]`))return void b();let d=document.createElement("script");d.src=a,d.async=!0,d.onload=()=>b(),d.onerror=a=>{console.error("Error loading script",a),c(a)},document.head.appendChild(d)})}var c=class a{#a;#b;#c=0;constructor(){let{promise:b,resolve:c}=a.#d();this.#a=b,this.#b=c,this.#e(),window.addEventListener("online",this.#f),window.addEventListener("visibilitychange",this.#f)}getChallenge=async()=>(await this.#g(),await this.#a.then(a=>"function"==typeof a?a():a));#f=()=>{if(document.hidden)return;let{promise:b,resolve:c}=a.#d();this.#a=b,this.#b=c,window.V_C=[],window.V_C.push=c;let d=document.querySelector('script[src*="c.js"]');d&&d.remove(),this.#c+=1};#e=()=>{if(window.V_C){let a=window.V_C.pop();a&&this.#b(a)}else window.V_C=[],window.V_C.push=this.#b};#g=()=>{let a=new URL("/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/a-4-a/c.js",window.location.origin);return a.searchParams.set("i",String(this.#c)),a.searchParams.set("v",String(3)),a.searchParams.set("h",window.location.host),b(a.pathname+a.search)};#h=()=>{window.V_C=void 0};static #d(){let a,b;return{promise:new Promise((c,d)=>{a=c,b=d}),resolve:a,reject:b}}},d=class a{#a=!1;#b;constructor(a){this.#b=a}get loaded(){return this.#a}load=async()=>{this.#a||await this.#f()};#c=()=>{if(typeof globalThis.window>"u")throw Error("KPSDK is not available in the server");if(!window.KPSDK)throw Error("KPSDK is not loaded");let b=this.#b.map(b=>{let c=a.#e(b.path);return{domain:c.host,path:c.pathname,method:b.method}});try{window.KPSDK.configure(b)}catch(a){console.error("Error configuring KPSDK...",a)}};#f=async()=>{let a=this;return new Promise((c,d)=>{let e=()=>{document.removeEventListener("kpsdk-load",e),this.#c()},f=()=>{document.removeEventListener("kpsdk-ready",f),a.#a=!0,c()};document.addEventListener("kpsdk-load",e,{once:!0}),document.addEventListener("kpsdk-ready",f,{once:!0}),b("/149e9513-01fa-4fb0-aad4-566afd725d1b/2d206a39-8ed7-437e-a3be-862e0f06eea3/p.js").catch(a=>{document.removeEventListener("kpsdk-load",e),document.removeEventListener("kpsdk-ready",f),d(a)})})};static #e(a){let b;try{b=new URL(a)}catch{b=new URL(a,location.origin)}return b}},e=a=>{let b=a.replace(/[.?+^$[\]\\(){}|-]/g,"\\$&").split("*").join(".*");return RegExp(`^${b}$`)},f=({path:a,pattern:b})=>-1!==a.search(b);async function g(a,b,c){let d=XMLHttpRequest.prototype.open,g=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.open=function(a,b,c,e,f){return this._requestUrl=b.toString(),this._requestMethod=a,d.call(this,a,b,c??!0,e,f)},XMLHttpRequest.prototype.send=async function(d){let h=this._requestUrl;if(!h||this._isReexecution)return g.call(this,d);let i=new URL(h,location.href),j=this._requestMethod??"GET",k=c.find(a=>{let b=f({path:i.pathname,pattern:e(a.path)}),c=a.method===j||"*"===a.method;return b&&c});if(!k)return g.call(this,d);let l=await a.getChallenge();if(this.setRequestHeader("x-is-human",JSON.stringify(l)),this.setRequestHeader("x-path",i.pathname),this.setRequestHeader("x-method",j),0!==l.b||b.loaded||((1===l.d||k?.advancedOptions?.checkLevel==="deepAnalysis")&&await b.load(),!b.loaded))return g.call(this,d);this.setRequestHeader("x-is-human",JSON.stringify(l)),this.setRequestHeader("x-path",i.pathname),this.setRequestHeader("x-method",j);let m=new XMLHttpRequest;return m._isReexecution=!0,m.open(j,h,!0),m.setRequestHeader("x-is-human",JSON.stringify(l)),m.setRequestHeader("x-path",i.pathname),m.setRequestHeader("x-method",j),this.timeout&&(m.timeout=this.timeout),this.responseType&&(m.responseType=this.responseType),this.withCredentials&&(m.withCredentials=this.withCredentials),m.onreadystatechange=()=>{Object.defineProperty(this,"readyState",{value:m.readyState,writable:!0,configurable:!0}),m.readyState===XMLHttpRequest.DONE&&(Object.defineProperty(this,"status",{value:m.status,writable:!0,configurable:!0}),Object.defineProperty(this,"statusText",{value:m.statusText,writable:!0,configurable:!0}),Object.defineProperty(this,"response",{value:m.response,writable:!0,configurable:!0}),Object.defineProperty(this,"responseText",{value:m.responseText,writable:!0,configurable:!0}),Object.defineProperty(this,"responseXML",{value:m.responseXML,writable:!0,configurable:!0}),this.getAllResponseHeaders=()=>m.getAllResponseHeaders(),this.getResponseHeader=a=>m.getResponseHeader(a)),this.onreadystatechange&&this.onreadystatechange.call(this,new Event("readystatechange"))},m.onload=a=>{this.onload&&this.onload.call(this,a)},m.onerror=a=>{this.onerror&&this.onerror.call(this,a)},m.onabort=a=>{this.onabort&&this.onabort.call(this,a)},m.ontimeout=a=>{this.ontimeout&&this.ontimeout.call(this,a)},m.onloadstart=a=>{this.onloadstart&&this.onloadstart.call(this,a)},m.onloadend=a=>{this.onloadend&&this.onloadend.call(this,a)},m.onprogress=a=>{this.onprogress&&this.onprogress.call(this,a)},m.send(d)}}!function({protect:a=[]}){let b;for(let b of a)if(b.advancedOptions?.checkLevel!==void 0&&"deepAnalysis"!==b.advancedOptions.checkLevel&&"basic"!==b.advancedOptions.checkLevel)throw Error(`Invalid checkLevel "${b.advancedOptions.checkLevel}" for route "${b.path}". Must be one of: deepAnalysis, basic`);let h=new c,i=new d(a);g(h,i,a).catch(a=>{console.error("Error patching XMLHttpRequest:",a)}),b=window.fetch,window.fetch=async(c,d)=>{let g=new URL(c instanceof Request?c.url:c,location.href),j=g.origin===location.origin,k=d?.method??(c instanceof Request?c.method:"GET"),l=a.find(a=>{let b=f({path:g.pathname,pattern:e(a.path)}),c=a.method===k||"*"===a.method;return b&&c});if(null==l||!j)return b(c,d);let m=await h.getChallenge(),n=new Headers(d?.headers||(c instanceof Request?c.headers:void 0));n.set("x-is-human",JSON.stringify(m)),n.set("x-path",g.pathname),n.set("x-method",k);let o={...d,headers:n};return i.loaded||0!==m.b?b(c,o):1===m.d||l?.advancedOptions?.checkLevel==="deepAnalysis"?(await i.load(),window.fetch(c,o)):b(c,o)}}({protect:a})})({ protect: [{"path":"/api/solution-partners/contact-solution-partner","method":"POST"},{"path":"/api/report-abuse","method":"POST"},{"path":"/api/appeals","method":"POST"},{"path":"/api/ai/gateway-playground/chat/logged-out","method":"POST"}] });ProductsAI Cloudv0Build applications with AIAI SDKThe AI Toolkit for TypeScript
  
  AI GatewayOne endpoint, all your modelsVercel AgentAn agent that knows your stackSandboxAI workflows in live environmentsCore PlatformCI/CDHelping teams ship 6× fasterContent DeliveryFast, scalable, and reliableFluid ComputeServers, in serverless formObservabilityTrace every stepSecurityBot ManagementScalable bot protectionBotIDInvisible CAPTCHAPlatform SecurityDDoS Protection, Firewall









Web Application FirewallGranular, custom protectionResourcesCompanyCustomersTrusted by the best teamsBlogThe latest posts and changesChangelogSee what shippedPressRead the latest newsEventsJoin us at an eventLearnDocsVercel documentationAcademyLinear courses to level upKnowledge BaseFind help quicklyCommunityJoin the conversationOpen Source
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  Next.jsThe native Next.js platformNuxtThe progressive web framework
  
  
  
  
  
  
  
  SvelteThe web’s efficient UI framework
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  TurborepoSpeed with Enterprise scaleSolutionsUse Cases
  
  AI AppsDeploy at the speed of AIComposable CommercePower storefronts that convertMarketing SitesLaunch campaigns fastMulti-tenant PlatformsScale apps with one codebaseWeb AppsShip features, not infrastructureToolsMarketplaceExtend and automate workflowsTemplatesJumpstart app developmentPartner FinderGet help from solution partnersUsersPlatform EngineersAutomate away repetition



Design EngineersDeploy for every ideaEnterprisePricing
        @media (max-width: 1150px) {
          #header-content { display: none; }
        }
      
        @media (min-width: 1151px) {
          #mobile-menu-toggle { display: none; }
        }
      Join usto Ship what's Next.Open PositionsOpen Positions at VercelLocationDepartmentAccount Executive, Commercial Install Base Austin, New York City, San FranciscoRead moreAccount Executive-Startups (APAC)AustraliaRead moreAccount Executive- Startups, GreenfieldAustin, New York City, San FranciscoRead moreAccount Executive-Startups, Greenfield (EMEA)Berlin, LondonRead moreAccount Executive- Startups, Install BaseAustin, New York City, San FranciscoRead moreAccount Executive- Startups, Install Base (EMEA)Berlin, LondonRead moreCommercial Account Executive, Install BaseLondonRead moreContent EngineerAustin, New York City, San FranciscoRead moreDesign EngineerUnited StatesRead moreDeveloper Advocacy DirectorNew York City, San FranciscoRead moreDeveloper Success Engineer Germany, United KingdomRead moreDirector of Legal, Product FoundationsSan FranciscoRead moreDirector of Trust & Safety EngineeringSan FranciscoRead moreDirector, Product CounselingSan FranciscoRead moreDirector, Technical Accounting & Financial ReportingSan FranciscoRead moreDX EngineerAustin, New York City, San FranciscoRead moreEngineering Manager, CDNSan FranciscoRead moreEnterprise Account ExecutiveAustin, New York City, San FranciscoRead moreField Marketing Manager, StartupsSan FranciscoRead moreFinance ManagerSan FranciscoRead moreForward-Deployed EngineerBerlin, LondonRead moreForward-Deployed Engineer Austin, New York City, San FranciscoRead moreFraud Specialist, Trust & SafetyUnited StatesRead moreGlobal Director, Sales DevelopmentAustin, New York City, San FranciscoRead moreGSI & Consultancies, Partner LeadAustin, New York City, San FranciscoRead moreGTM Engineer Austin, New York City, San FranciscoRead moreHead of Product Marketing New York City, San FranciscoRead moreManager, Solutions ArchitectureAustin, New York City, San FranciscoRead moreMobile EngineerNew York CityRead morePartner Lead, APACAustraliaRead moreProduct Lead, v0San FranciscoRead moreProduct Manager - AccountsNew York City, San FranciscoRead moreProduct Manager - Agent PlatformNew York City, San FranciscoRead moreProduct Manager - DashboardNew York City, San FranciscoRead moreProduct Marketing, v0Austin, New York City, San FranciscoRead moreRecruiting Coordinator (Contract)New York City, San FranciscoRead moreSales Development Representative, Enterprise, UK&ILondonRead moreSales Engineer, Startups Austin, New York City, San FranciscoRead moreSenior AccountantSan FranciscoRead moreSenior Brand DesignerUnited States, ArgentinaRead moreSenior Communications Manager San FranciscoRead moreSenior Customer Support EngineerAustraliaRead moreSenior Customer Support EngineerGermany, United KingdomRead moreSenior Global People Operations SpecialistSan FranciscoRead moreSenior HRBP - EPD San FranciscoRead moreSenior Manager, AccountingSan FranciscoRead moreSenior Partner ManagerAustin, New York City, San FranciscoRead moreSenior Partner Manager, AWSAustin, New York City, San FranciscoRead moreSenior Partner Solutions EngineerAustin, New York City, San FranciscoRead moreSenior Product DesignerUnited StatesRead moreSenior Product Security EngineerUnited StatesRead moreSenior Software Engineer, Trust & SafetyUnited StatesRead moreSenior Technical Engagement ManagerUnited StatesRead moreSenior Workday Integrations EngineerNew York City, San FranciscoRead moreSite EngineerUnited StatesRead moreSoftware Engineer, AccountsUnited StatesRead moreSoftware Engineer, AccountsUnited StatesRead moreSoftware Engineer, AI GatewayNew York City, San FranciscoRead moreSoftware Engineer, AI SDKNew York City, San FranciscoRead moreSoftware Engineer, CDNNew York City, San FranciscoRead moreSoftware Engineer, CDN SecurityUnited StatesRead moreSoftware Engineer, ComputeUnited StatesRead moreSoftware Engineer, DashboardNew York City, San FranciscoRead moreSoftware Engineer, Deployment InfrastructureNew York City, San FranciscoRead moreSoftware Engineer, DomainsUnited StatesRead moreSoftware Engineer, GrowthNew York City, San FranciscoRead moreSoftware Engineer, LuaUnited StatesRead moreSoftware Engineer, WorkflowsNew York City, San FranciscoRead moreSolutions ArchitectGermany, United KingdomRead moreSolutions ArchitectAustraliaRead moreSolutions Architect Austin, New York City, San FranciscoRead moreSr. Customer Marketing Manager - Startups New York City, San FranciscoRead moreSr. Engineering Manager, PlatformNew York City, San FranciscoRead moreStaff Cloud Security EngineerUnited StatesRead moreStartups Accelerator Manager San FranciscoRead moreStrategic Account ExecutiveAustin, New York City, San FranciscoRead moreVercel Development Representative, CommercialAustin, New York City, San FranciscoRead moreVercel Development Representative , StartupsLondonRead moreVercel Development Representative, StartupsAustin, New York City, San FranciscoRead moreGet StartedTemplatesSupported frameworksMarketplaceDomainsBuildNext.js on VercelTurborepov0ScaleContent delivery networkFluid computeCI/CDObservabilityAI GatewayNewVercel AgentNewSecurePlatform securityWeb Application FirewallBot managementBotIDSandboxNewResourcesPricingCustomersEnterpriseArticlesStartupsSolution partnersLearnDocsBlogChangelogKnowledge BaseAcademyCommunityFrameworksNext.jsNuxtSvelteNitroTurboSDKsAI SDKWorkflow DevKitNewFlags SDKChat SDKStreamdown AINewUse CasesComposable commerceMulti-tenant platformsWeb appsMarketing sitesPlatform engineersDesign engineersCompanyAboutCareersHelpPressLegalPrivacy PolicyCommunityOpen source programEventsShipped on VercelGitHubLinkedIn XYouTubeLoading status…Select a display theme:system lightdarkrequestAnimationFrame(function(){$RT=performance.now()});Products$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")v0Build applications with AI$RC("B:1","S:1")AI SDKThe AI Toolkit for TypeScript$RC("B:2","S:2")
  
  AI GatewayOne endpoint, all your models$RC("B:3","S:3")Vercel AgentAn agent that knows your stack$RC("B:4","S:4")SandboxAI workflows in live environments$RC("B:5","S:5")CI/CDHelping teams ship 6× faster$RC("B:6","S:6")Content DeliveryFast, scalable, and reliable$RC("B:7","S:7")Fluid ComputeServers, in serverless form$RC("B:8","S:8")ObservabilityTrace every step$RC("B:9","S:9")Bot ManagementScalable bot protection$RC("B:a","S:a")BotIDInvisible CAPTCHA$RC("B:b","S:b")Platform SecurityDDoS Protection, Firewall$RC("B:c","S:c")









Web Application FirewallGranular, custom protection$RC("B:d","S:d")Resources$RC("B:e","S:e")CustomersTrusted by the best teams$RC("B:f","S:f")BlogThe latest posts and changes$RC("B:10","S:10")ChangelogSee what shipped$RC("B:11","S:11")PressRead the latest news$RC("B:12","S:12")EventsJoin us at an event$RC("B:13","S:13")DocsVercel documentation$RC("B:14","S:14")AcademyLinear courses to level up$RC("B:15","S:15")Knowledge BaseFind help quickly$RC("B:16","S:16")CommunityJoin the conversation$RC("B:17","S:17")
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  Next.jsThe native Next.js platform$RC("B:18","S:18")NuxtThe progressive web framework$RC("B:19","S:19")
  
  
  
  
  
  
  
  SvelteThe web’s efficient UI framework$RC("B:1a","S:1a")
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  TurborepoSpeed with Enterprise scale$RC("B:1b","S:1b")Solutions$RC("B:1c","S:1c")
  
  AI AppsDeploy at the speed of AI$RC("B:1d","S:1d")Composable CommercePower storefronts that convert$RC("B:1e","S:1e")Marketing SitesLaunch campaigns fast$RC("B:1f","S:1f")Multi-tenant PlatformsScale apps with one codebase$RC("B:20","S:20")Web AppsShip features, not infrastructure$RC("B:21","S:21")MarketplaceExtend and automate workflows$RC("B:22","S:22")TemplatesJumpstart app development$RC("B:23","S:23")Partner FinderGet help from solution partners$RC("B:24","S:24")Platform EngineersAutomate away repetition$RC("B:25","S:25")



Design EngineersDeploy for every idea$RC("B:26","S:26")(self.__next_f=self.__next_f||[]).push([0])se

Back