def is_eligible(candidate, project):
    """
    Checks if the user object is a eligible candidate for the project or not.
    All the logic for checking eligibility goes here!
    """
    eligibility = {}
    eligibility['value'] = True
    # list of all the reasons that contribute towards uneligibilty
    eligibility['reasons'] = []

    if (candidate.cgpa < project.cgpa_min):
        eligibility['value'] = False
        eligibility['reasons'].append(
            "CGPA requirement not fulfilled.")

    if (project.status == 'C' or project.status == 'A'):
        eligibility['value'] = False
        eligibility['reasons'].append("This project application is closed!")

    return eligibility