This document discusses implementing an "Outbox" pattern using model checking to ensure correctness. It describes how traditional two-phase commit is insufficient to handle anomalies like duplication and reordering. The Outbox approach uses transport and data store transactions along with publishing to address edge cases. Model checking with TLA+ specification language is advocated over just automated tests to model system states and verify properties like no duplicated processing. Several demos are presented to illustrate issues like ghost messages, lost messages, and consistent output.