Note: The job is a remote job and is open to candidates in USA. Close is a company that focuses on building AI-driven solutions for their clients. They are seeking a Senior Backend Engineer to lead the development of their agent platform, which involves shipping impactful features, building evaluation layers, and integrating AI tools into workflows.
Responsibilities
- Ship code execution for the assistant
- Build the eval and observability layer that tells us when an agent is getting better
- Push generated UI forward
- Take Custom Agents from prototype to GA
- Make deterministic and non-deterministic systems work together
- Handle the edges that make agents trustworthy
- Pick the right model for the job
Skills
- A seasoned engineer. Python is our backbone, but perhaps you've worked across Go, Rust, or TypeScript. You pick the right tool for the workload rather than retreating to what you know
- AI-native in production. You've shipped meaningful, impactful agentic features to users. You have opinions on retrieval, evals, tool design, context engineering, and where the current frontier models fall over
- Working with AI in your day-to-day. You use AI tools in your own workflow to ship faster, write tighter code, and reason about unfamiliar parts of the codebase. You have a POV on where they help and where they get in the way
- A builder first. You'd rather get a sloppy v1 in front of fifty customers than spend three weeks on abstractions. You ship
- Battle-tested. You've debugged incidents where latency budgets didn't hold, owned a system everyone else relied on, or carried a pager for something with real customer impact
- Close to the research. You read papers, or you've spent serious time in retrieval, RAG, RLHF, or fine-tuning. Not a researcher, but you can read one and tell us whether the result matters for our problem
- Comfortable with non-determinism. Much of your output is probabilistic. Conventional patterns don't hold. You find this fun
- Ship code execution for the assistant. The assistant decides when writing code beats answering non-deterministically — today that's generating charts and tables in Python on the fly; next it's reusable user-defined tools and calling external APIs to pull in whatever data the task needs
- Build the eval and observability layer that tells us when an agent is getting better. Unit tests don't cut it for non-deterministic output. We run evals and tracing (LangFuse and our own tooling) as the bar for shipping: if we can't measure it, we don't ship it
- Push generated UI forward. The backend increasingly decides what the user sees — the LLM picks the right presentation (table, chart, widget) and renders it in the assistant, with a full-screen experience and stored, referenceable artifacts on the roadmap. Effectively: customers generate the reports we used to hand-build, one custom report at a time
- Take Custom Agents from prototype to GA. Event-driven agents that act on what's happening inside the CRM in real time — an email lands, an agent drafts the reply from knowledge sources and context, the user approves. This is where we differentiate from the general-purpose assistants: we see the events, we have the context
- Make deterministic and non-deterministic systems work together. Sales processes need steps that happen every single time; LLMs are bad at that. You'll help fuse our Workflows engine with agentic steps so customers get reliability where it matters and intelligence where it helps
- Handle the edges that make agents trustworthy. What happens to a fleet of running agents when a customer's AI credits run out? Pause semantics, recovery, and making sure nothing places a hundred calls that were supposed to happen last week
- Pick the right model for the job. We use many providers, test new models constantly, and are moving toward cost-aware routing — simple summarization jobs shouldn't run on frontier-priced models. You'll call when something is production-ready and when it's still a demo
Company Overview