Looking for help constructing a utility to manage sending notifications (email/text/in-app) to users based on various event types, utilizing a message queue on a redis server.
Our system (postgres) has a table of Users which are grouped together into "Families" by a column called "family_id" — each user also has rows in a table called "Notifications" that describe how they would prefer to be contacted, and about what.
There are various components of our system that continuously run processes against user accounts — these processes sometimes encounter an event that requires a notification to be sent to the user and their "family". At the moment all of these processes must contain their own logic for family notifications, and this has become untenable.
I want to create a queue on our existing redis server that can accept events from these processes, which will contain an "event type" and the user_id of the "triggered user", and a json field for other errant data.
The notification utility you will build will watch this queue and query the Users/Notifications table for family members and their notification settings, and then trigger an email, text message, or an in-app notification (simply inserting a row into an "alerts" table).
We use twilio for text message, and will be using a solution such as Intercom for email.
To be clear, the specific work we’re looking to have done here is:
* help set up an additional queue in our redis server
* write code that interacts with the queue, users, notification preferences, intercom, and twilio (preferably python, or something else that can be eventually integrated into AWS Lambda)
You will not be responsible for writing the code that adds messages to the queue, nor writing the copy that will be sent out to users, nor interacting with any other part of our platform but the database.
We would like for this notification system to be flexible enough that we can add some features to it later (such as notifications that don’t send out until a certain time).
Less than 30 hrs/week
Less than 1 month< 1 monthProject LengthDuration
I am looking for a mix of experience and value