Overview
Senior TypeScript Engineer on WPP Open, WPP's AI-enabled marketing operating system, based in Gurugram. You own a component or service from design and API through tests and production health, and mentor other engineers.
What you'll do
- Design, build, test and ship production code every sprint, test-first.
- Own a component or service end to end: its design, OpenAPI contract, data model, Playwright test suite, monitoring and runbook.
- Write design documents and architecture decision records for your component, and review other engineers' code with rigour and care.
- Choose between AWS Lambda and Kubernetes for your workloads, and build and maintain the CI/CD pipeline that ships them.
- Lead triage when your component fails, write post-incident reviews and fix the underlying causes.
- Build production AI features on the Anthropic and OpenAI APIs, and maintain your component's Claude Code configuration and MCP server.
- Explain technical trade-offs to product and delivery colleagues, including colleagues in other regions.
- Mentor less experienced engineers and help new joiners become productive quickly.
What you'll need
- Bachelor's degree or equivalent practical experience.
- 5 years of professional software development in TypeScript and Node.js.
- 3 years of experience testing, maintaining or launching production software, and 1 year of experience with software design and architecture.
- Experience working in globally distributed teams across time zones, with stakeholders in other regions.
- Strict, idiomatic TypeScript, including advanced types and runtime validation at service boundaries with Zod.
- Understanding of the Node.js event loop to recognise and fix blocking work, and ability to profile CPU and memory when a service misbehaves.
- In-depth knowledge of NestJS or Fastify, and structuring packages so a codebase stays easy to change.
- Designing REST APIs with OpenAPI and owning the contract for your service, including versioning, backwards compatibility, idempotency keys, rate limiting and webhooks.
- Knowing when to use JSON and when to use Protocol Buffers, and checking schema compatibility automatically in your pipeline.
- Designing PostgreSQL schemas and changing them without downtime, tuning slow queries and understanding transaction isolation.
- Modelling data well in both DynamoDB and MongoDB, using Redis for caching, and choosing the right store for each workload with clear reasons.
- Designing producers and consumers on queues such as SQS and BullMQ, with retries, dead-letter queues and idempotent handlers so that at-least-once delivery is safe.
- Designing services on AWS Lambda, with sensible function boundaries, concurrency settings, dead-letter queues and Step Functions or EventBridge where needed, defined as code with AWS CDK or SAM.
- Operating workloads on Kubernetes, including Helm, autoscaling, rollouts and rollbacks, and choosing between serverless and containers for each workload.
- Practising test-driven development and applying it to the design of whole components.
- Writing integration and contract tests with Testcontainers and owning your component's Playwright test suite, including test data, parallel runs and removing flaky tests.
- Instrumenting services with OpenTelemetry, owning Datadog monitors, alerts and CloudWatch alarms for your component, and leading triage and post-incident reviews when it fails.
- Setting performance budgets, profiling under realistic load, and finding memory leaks and blocking work in production.
- Implementing OAuth 2.0 and OpenID Connect end to end, including the authorisation-code flow with PKCE and client credentials for service-to-service calls.
- Designing role based access control, rotating secrets and keys, and securing the supply chain with dependency scanning and static analysis in the pipeline.
- Designing a service from a short brief, writing design documents and architecture decision records that name the trade-offs, and designing for backwards compatibility.
- Working trunk-based with GitHub Flow and holding others to it in code review.
- Building and maintaining CI/CD pipelines, pinning and upgrading dependencies on a regular cadence, and writing documentation for the people who will read it.
- Building production features on the Anthropic and OpenAI APIs using tool calling, structured output and evaluations, and tracking token usage and cost.
- Maintaining the Claude Code configuration for your component, including CLAUDE.md, skills and subagents, and having built an MCP server that exposes your service to AI agents.
- Communicating clearly and concisely, and explaining technical trade-offs to product, design and delivery colleagues in terms they can act on.
- Collaborating well across locations and time zones, working asynchronously and handing over cleanly.
- Being proactive: spotting problems before being asked, proposing solutions and improvements, and seeing them through without waiting for instructions.
- Reviewing others' code with rigour and care, mentoring less experienced engineers, and disagreeing openly and then committing fully to the decision.
Nice to have
- B.Tech or B.E. in Computer Science, Information Technology or a related field.
- Experience with monorepo tooling such as Nx or Turborepo at scale.
- Experience with Kafka and change data capture.
- Experience with behaviour-driven development using Cucumber.
- Experience with Bigtable.
- Experience shipping an AI agent with LangGraph, Google ADK or the Anthropic Agent SDK.
- Experience configuring an identity provider such as Okta, Keycloak or Cognito.
Details
- Location: Gurugram, India.
- Hybrid approach, with teams in the office around four days a week.
- Accommodations or flexibility can be discussed with the hiring team during the interview process.
- Interviews are practical and hands-on.
Read the full description and apply on the company’s own careers page.