The read model we built before anybody asked

A denormalised projection built for a dashboard that was specified, prioritised and then never scheduled.

what it cost, over eight months:

  the projection itself       4 days
  keeping it in sync          a subscriber, and 3 bugs
  the backfill after each     ~2 hours, five times
    schema change
  the confusion               two people queried it
                              instead of the source and
                              got stale numbers

what it was used for: nothing.

The projection was the right shape for a requirement that did not arrive, and the cost was not the four days — it was the eight months of a second copy of the truth that had to be maintained and that people found. Deleting it took an afternoon. The rule since is that a read model is built when the query that needs it is measured and slow, not when it is anticipated.