Who may act?
Firebase identity, workspace membership, and roles decide who can review, approve, or sync a bill.
Applied AI case study / 2025—present
I built SyncABill to turn emailed and uploaded invoices into reviewable accounting records. Gemini reads the document. Deterministic code controls what happens next.
01 / THE WORKFLOW
Invoices arrive by upload, forwarding, Gmail, or Microsoft 365. Before Gemini runs, SyncABill checks the file, rejects exact duplicates, reserves plan usage, and keeps the original document for review.
The model proposes vendor names, dates, totals, line items, and expense accounts. Application code checks the response, resolves the account against the real ledger, and applies the controller’s review rules before QuickBooks Online or Xero receives it.
02 / WHY THE SHELL MATTERS
Firebase identity, workspace membership, and roles decide who can review, approve, or sync a bill.
Ordinary code checks totals and confirms that suggested accounts exist in the connected ledger.
The account controller sets the review policy. The model does not choose its own level of oversight.
Content hashes, operation locks, duplicate checks, and provider idempotency protect the manual sync path.
03 / SECURITY
I completed Google’s CASA Tier 2 security assessment and brought SyncABill to SOC 2 readiness. The product uses least-privilege OAuth, encrypted provider credentials, signed uploads, role checks, audit events, and bounded retries.
A candidate set of facts parsed from an untrusted document.
A checked, authorized, recorded action with a visible failure state.
CASA Tier 2 is a completed security assessment. SOC 2 readiness means the controls were prepared for an audit. It is not a claim that SyncABill completed SOC 2 certification.
04 / THE AUDIT
SyncABill is an early production product. Accounting auto-sync is disabled. The current production model is Gemini 2.5 Flash-Lite, and a newer model will not replace it until a versioned invoice test set can show that the change is safer.
05 / WHAT I OWNED
I founded the product and own its requirements, architecture, testing, review, failure handling, integrations, and operation. I use coding agents to implement software, then inspect and test what they produce. The product decisions and accepted results remain my responsibility.