First and foremost, welcome Sean!
Let me dive right in to answer your questions;
seangalla Our users aren’t interested in all the different topics in our community. Some they will find offensive. So we need to allow the user to "curate" their home feed by joining or leaving various sub-forums. Similar to Reddit, we want users to "join" sub-forums of interest and then only see that content in the home feed. This requires 1. A user to be able to “join” or “leave” categories with ease and 2. The home page to only display the latest / newest etc posts from the “joined” categories and to NOT display anything from categories they haven't joined.
👷♂️ needs to be build
About a year ago I came up with a similar idea with @BartVB. We haven't been able to build this yet, but here's the gist. Once a user signs up on the community they get the option to choose from (a preselection of) tags which interest them. All other tags are then marked as ignored using the existing extension FoF follow tags. The user can change these preferences from the tags screen or perhaps from the user settings as well.
Robust Direct Message feature. Allows for individual one-on-one and group direct messaging. (Mighty Networks was great for this)
✅ exists
FoF Byobu allows for Private Discussions between users and groups. It can be modified to suit your exact needs.
User roles for different paid membership tiers.
✅ exists
Blomstra Payments allows you to integrate with Stripe to offer permission groups based on payment tiers. This extension can be modified, or gain more payment service providers.
❓needs clarification
What exactly does robust mean? What features do you expect from this exactly?
Customizable user profile pages. We get to set the profile fields we want to see.
✅ exists
Formulaire is able to do this. https://kilowhat.net/flarum/extensions/formulaire
A robust member list with profiles. This member list will need to be filterable by things like "most active", "newest", "closest to you", "online now", and "moderators".
✅ exists
For User Directory is able to do some of the features you mentioned. It can be modified and extended to become feature complete for you.
A robust events list: Displays ALL community events, allows Recurring events, "Add to calendar" event links, RSVP availability, zoom link etc. (Mighty's is awesome.)
👷♂️ needs to be build
I'm not entirely sure, there are some projects out there that add events calendars to Flarum but they are either not well maintained or not finished. We could pick one up and finish it or build one from scratch. See for instance: https://extiverse.com/extension/webbinaro/flarum-calendar.
VERY mobile-friendly. Responsive.
✅ exists
Flarum is mobile first. It does not offer mobile push notifications, but that's something the PWA extension can do.
Robust search functionality
✅ exists
Flarum in itself provides moderate search functionality. It's rather limited on larger communities and when you need better matching algorithms. For that there are some alternatives like the Scout and Elastic extensions.
Intelligent and customizable notifications.
✅ exists
Flarum offers many notifications and allows users to customize which ones they need. As this requirement looks fairly vague I'm not entirely sure what "intelligent" nor "customizable" means in this context.
Customizable user onboarding (force users to fill in profiles before entering forums)
✅ exists
This goes hand in hand with Formulaire. See user profiles question.
The ability to lock off entire sections and feature sets (forums, member list, events list) to different user membership tiers. (So we can one day offer a "freemium" section and upsell them to our membership).
✅ exists
Everything in Flarum is tied to user group or permission groups.
Robust API so we can trigger actions in external platforms in response to actions users take on the platform (via Zapier).
✅ exists
Flarum is a SPA, single page application, which means that it works from the client as javascript mostly. As such any interaction you make is API driven, this API is available from the outside as well.
Let us know if you have any further questions.
As you posted this in Support and not in Services I am not allowed to promote the company I represent that can tackle all the required work. If you would like to move forward feel free to flag the discussion to be transferred by a mod.
List of extensions compatible with the latest Flarum version: https://extiverse.com