OysterHR
Product engineer · accounts payable & applied AI
Since 2026 · remote
OysterHR is a global employment platform, one of the EOR leaders. Companies hire in more than 180 countries through it, across hundreds of customer legal entities and multiple currencies. I own the accounts-payable automation: the pipeline that reads supplier invoices, the product accountants review in, and the money path behind both.
AI in the money path
- Measured on the invoices processed so far, the run-rate saving is about $300K a year at a few thousand invoices a month. The process it replaced was two people reading PDFs.
- Per-vendor prompts live in the database as data. Onboarding a vendor means adding a row, and the prompt version travels with every call so a review can reconstruct what ran.
- JSON Schema structured outputs, then validation in code. A malformed extraction stops at the boundary; the accounting system never sees it.
- A person approves before money moves. Every call that can touch a payment leaves an audit record: model, prompt version, tokens, latency, document hash.
- Routing, prompt caching and context budgets keep the model bill below the process it replaced.
The money path
- Invoice matching, accounting mappings and ERP writes are deterministic code. The model gets no vote there.
- Payouts, payee and bank-account verification, provider webhooks, reconciliation across banking partners. Per-payout idempotency keys and a nightly reconciliation diff close the duplicate-webhook and payee-swap cases.
- Two state changes that belong together commit in one transaction. A retried write reconciles to the same record instead of paying twice.
How the team ships
- Spec-to-reviewed-PR automation on agents, with custom skills and MCP integrations. The review queue got shorter, not longer, which is the only result I cared about.
- Support triage and flaky-test repair run on agents too, under the same cost budget as the product.
When it breaks
- Escalated production incidents, inside SLA. Root causes traced through Datadog, Sentry and the data, closed with permanent fixes and runbook entries.