Продвинутый модуль рассылки/подписки

Итак, ТЗ кратко: на сайте есть группы (sections) с подгруппами (subsections), содержащими компании (elements), которые постят новости (news). 
Авторизованные пользователи могут подписаться на группу, подгруппу или компанию (подписка на обновления разделов, компаний, новостей). В личном кабинете могут отредактировать подписки и выбрать интервал получения. 
Все вновь зарегистрированные посетители автоматически подписываются на все разделы. 

Ситуация такая: стандартный модуль рассылок не подходит - слишком прост, на marketplace готово модуля не нашел. 
Вывод: делать самому. 

Идея модуля такова: основа - две таблицы в БД:

Подписки (subscription):
  • ID (key, ai) - id подписки;
  • USER_ID - id пользователя к которому относится подписка;
  • IBLOCK_ID - id инфоблока;
  • SECTION_ID - id раздела на который оформлена подписка (необязательно);
  • ELEMENT_ID - id компании на которую оформлена подписка (необязательно);
  • SUBSCRIBE_ID - id рассылки (см. следующую таблицу);
  • SUBSCRIBE (Boolean) - подписка оформлена или отклонена (на случай, если подписка на весь раздел кроме какой-то определенной компании). 
И таблица с рассылками, она хранит когда, кому и с какой периодичностью отправлять письма. 
Рассылки (delivery):
  • ID (key, ai) - id подписки;
  • USER_ID - id пользователя к которому относится рассылка;
  • DATE_FROM - когда заведена рассылка;
  • DATE_LAST - когда последний раз было отправлено письмо;
  • PERIOD - число дней, с какой периодичностью рассылать письма;
  • THEME_ID - id тематики(рубрики) рассылки (на всякий случай);
  • DESCRIPTION - описание рассылки (на всякий случай). 
Итог: теперь мы можем запустить агента, который будет проверять кому пора сделать рассылку, сформировать из чего (разделы, компании, новости) должно состоять письмо для каждого и сформировать его. 

Всем прочитавшим: обращаю внимание, что это только концепция. Очень хотелось бы получить замечания, критику, советы от сообщества.