Software Engineer
Build model API integrations, scheduled checks, and tools for investigating changes.
Job description
About Martingale
Martingale tells teams the moment the AI model behind their API changes behavior, before their users notice. We are building a drop-in proxy for LLM providers that forwards every request unchanged while recording metadata about each call, runs hidden canary prompts on a schedule, applies statistical tests that separate real behavior change from noise, and alerts through Slack or PagerDuty with an incident timeline. We also run MartingaleBench, a public drift tracker, and publish martingale-check, a command-line tool that fingerprints any OpenAI-compatible endpoint. We are a small team in Pittsburgh, PA.
About the role
You will own real pieces of the production path: the proxy that sits in the request path under a strict latency budget, the provider adapters, the ingest worker that lands events in Postgres, the canary scheduler and runner, and the incident manager that turns detections into alerts. The codebase is TypeScript in strict mode, tested end to end against real Postgres and Redis. You will ship code that customers’ traffic flows through, so correctness, failure handling, and data minimization matter as much as speed.
What you will do
- Build and maintain provider adapters for OpenAI Chat Completions and Anthropic Messages, including streaming, checked against each provider’s current API reference.
- Keep the proxy fast and safe: it never waits on Martingale’s own storage, writes telemetry asynchronously, and must keep forwarding traffic when our Postgres or Redis is down.
- Implement scheduled canary runs, including multi-step tool-using agentic workflows, and the Redis Streams ingest path that stores their results.
- Build incident management and alert delivery to Slack and PagerDuty with idempotent behavior under retries, restarts, and duplicate events.
- Write tests that name the edge case they cover, run them against real services with Testcontainers, and keep CI green, including the proxy latency benchmark.
- Contribute to the Python and TypeScript SDKs, the Next.js dashboard, and the REST API.
- Review teammates’ pull requests, write short design notes before larger changes, and document operational behavior in the runbook.
Requirements
- Currently pursuing a bachelor’s, master’s, or PhD in computer science, software engineering, or a related field.
- Strong C++, Python, and JavaScript or TypeScript, from production work or substantial projects.
- Fluent with agentic coding tools such as Claude Code, Codex, or Cursor, and in the habit of reviewing and testing what they produce.
- Able to work from Pittsburgh, PA.
Nice to have
- Experience building HTTP services: streaming responses, timeouts, retries, and idempotency.
- SQL with Postgres and a queue or stream such as Redis Streams, BullMQ, Kafka, or SQS.
- Have integrated an LLM provider API, such as OpenAI, Anthropic, or an OpenAI-compatible host.
- Docker, Git, and CI such as GitHub Actions, with tests written alongside code.
- Latency-sensitive proxy or gateway work, such as Envoy, nginx, Cloudflare Workers, or an API gateway.
- Experience with Hono, Drizzle, Zod, Vitest, Turborepo, Next.js, or Tailwind.
- Observability tooling such as OpenTelemetry, Prometheus, or Grafana.
- Open-source contributions or a public project we can read.
How to apply
Choose Apply, pick Software Engineer, and upload your resume as a PDF or DOCX. A link to your GitHub or a project you are proud of helps. We read every application and reply to everyone we interview.