defmodule Productive.PipelineBehavior do use Behaviour @type opts :: [opts] | %{opts => opts} @type product :: struct defcallback call(product, opts) end