Lost & Found

A multi-tenant lost-and-found SaaS for organizations - per-org roles, an invitation-based access model, and a closed auth bypass in the org-creation flow before it shipped.

Every campus or office building I’ve been in has some version of a lost-and-found - usually a shelf and a spreadsheet nobody checks. I wanted to build the actual multi-tenant version: any organization can sign up, manage its own members and permissions, and log lost/found item reports behind proper access control - not just one shared instance for everyone.

Multi-tenancy on top of Better Auth

Better Auth’s organizations plugin handles the tenant boundary itself: per-org membership, a role-based permission model, and an invitation flow where an admin sends an email invite via Resend, the recipient accepts, and only then gets scoped access to that org’s data. Nobody else’s items, members, or settings are visible or reachable.

An early draft of the org-creation endpoint let an unauthenticated request create an organization outright - a bypass I caught and closed before it ever reached production. It’s the kind of bug that’s easy to introduce when an endpoint feels like “just onboarding” rather than a security boundary, and exactly why the invitation flow needed a second look before shipping.

Making multi-step writes actually atomic

Invite-and-accept is inherently multi-step - create the invitation record, verify the token, add the membership, all of which needs to either fully happen or not happen at all. That’s what drove a migration to Neon’s transaction-capable serverless driver: without real transaction support, those steps were racy under concurrent requests instead of atomic.

Key decisions

Built with