Develop a solution to analyze testline quiz performance and predict student rank based on past year NEET exam results. (You can use any tech-stack of your choice)
App Link: NEET Testline - on Google Play
You will work with two datasets:
- Current Quiz Data: Details of a user’s latest quiz submission, including questions, topics, and responses, etc.
- Historical Quiz Data: Performance data from the last 5 quizzes for each user, including scores and response map (Key: Question Id, Value: Selected option id).
- Analyze the Data:
- Explore the schema and identify patterns in student performance by topics, difficulty levels, and response accuracy.
- Generate Insights:
- Highlight weak areas, improvement trends, and performance gaps for a given user.
- Rank Prediction:
- Develop an algorithm/probabilistic model that predicts the student's NEET rank based on their quiz performance and previous year NEET exam results.
- Bonus Points:
- Extend your solution to predict the most likely college a student could be admitted to, based on their predicted NEET rank.
Submit the source code via a GitHub link, including:
- A README with setup instructions, project overview, and approach description.
- Screenshots of key visualizations and insights summary.
- A 2-5 minute video demonstrating the script/API with sample inputs, output, and a brief explanation of the logic and recommendations.
To follow the submission guidelines, here's a detailed breakdown of what you need to include in your GitHub repository:
/project-root
├── /app
│ ├── /models
│ ├── /utils
│ └── controller.py
├── /tests
│ └── test_controller.py
├── README.md
├── requirements.txt
├── /assets
│ ├── screenshots
│ └── video_demo.mp4
└── index.html
This project provides a comprehensive analysis of student performance in quizzes, generates insights, and predicts ranks based on quiz performance. The key features of this project include:
- Performance Analysis: Tracks accuracy, score, mistakes, and overall performance.
- Insights Generation: Provides insights like weak areas, trends in performance, and recommendations for improvement.
- Rank Prediction: Predicts the rank of a student based on their quiz performance.
- College Prediction: Suggests a college based on predicted rank.
The backend is implemented using FastAPI, with endpoints that allow users to:
- Analyze performance.
- Generate insights.
- Predict rank and college based on the rank.
- Python 3.x
- FastAPI
- Uvicorn (for running the FastAPI app)
- NumPy (for data processing)
To run the tests, use the following command:
pytest tests/test_controller.py
-
Performance Analysis:
- Analyzes historical quiz data by tracking student performance metrics such as accuracy, total score, mistakes corrected, and rank.
-
Insight Generation:
- Based on performance analysis, generates insights such as overall performance, weak areas (topics with accuracy below 50%), and performance improvement trends.
-
Rank Prediction:
- Predicts the rank of a student based on a set of features (score, accuracy, mistakes corrected, etc.) using a trained model.
-
College Prediction:
- Based on the predicted rank, suggests a college from a predefined set of colleges and their rank ranges.
-
Visualizations: Screenshots of the analysis, insights, and trends can be found in the
assets/screenshots
folder. -
Insights Summary:
- Overall Performance: The average accuracy and scores across all quizzes.
- Weak Areas: Topics with accuracy below 50%.
- Improvement Trends: Comparison of performance over time (improvement or no change).
- A 2-5 minute video explaining the logic and recommendations of the system, including a demo of the API in action with sample inputs and outputs, can be found in the
assets/video_demo.mp4
file.
This project is licensed under the MIT License - see the LICENSE file for details.
Include screenshots in the assets/screenshots
folder to show key visualizations of the results. For example:
- Performance Analysis: A table or graph showing a student's overall performance.
- Weak Areas: A bar chart showing topics with the lowest accuracy.
- Improvement Trend: A line graph showing the accuracy improvement over time.
You can generate these visualizations using libraries like Matplotlib, Seaborn, or Plotly, and save them as PNG or JPG images.
Record a 2-5 minute video explaining the functionality of the project. The video should cover:
- Overview of the Project: Briefly explain what the project does and its key features.
- API Walkthrough: Demonstrate the functionality of the API by making requests to it (using Postman or a similar tool) and show the sample inputs and outputs.
- Logic and Recommendations: Briefly explain how the logic works, what data is used for analysis, and how the predictions and insights are generated.
- Where to Find the Files: Point to the screenshots and video files in the repository.
Save the video as video_demo.mp4
and place it in the assets
folder.
Ensure that your test files are located in the tests
folder, and that they properly test the functionality of your API. This should include unit tests for all key functionality in your controller.
Generate a requirements.txt
file that lists all the Python dependencies needed for the project:
fastapi
uvicorn
numpy
pytest
You can generate this file automatically by running:
pip freeze > requirements.txt
Include an index.html
file in the project root to provide a simple web interface for interacting with the API. This file can be used to test the API endpoints and visualize the results.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Rank Predictor</title>
</head>
<body>
<h1>Student Rank Predictor</h1>
<form id="rankForm">
<label for="quizData">Enter Quiz Data:</label>
<textarea id="quizData" name="quizData" rows="10" cols="50"></textarea>
<br>
<button type="button" onclick="predictRank()">Predict Rank</button>
</form>
<div id="result"></div>
<script>
async function predictRank() {
const quizData = document.getElementById('quizData').value;
const response = await fetch('/predict-rank', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ quizData })
});
const result = await response.json();
document.getElementById('result').innerText = `Predicted Rank: ${result.rank}`;
}
</script>
</body>
</html>
- GitHub Link: Include your project source code along with the README, screenshots, and video demonstration.
- Structure: Organize the project as described above.
- Tests: Ensure that the FastAPI endpoints are properly tested.
- Explanation: Provide a video demo, screenshots, and an explanation in the README file.
-
Clone the repository:
git clone <repository-url> cd RankPredictor
-
Create a virtual environment and activate it:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
-
Install the required dependencies:
pip install -r requirements.txt
-
Run the FastAPI server:
uvicorn app.main:app --reload
-
Access the API documentation: Open your browser and navigate to
http://127.0.0.1:8000/docs
to view the interactive API documentation.
- analyze_performance: Analyzes student performance by topics, difficulty levels, and response accuracy.
- generate_insights: Highlights weak areas, improvement trends, and performance gaps for a given user.
- predict_rank: Predicts the student's NEET rank based on their quiz performance and previous year NEET exam results.
- predict_college: Predicts the most likely college a student could be admitted to based on their predicted NEET rank.
- GET /analyze-performance: Analyzes the performance of a student based on historical quiz data.
- GET /generate-insights: Generates insights from the analyzed performance data.
- POST /predict-rank: Predicts the NEET rank for a student based on their performance data.
- POST /predict-college: Predicts the most likely college for a student based on their predicted rank.
In the video, we demonstrate the script/API with sample inputs, output, and provide a brief explanation of the logic and recommendations.