Provider boundaries before scale

When a product starts moving quickly, direct vendor calls feel efficient.

They also become structural debt.

Textree uses provider behaviours so domain logic never depends on one vendor’s request format, auth model, or retry semantics. That gives the Phoenix app a single place to enforce:

  • outbound SMS safety
  • webhook normalization
  • funding boundaries
  • future vendor swaps without rewriting controllers or LiveViews