Skip to content
Event log

Every decision, queryable.

One append-only record of everything that happened: what was imported, what was drafted, what was held, what was refused and why, what went out and when. An audit trail you can hand a broker.

The log is the spine, not a feature bolted to the side

The briefing, “what happened with Nancy”, the cost meter and the compliance record are all queries over the same log. There is no second store that could disagree with it.

Which means a step that does not emit an event does not exist as far as the product is concerned. That is a deliberately harsh design: it makes an unlogged action impossible to build by accident, because the thing you built would simply not appear anywhere.

What is on it

  • Imports: what came in, how many rows, how many were textable.
  • Assessments: what Lewis concluded about a lead and when.
  • Drafts: proposed, edited, approved, skipped, dictated.
  • Verdicts: every hold and every block, with the rule that fired.
  • Sends: what went out, to whom, at what time.
  • Refusals: including the ones nobody asked about, like a compose refused because a lead was marked do-not-contact.

Why append-only

Because the value of a compliance record is entirely in the fact that it cannot be tidied up afterwards. A log you can edit is a log that says whatever the last person to look at it wanted it to say.

Entries are added. Nothing is rewritten and nothing is deleted, including a flagged problem, whose position in the sequence is half of what it means.

Message rows and log events are deliberately not the same thing. Recording both put every bubble on the transcript twice, so the log carries the decisions and the thread carries the words, and each is read from the place that owns it.

Next to this

Your book is already full of people who meant it.

Point Lewis at the export and he works it over text, every draft still waiting on your yes.