replaced ReporterMixin with a standalone send_webhook function
switch to explicit relative imports