Model United Nations Northwest SMS Admin
A conference messaging tool for managing participant contacts and sending timely announcements to the right groups.
Why I built it
Model United Nations conferences need to communicate with a lot of people at once, but not every announcement belongs in every participant's inbox. Delegates may need one update, advisors another, and staff or secretariat members something more specific.
I built this system for Model United Nations Northwest so conference administrators could keep those contacts organized and send announcements from one practical interface. It is now used by several of the largest Model United Nations conferences in the Pacific Northwest.
What it does
An administrator selects a conference, imports its participant list from a CSV, and can then search or edit those records in the dashboard. Participants are organized as delegates, advisors, staff, or secretariat, which makes each group available as a messaging audience.
Messages can be sent immediately or scheduled for later. They can also include fields such as a recipient's first name, last name, phone number, or participant type, so a bulk announcement does not have to feel entirely generic.
Behind each message
The application is built with FastAPI and SQLAlchemy, using PostgreSQL in production and Twilio for delivery. Each conference has its own participants, administrators, colors, and message history, while authentication and CSRF protection keep the operational pages private.
Scheduled messages are checked once a minute. A PostgreSQL advisory lock prevents multiple application workers from processing the same queue at once, and each message keeps a recipient-level delivery record. CSV imports also normalize common encodings and phone-number formats before a contact reaches that queue.
What I learned
This project made the less glamorous parts of a real administrative tool feel concrete. The interface matters, but so do malformed spreadsheets, duplicate contacts, scheduled jobs, concurrent workers, and a useful record of what was sent.
Building around an actual conference workflow pushed me to think beyond the happy path. The result is not a demo of SMS delivery; it is a small system designed to remain understandable when organizers are using it during a live event.