Meta Business Agent Support Engineer Interview Experience

Meta Business Support Engineer for Business Agent in three rounds: a tool-call parser, trajectory loop detection, and a tool-execution gateway design.

MetaBusiness Support Engineer - Meta Business AgentUpdated Oct 9, 20262 min read

Interview Experience | Business Agent / AI | πŸ”₯πŸ”₯ | Meta

2026 (late Sep to early Oct) Business Support Engineer - Meta Business Agent @ Meta β€” Austin, TX β€” Virtual β€” 3 rounds | 😐 Neutral | Medium-Hard

Meta Business Agent team. Phone screen plus two virtual onsite rounds.

Round 1 β€” Phone Coding

Tool Call Parser. The model returns one object with name and an arguments field that is still a string. Parse it into a structured call. If arguments is not valid JSON, return a clear failure instead of throwing. Empty string should mean {}.

Dict for the outer object, then json.loads on the arguments string. The empty-string case I handled on the first try. What broke was arguments that were double-encoded: a JSON string whose content was another JSON object. My first parse left a string, and their test expected a dict. After a hint I parsed once more when the value was still a string.

Follow-up: the arguments string is truncated mid-key. They wanted whatever complete fields I could recover. I sketched a brace/quote scan and stopped; no code for the recovery path.

Round 2 β€” Coding

Given one agent run as a list of steps, each step is (tool, args_hash, obs_hash). Find the earliest index where the run has entered a loop: a contiguous block of steps that already appeared earlier as an identical sequence of fingerprints. If there is no loop, return -1.

I treated each step as a triple and scanned for a repeated suffix. First version only caught loops of length 1 (same tool hammered). They pointed at an example where the agent alternated lookup_order and send_reply with the same hashes. Switched to checking every period length up to n/2. That part passed their cases.

Follow-up: args_hash differs because the model rephrases the same order id, but the business state did not move. They wanted a state fingerprint beyond the raw args. I only said β€œhash the order status the tool returned,” and did not define how to build that state object before time ran out.

Round 3 β€” System Design

Design the tool execution gateway in front of Meta Business Agent. The model proposes a tool call; the gateway decides whether it runs, talks to partner APIs or internal services, and writes enough for support to debug later.

I kept it to: catalog + authz + execute + audit. Catalog holds schema and whether the tool has side effects. Authz re-checks the business identity on every call, not a fat service account. Side-effecting tools (send_reply, create_order) take an idempotency key derived from run id + step id so a retry does not double-send.

They pushed on timeouts: per-tool deadline, and what the agent sees when the partner API is slow. I said return a typed timeout error the model can branch on, and do not auto-retry anything with side effects. Last question was two regions both thinking the first attempt failed. I mentioned the idempotency key store, but not how long keys live or how to reconcile a partner that accepted the request without returning an id. That one stayed open.