Engineering

Nothing derived is stored

Published: September 13, 2026 By: EvolvLabs

A commercial building has an occupancy rate. Every property management system will show you one. Ask most of them what the occupancy was on the 15th of March, and they will either show you today's number or a report somebody saved. TenantLogix will compute it, because occupancy is not a thing we store. It is a thing we derive.

The rule

Nothing derived is stored. Occupancy, lease status, current rent, balances, aging, service-level breaches, compliance state: none of these is a column. Each is computed in the query from source facts and a date. The source facts are the things that actually happened: a lease was signed with these terms, a payment arrived on this day, an insurance certificate lapsed on that one.

This sounds like a database purist's preference. It is not. It is the only way we found to answer the questions a property manager actually asks, which are almost always about a date other than today.

Three times, kept separate

Every fact in TenantLogix has three dates attached to it, and the system never lets them blur together.

  • The as-of date is the date you are looking at. Today, by default. Any day, on request.
  • The effective date is when the fact became true in the world. A lease amendment signed on the 20th but effective from the 1st has an effective date of the 1st.
  • The recorded instant is when the system learned about it. That amendment was recorded on the 20th, whatever it says on its face.

With those three kept apart, the application can do something most systems cannot. Move the as-of date to the 15th of March and every figure on every screen recomputes to what was true then. Occupancy, rent roll, who owed what, which certificates were valid. And while you are looking at the past, the application goes read-only, with a mode bar to say so, because a write "as of" a date that has already happened is how audit trails become fiction.

fact row: in effect from its effective dateEFFECTIVE DATEwhen it became true · Mar 1RECORDED INSTANTwhen the system learned · Mar 20, 14:07AS-OFthe date you look atread-only while in the past
Three dates on one fact. The as-of cursor is the only one a reader moves, and moving it recomputes everything.

What a write actually is

There is no such thing as editing a record. Every write is a command: a unique command id, the as-of date, the effective date, a reason if that effective date is backdated or in the future, the data, and the version of the record the writer believed they were changing.

The command runs inside a serializable transaction. It reloads the caller's membership and checks their authority against the workspace's role policy. It refuses the write unless the as-of date is today. It applies the change as a new fact row, never an update to an old one; append-only guards in the data layer reject the update outright. Then it records an audit event, with the actor, the role, the verb, the subject and the before-and-after, and a command receipt keyed by that command id. Retry the same command and you get the same receipt back, not a second write.

Undo is a retraction row, which is itself a fact with its own dates. History gains an entry. It never loses one.

Why a property manager should care

Because the questions that get people into trouble are all questions about the past.

An owner wants last quarter's statement, as it stood at the time, not as it stands after three months of corrections. A tenant disputes a late fee and the argument turns on what the balance was on the 15th, before the payment that landed on the 16th. An insurance auditor asks which units were covered on the day of the incident. A lease amendment gets signed with a backdated effective date, and the month-end figures for the months in between have to change without anyone rewriting history to make them change.

A system that stores derived numbers answers these by hoping somebody kept the right report. A system that derives them answers by moving a date.

Square feet, not unit counts

One more rule, smaller but of the same kind. Residential software counts units, and treats a 24,000 square foot anchor tenant like a one-bedroom apartment. Commercial buildings do not work that way. In TenantLogix, occupancy is leased square feet over rentable square feet, rent is dollars per rentable foot, and shared area charges are pro rata by area. The number the operator gets is the number their lender and their owners already use.

Where it stands

TenantLogix is built for the operator in the middle: three to thirty commercial buildings, a couple of owners, and no appetite for a nine-month rollout. The application exists and runs. It is in development, deployed in a pre-launch shape, and the product site is live at tenantlogix.com.