KonSchool
🏫 🇧🇩 Fuzzy-AHP-based recommendation system for secondary schools in Bangladesh
Install / Use
/learn @maacpiash/KonSchoolREADME
Kon School? (Bengali: কোন স্কুল?, meaning "Which school?") is a recommendation system that gives secondary schools personalized compatibility scores based on user's preferences.
<div id="toc"> </div>Process
Criteria of Schools
- Teacher-student ratio
- Male-female ratio (among students)
- Socio-economic status (of guardians of students)
- Distance of school from home
- Age of school (based on year of establishment)
- Difference between the age of the child and the average age of the students in the intended class (grade)
Inputs
- Crisp inputs: student data (age, sex, class (grade), location, guardian's profession)
- Fuzzy inputs: pairwise comparison between criteria of schools: 5 comparisons for 6 criteria
Calculation
After getting the inputs, the system
- uses these linguitic values to run Fuzzy Analytic Hierarchy Process (Fuzzy AHP) to evaluate weights of each criterion
- takes data from a dataset on secondary schools of Bangladesh and calculates comparative values for each criterion
- gives each school a score, which is a sum of weighted criteria-values.
For more details on calculation of weights from fuzzy inputs, please check the docs.
Outputs
- Weights of 6 criteria
- Compatibility scores for all eligible schools
Data on schools
The dataset on schools that is used for this system was compiled from several datasets that were originally collected from Bangladesh Open Data. It contains the data on 14,274 schools across the country. The SQLite database can be found here. You can also use API endpoints to access the data (view the REST API section below for further instructions).
The collection of data and its preprocessing is discussed in the docs.
Running the web app locally
There are two ways.
Compilation of source
If you have .NET Core SDK (v3.1) installed, you can run the application directly from the source:
git clone https://github.com/maacpiash/KonSchool
dotnet run --project KonSchool/src/KonSchool.csproj
Now, navigate to either http://localhost:5000 or https://localhost:5001.
I recommend this method over the next one. You can download .NET Core SDK from Microsoft.
Docker image
If you do not have Docker installed, please follow the official documentation.
For the first time, you may run the following command, which would download the docker image from Docker Hub, create a container from the image and start the container:
docker run -it -p 5000:80 --name konschool maacpiash/konschool
Now the application can be accessed via http://localhost:5000. Omit the -it part from the command if you want to keep it running in the background.
From then on, every time you need to use the app, run the following command to start the container that was built the first time:
docker container start -i konschool
The app can now be accessed from http://localhost:5000. Omit the -i part from the command if you want to keep it running in the background.
To stop the container running in the foreground, press Ctrl + C. If you started the container in the background (as a Windows service or a daemon on Unix/Linux), run the following command to stop the container:
docker container stop konschool
REST API
In addition to the server-side-rendered pages, there are two RESTful API endpoints:
Fuzzy AHP endpoint, /api/fahp
This endpoint can be used to get results of 6 criteria by providing 5 integers (between -9 and 9, inclusive).
Examples:
/api/fahp/0,0,0,0,0would return equal weights for 6 criteria (0.166...)./api/fahp/1,2,3,4,5would return 6 weights that are exponentially increasing./api/fahp/-5,-4,-3,-2,-1would return 6 weights that are exponentially decreasing.
For detailed information regarding the integer values, please check the docs.
School data endpoint, /api/schools
This endpoint can be used to access data of schools. Schools can be queried about by EIIN, divisions or districts.
Examples:
/api/schoolswould return the data of all the schools./api/schools/div/RAJSHAHIwould return the data of all the schools inside the division of Rajshahi./api/schools/dis/BOGRAwould return the data of all the schools inside the district of Bogra./api/schools/100005would return the data of the school with EIIN 100005.
All these endpoints return response in standard JSON format.
Acknowledgement
I am very grateful to Dr. Rashedur M. Rahman (NSU ECE, Google Scholar), Professor at Department of Electrical and Computer Engineering, North South University; and our honorable instructor of the Fuzzy Logic course (CSE470). He mentored my group on this project and made sure our research work got published in Springer and presented at a prestigeous conference.
I would also like to thank my groupmates — N.S.M. Rezaur Rahman, for the development of the mathematical model; and Abdullah-Al Nahian Siraj, for his cooperation with finding related research paper.
Contributing
This project is under GNU Affero General Public License v3. Please read the contribution guideline in advance.
Related Skills
node-connect
349.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.7kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
