Flattening six channels into one queue is easy. Keeping that queue honest about what is actually urgent took three attempts.

Every channel disagrees about everything

A comment on one platform is a public reply that everyone can see. On another it is a private message with a support expectation attached. They have different edit rules, different deletion semantics and different ideas about threading.

Normalising them into one shape is straightforward. Doing it without destroying the information that made them different is not.

The latency problem

The hardest part was time. Platforms report timestamps inconsistently — some give you creation time, some give you the time their API learned about it, and the gap between those can be minutes or hours.

A queue sorted on those timestamps looks correct and is quietly wrong, which is the worst combination. Genuinely urgent threads sink and stale ones float.

Three attempts

The first sorted on reported timestamps and was wrong in the way above. The second tried to correct per platform with fixed offsets, which worked until a platform changed its behaviour without telling anyone.

  • We now track observed delay per channel as a rolling distribution rather than a constant
  • Urgency is computed from expected response window, not raw age
  • Threads whose timing we cannot trust are marked rather than guessed at
  • Sort order is explainable — you can ask why a thread is where it is

What we would tell anyone building this

Do not trust platform timestamps as a sort key. Measure your own delay to each one, treat it as a distribution, and be willing to say you do not know.

We use cookies

We use strictly necessary cookies to run the site, and optional cookies to understand usage and measure marketing. You can change your choice at any time. Cookie policy