Inbox Admin

Changelog

What's new in Inbox Admin. Updated biweekly.

For the complete technical changelog, see CHANGELOG.md on GitHub.

QuickBooks audit remediation: honest dashboard, vendor picker, webhooks, branded drip emails

September 7, 2026

What customers can do now

  • The QuickBooks page tells the truth about the connection: a broken or expired connection shows an amber "Reconnect" banner with the reason instead of a green light, and sandbox connections are badged.
  • One status vocabulary everywhere: Posted / Skipped (duplicate) / Failed. Failed rows say why, show the source email subject, and format amounts in their own currency. Posted rows deep-link to the bill or expense in QuickBooks Online.
  • Vendor mappings show real QuickBooks vendor names, and a Change picker (backed by the synced vendor list) lets you remap a vendor without leaving the page. Attention items link straight into the review queue.
  • Vendor, account, and reference data now stays fresh automatically: QuickBooks pushes changes to us via webhooks, with a change-data-capture sweep every 6 hours as the guaranteed catch-up.
  • Waitlist nurture and activation emails are branded HTML (logo, hero image, unsubscribe footer) from "Inbox Admin", and the sequence no longer asks for a Google sign-in.

Technical changes

  • Critical fix: retryFromLedger replayed failed Purchases as Bills; it now branches on the ledger's qbEntityType for the create and the attachable ref.
  • Vendor resolution is race-safe: the VendorMapping row doubles as a claim lock (pending sentinel, CAS takeover after TTL), fuzzy snapshot matching gates creation, and Intuit duplicate faults adopt the existing vendor.
  • Structured QbApiError with a total fault classifier drives skip, dead-letter, and retry decisions.

Marketing engine: waitlist nurture, morning post digest, social kit

September 4, 2026

What customers can do now

  • People on the waitlist get a short email sequence from Billy over their first two weeks (welcome, the free inbox audit, the three things you never do again, how to move up the line), each with a one-click unsubscribe that keeps their spot.
  • The waitlist join form is email only. No Google sign-in until activation.

Technical changes

  • WaitlistEntry nurture columns and a MarketingPost calendar table.
  • Crons /internal/cron/waitlist-nurture (9am ET) and /internal/cron/marketing-digest (7am ET), scheduler-secret authenticated.

Beta waitlist: invite-only signup with activation links

September 4, 2026

What customers can do now

  • Every "Start free trial" button now reads "Join the waitlist" and leads to /waitlist. Sign in with Google to hold a spot; the page shows your place in line, and later whether you are approved or active.
  • Approved people get a one-time activation link by email. Opening it and signing in with the same Google account sets up the workspace and starts the usual Gmail onboarding.
  • Open self-serve signup is closed while the beta is invite-only. Team invitation links keep working.

Technical changes

  • New WaitlistEntry table and WaitlistStatus enum.
  • Activation rides the existing signup OAuth flow with token validation.

Rules workspace: see your rules working on your real email

August 14, 2026

What customers can do now

  • The Rules page now opens on your recent email: every message shows who sent it, the subject, and which rules touch it, 25 at a time with paging, plus a full mailbox search using Gmail terms like from:acme.com or has:attachment.
  • Hover any email and click "Catch emails like this" to start a new rule prefilled from that message.
  • The Rules lens shows every rule with a live match count. Click the count to open the Match Lab.
  • The Match Lab draws the connections: pick a rule and the messages it catches light up with animated wires; amber dashed wires mean an email is one condition away.

Technical changes

  • New endpoints: GET /rule_sets/messages and POST /rule_sets/match-preview.
  • Near-miss classifier in apps/api/src/lib/near-miss.ts.

Rule Doctor: see why a rule isn't catching an email

August 12, 2026

What customers can do now

  • See why a rule isn't catching an email. A new "?" icon in the rule builder opens Rule Doctor: a debugger that runs the rule against real inbox mail and shows exactly which condition failed.
  • Test a rule against real emails, not just a canned example.
  • Fix a rule from an example email with one click.
  • Build "is any of" rules in the builder for sender domains, addresses, or subjects.

Technical changes

  • New evalNodeTraced evaluator with per-condition tracing.
  • New buildEmailFingerprint and proposeWideningEdit functions.

No more silently skipped rules under load, sturdier classification

August 12, 2026

