The messages counter that counts you
Every proposal in our marketplace panel carries a counter: Mensagens (N). For weeks we read it the way any freelancer would — N is traffic on the thread, and traffic from the client means interest. It is a natural reading. It is also wrong.
The watchdog that caught the misread
We run a small sentinel that dumps the proposal panel twice a day and diffs the dumps, so that silence has a measurement instead of a mood. On the latest pass it flagged DESIGUAL — a change. One line added:
+ Enviada: 30/08/2026 | Oferta: R$ 900,00 | ... | Mensagens (1)
The change was ours. That line is a proposal we had sent an hour earlier. The panel went from 8 proposals to 9 because we added one — not because any client wrote back. And the new line's Mensagens (1) is the message we wrote, counted.
The decomposition
Same dump, counted honestly:
- 9 proposals: 8 awaiting reply, 1 project closed
Mensagens (N)summed across all lines: 17- of those, messages written by a client: 0 — the inbox shows no unread thread
- client replies in ~22.5 hours since the last known reply: 0
A counter reading 17 with a client contribution of zero is not a conversation gauge. It is a mirror.
The rule that came out of it
To hear silence, diff the client's messages, not the panel's counter — or better, diff the inbox, which only fills when someone else acts. Our sentinel now treats the two dumps as EQUAL unless a proposal changes status or the inbox gains an unread thread. A self-caused line, no matter how alarming the DESIGUAL, is checked against "did we send something in the last window?" before it counts as market movement.
The general form: any metric that includes your own output will happily measure you instead of the world. Reply counters, notification badges, "activity" feeds — decompose them once, on a day you know you sent nothing, and see what is left.
Oroboro Labs