DEV Community

Miran
Miran

Posted on

One “Status” Column Wasn’t Enough for a Shift Confirmation Record

I separated the cleaner’s response, the shift’s current state, and the Cover Request decision so one spreadsheet row would not hide three different events.

A wall-mounted cleaning shift record keeps the cleaner response, current shift status, and Cover Request decision in three separate fields instead of one generic status
A cleaner replies:

Cannot make it.

If I only have one column called Status, what should I put there?

Cannot make it?

Pending Cover?

Pending?

All three can be true around the same shift, but they describe different things.

That was the problem I ran into while structuring a copy-ready shift confirmation record. A single row needed to show what the assigned cleaner said, what condition the shift is currently in, and what happened to the separate Cover Request.

Putting all of that into one generic status field would make the spreadsheet shorter.

It would also make the record harder to interpret.

One shift can have three answers at the same time

Take a shift scheduled for August 14 from 6:00 PM to 10:00 PM.

Jordan is assigned.

Jordan replies that they cannot work it.

An Owner or Admin has not decided what to do with the Cover Request yet.

The row now needs to preserve three separate facts:

Staff response: Cannot make it
Current shift status: Pending Cover
Cover Request status: Pending
Enter fullscreen mode Exit fullscreen mode

Those values are related, but they are not synonyms.

Cannot make it records what Jordan explicitly said.

Pending Cover describes the current staffing condition of the shift.

Pending describes the review state of a separate Cover Request.

If I replace all three with:

Status: Pending
Enter fullscreen mode Exit fullscreen mode

I lose the most useful part of the record.

Pending what?

A cleaner response?

A staffing problem?

An approval decision?

A generic field makes the row look simpler by pushing the interpretation back onto whoever reads it later.

The response should stay as history

The cleaner's response is an event.

If Jordan says Cannot make it, I do not want that value to disappear just because an Owner later approves a replacement.

The shift may move from:

Pending Cover
Enter fullscreen mode Exit fullscreen mode

to a newly assigned cleaner.

The Cover Request may move from:

Pending
Enter fullscreen mode Exit fullscreen mode

to:

Approved
Enter fullscreen mode Exit fullscreen mode

Neither transition changes what Jordan originally answered.

That is why the cleaning shift confirmation record template keeps Staff response separate from Current shift status.

The same applies to a normal confirmation.

If the cleaner explicitly confirms the specific assignment, the response can be recorded as Confirmed. The shift can also be Confirmed.

Those two values happen to look similar in that case, but they still answer different questions.

One is the recorded reply.

The other is the current condition of the shift.

The difference only becomes obvious once something changes later.

A Cover Request needs its own field

The cover decision created a second modeling problem.

Suppose the original cleaner cannot make it and the shift becomes Pending Cover.

An Owner or Admin now reviews a Cover Request.

That request can be:

  • Pending
  • Approved
  • Rejected

I could infer some of that from the shift status, but the inference breaks quickly.

A shift being Pending Cover tells me that staffing still needs attention. It does not tell me whether a specific Cover Request is still waiting for review or has already been rejected and now needs another manual decision.

Likewise, Approved should not simply overwrite the shift's existing data.

Approval means the Owner or Admin accepted the request.

The record still needs somewhere to put:

Reassigned cleaner
Reassigned cleaner confirmation
Enter fullscreen mode Exit fullscreen mode

Those are later facts.

They should not be squeezed into the Cover Request status either.

This gave me a useful rule for the row:

If two values can change independently, they probably should not share one column.

The shift can change without rewriting the original cleaner response.

The Cover Request decision can change without erasing why the shift needed cover.

The reassigned cleaner can then provide a separate confirmation.

Timestamps make the separation more useful

The record also keeps several times:

  • assignment sent at;
  • response time;
  • last manual reminder.

Those timestamps would be much less useful if the events around them were collapsed.

For example:

Assignment sent at: Aug 12, 2:10 PM
Staff response: Cannot make it
Response time: Aug 12, 2:45 PM
Last manual reminder: Aug 13, 9:00 AM
Enter fullscreen mode Exit fullscreen mode

Now I can tell which event happened when.

I do not have to guess whether the reminder came before the cleaner replied, whether the response existed before the Cover Request, or whether the row's current state is being mistaken for its history.

Not every transition needs its own audit system in a small tool.

But keeping the important event fields distinct gives the row enough structure to remain understandable after the workflow moves forward.

Do not let the row prove more than it records

There is one more reason I wanted the fields to stay narrow.

A before-shift confirmation record can show who was assigned, whether that person explicitly replied, whether the shift needs cover, and what happened to a Cover Request.

It cannot turn those records into attendance evidence.

A Confirmed response does not prove that the cleaner arrived.

A reassigned cleaner's confirmation does not provide clock-in or clock-out time.

The row does not prove hours worked, completed tasks, cleaning quality, or proof of service.

Those would require different records with different fields.

That boundary is easier to keep when each column already has one specific job.

Staff response records the reply.

Current shift status records the shift.

Cover Request status records the cover decision.

Once those three ideas stop competing for one Status column, the rest of the row becomes much easier to reason about.

Top comments (0)