What customers can do now

  • Rules now run on every message, even during busy bursts. When many emails arrived at once, some messages could silently skip rule processing entirely. Processing now retries and re-queues until rules run.
  • Classification quality holds up under load. Transient capacity limits at the document classifier now retry before falling back.

Technical changes

  • processEvent lock acquisition: 6 attempts with full-jitter exponential backoff, then throws typed PipelineLockError.
  • requestVertexAI retries 429/500/502/503/504 and network failures with full-jitter backoff.

Overage billing precision and stable rule ordering

August 11, 2026

What customers can do now

  • Pro plan overage now caps at exactly 250 pages ($50). A rounding quirk in incremental usage reporting could stop metered billing one page short of the cap.
  • Rule lists always show the same order. Rules sharing the same priority now display and resolve in a stable, consistent order everywhere.

Technical changes

  • Extracted metered overage math into a pure usage-report-math.ts helper computed in integer cents.
  • Canonical rule comparator shared by processEvent and getResolvedRules.

Rule builder AND/OR, apply to past results, and voice assistant improvements

August 6, 2026

What customers can do now

  • Rule conditions can now match all or any. Build a rule with "any" (OR) logic and it stays that way.
  • Apply to past always shows a result, even when zero messages match.
  • The voice assistant can answer questions about your review queue.

Technical changes

  • New get_review_queue voice read tool.
  • Rule builder v3 draft now persists conditionLogic (all/any).

Security and privacy hardening

July 16, 2026

What customers can do now

  • Disconnecting Gmail now fully removes your data. When you disconnect a mailbox, Inbox Admin revokes its Google access and deletes the stored login token, the synced messages, and their attachments.
  • Real account deletion. A full erasure path removes an organization and all of its data.
  • Lock down where rules can forward. You can now restrict forwarding to your own or approved domains.

Technical changes

  • Closed a cross-tenant hole in the in-app inbox audit.
  • Calendar webhook now verifies an HMAC channel token.
  • New retention cron purges attachments, messages, and expired inbox-audit prospect sessions.

Export a year of your receipts

June 22, 2026

What customers can do now

  • Download a year of receipts in one click. A new "Export receipts" card in Settings lets you pick a year and download a ZIP of every receipt and invoice.
  • Nothing new to set up. It reads the receipts already captured from your inbox.

Technical changes

  • Shared export engine: extractStoredReceipts feeding packageExport (CSV plus original source files plus manifest.json, zipped).
  • Durable ReceiptExportJob model with async flow.

Turn the voice button on or off, and rule previews that tell the truth

June 16, 2026

What customers can do now

  • Show or hide the voice button. The floating voice button is now off by default.
  • Rule previews tell the truth. The "what this rule will catch" count now reflects the emails that actually match.
  • Clearer errors when a rule condition can't work.

Technical changes

  • Per-user User.voiceControlEnabled + voiceButtonPosition columns.
  • Rule preview headline now driven by precise evalNode matches.

Cleaner marketing copy and a footer on every page

June 15, 2026

What customers can do now

  • Every marketing page now ends with the same footer with copyright and quick links to Security, Privacy, Terms, and DPA.
  • Site copy reads cleaner and more consistent. Punctuation is simpler, number ranges read as "60 to 80%".

Technical changes

  • AP-style copy pass across the five marketing pages.
  • Extracted the homepage footer into a shared SiteFooter in design-system.tsx.

Rules engine hardened against every input we can imagine

June 11, 2026

What customers can do now

  • A single old or corrupted rule can no longer stop your other rules from running.
  • Rules with the same priority now run in a stable, predictable order.
  • Previews of chained rules now show exactly what will happen live.

Technical changes

  • Four engine fixes from the expanded gauntlet.
  • Exhaustive truth-table suite: 71,286 enumerated cells.

Import your existing Gmail filters

June 10, 2026

What customers can do now

  • A new "Import from Gmail" button on the Rules page reads the filters you already built in Gmail and turns each one into an Inbox Admin rule.
  • Each filter shows exactly what will carry over; anything that can't be translated is labeled instead of silently dropped.

Technical changes

  • Deterministic Gmail filter to rules-DSL converter.
  • New bulletproof gauntlet stage: import parity.

For changes prior to June 2026, see the full changelog on GitHub.