I am looking to develop a basic mentoring and tutoring app that can match volunteers to students. Any advice on this & programs/algorithms to use for this?
Above is very high level idea to implement it. So you can look into various ways to develop this keyword extraction algorithm( https://monkeylearn.com/keyword-extraction/ ). Machine learning (NLP) could be one of the way.
Deepak recommends the following next steps:
1. Related to Wesley's comment about defining user stories, I would suggest viewing a few related YouTube video from Jeff Patton on story mapping and user personas - this may help you with the fundamentals of documenting that user experience before you start building.
2. There are a lot of mentor app code repos publicly available on Github - I would recommend searching and browsing through those repositories and looking at the technologies they use to see if any of them resonate with you / your interests / your goals.
Some things to keep in mind for the development of any program are:
What goals do you want to accomplish?
What user stories are there (what would it look like to be a user (volunteer or student) using this)?
What technologies are best suited for your use case?
These questions help orient your development and give you a user driven approach.
The first question about goals helps to focus your efforts and assists when you're making decisions. Think about what it is you want the end product to look like. Think about what you want the impact to be.
The second question is more specific and asks you to put yourself in the shoes of those that will use your app. What do you want them to see and experience when using it? What goals do they have and how will you help them accomplish them?
The last question builds upon the previous two by looking into the implementation. An app doesn't necessarily have to be on a phone. It could be a website, or even integrated into a social media service with an API, perhaps. Then, once you've settled on how it should look, explore the different technologies needed for that area (Java/Kotlin for Android, HTML/CSS/JS for web, etc).
Those were more broadly applicable ideas. For your idea specifically, there are additional things that may be important to note.
For example, matching volunteers and students means that you may need to store data on people, such as name and location data. When storing data, you must consider security and privacy, in addition to the physical need to store and retrieve that data. Also consider that there are laws surrounding data collection for those under 13, so if your app concerned it, that demographic of students - or even all students - could be reached through their parents/guardians. If your app does not collect the data for this, then consider how the approach will work. Maybe this is something built in collaboration with your school so that you do not strictly need to store and track personal data.
For some implementation ideas, if you're going to develop a typical app, one well established route is to go with Android. Android develops in either Java or Kotlin and you can use Android Studio with tons of tutorials for app development. Without knowing any specifics of how matching is done between volunteers and students, I can't say I can recommend any specific algorithm. If the matching is important, consider what data you can use when determining how matching is done and refer back to your goals.
My last bit of advice is to speak with your potential users! Ask around and see what people think of the idea and if they have anything to contribute. I'm thinking that you have personal experience that related to why you want to develop this app, so compound that with what other people think. Sometimes, you will discover needs that you did not realize were important. Find stakeholders who can be involved in development and aid you along the way; people who are invested in your success are powerful resources!