Solutions · Finance Pack

Stop BEC fraud before
the money leaves the bank.

Every Lark payment approval runs through three fraud guards: bank-account drift from historical payees (BEC fraud), duplicate-payment detection across 30 days, and invoice-versus-form amount matching. Your finance team only sees the clean ones.

🚨
BEC losses in Singapore
Singapore Police reported SGD 198M lost to BEC scams in 2024 alone. The typical playbook: an attacker compromises a supplier email, waits for a legitimate invoice, and resends it with changed bank details. Finance clicks approve without cross-checking history. Kopi catches the account drift instantly.
Bank-account drift guard
Historical payee bank account cached per tenant. Any drift = red block with both accounts quoted.
Duplicate payment detection
Same payee + amount within 30 days = red block cross-referenced with the original approval ID.
Invoice-form amount match
Kopi extracts invoice total. Disagreement > 1% with Lark form amount = red block.
New payee workflow
First-time payee goes yellow with explicit "verify before approving" note. Approver locks in the account.
Round-number detector
Suspicious round amounts (SGD 10,000 flat for a non-retainer vendor) flagged for attention.
Attachment required ≥ SGD 1k
Payments above SGD 1,000 without an invoice attachment are blocked with a friendly "please attach invoice" prompt.

Even one prevented BEC = 10 years of Kopi paid for

Free beta through Sep 30, 2026. Founding members lock in 50% off for 12 months.

Built on Mirror

One agent reads every policy doc — across every domain.

Fraud-flag rules are no different from any other rule in Mirror's vocabulary — duplicate-payment checks, vendor-allowlist matches, amount-deviation alerts. Every flag carries the source line it traces back to.

01 · Onboarding

Docs → spec in 3 minutes

Drop a PDF, form screenshot, or FAQ doc. Five Claude stages extract every field, rule, and routing path with a verbatim source quote. No hallucinated rules.

02 · Runtime

Decisions in 4ms

runTemplate(spec, request) → Decision is pure code, no LLM at decision time. The spec is data, the runtime is deterministic. Three-color verdict with full routing trace.

03 · Channels

Web · Email · Slack · Lark

A submission can come from anywhere. Reviewers see the same triage card across all surfaces. Web + email is the default; Slack and Lark are accelerators for already-connected tenants.

Citation contract — non-negotiable

Every field, rule, and routing approver Mirror emits carries a verbatim quote from your source document. If she can’t cite it, she drops the item. No fabricated policies — your AI is anchored to your own words.

Read the docs →Architecture, full pipeline detail, page map.