
This week on Project Culper, I built out tenant invites: the piece we needed before we could start real multi-user testing.
Up to now, the only way into a tenancy was the original signup flow, meaning every tester needed a separate workspace. That is not how the product will actually be used, so I added a proper invite system. A manager can generate a one-time invite link from account settings, optionally attach a short note, and the link expires automatically after seven days. Behind the scenes, that is a token stored against the tenant, the inviting manager, and an expiration timestamp, checked for validity on every use.
On the receiving end, I built a dedicated accept-invite page. Whoever gets the link sees which workspace they are joining, sets an email and password, and lands straight in the app under that same tenancy. Bad or expired tokens get a clear error and a path to create a new workspace instead. In settings, managers now see pending and past invites at a glance, so they know who has joined and who still needs to.
I also spent time on the review queue and entity linking work, tightening up how entities get matched and reviewed, and fixed a couple of rough edges in user settings while I was in there.
With invites in place, we can get multiple real users into one tenancy without hand-editing the database, which is exactly what we need heading into this next round of testing. Next up: watching how that flow holds up once actual testers start clicking through it.