Undiscriminating Discriminator is an MVP prototype exploring a least-discriminating multi-model approach for AI-driven HR skill management. It provides a RESTful interface to manage employees, skills, certifications, projects, budgets, and development actions, facilitating experimentation with fair, multi-framework competency models.
- CRUD operations for Employees, Skills, Certifications, Projects, Budgets, and Development Actions via Django REST framework.
- Data fixtures for rapid testing and demonstration.
- Modular design supporting extension with additional AI/ML models and fairness frameworks.
This repository is designed for iterative development with LLM-based code assistant agents. Guidelines for maintainers and agents reside in AGENTS.md. Additional context is stored in background/ and plugin documentation in plugins/. These directories are development-only resources and should be excluded from runtime containers.
- Python 3.12
- Django 5.2
- Django REST framework
- SQLite (default; easily configurable for PostgreSQL/MySQL)
- Pytest for testing
- Black for code formatting
- Git
- Python 3.12
- Pipenv (or
venvandpip)
- Clone the repository:
git clone https://github.com/your-username/undiscriminating_discriminator.git cd undiscriminating_discriminator - Install dependencies with Pipenv:
Alternatively, use
pipenv install --dev pipenv shell
python -m venv env && source env/bin/activate && pip install -r requirements.txt. - Configure environment variables: create a
.envfile in the project root (see.env.example):IfDEBUG=True SECRET_KEY=your-secret-key ALLOWED_HOSTS=localhost,127.0.0.1 DATABASE_URL=sqlite:///db.sqlite3
SECRET_KEYis missing andDEBUGisTrue, a development placeholder is used and a warning is logged using Django's logging system. WhenDEBUGisFalse,SECRET_KEYmust be set or the application will fail to start. - Apply migrations and load sample data:
python manage.py migrate python manage.py loaddata fixtures/sample_data.json
Start the development server:
python manage.py runserverVisit http://127.0.0.1:8000/api/ for the API root, or navigate to specific endpoints (see API Endpoints below).
An example login form using the OAuth2 password grant is provided in
frontend/index.html.
Copy frontend/oauth_config.example.js to frontend/oauth_config.js and
replace the placeholder values with the client ID and secret from the Django
admin (Applications section). Serve the frontend directory via
python -m http.server 9000 (or any other port) and open
http://localhost:9000/index.html in a browser.
The form posts the user's credentials to /o/token/ and displays the returned
access token. This flow is intended for local testing only and should not be
used in production.
| Resource | Endpoint | Methods |
|---|---|---|
| Employees | /api/employees/ |
GET, POST |
| Employee Detail | /api/employees/{id}/ |
GET, PUT, DELETE |
| Skills | /api/skills/ |
GET, POST |
| Certifications | /api/certifications/ |
GET, POST |
| Projects | /api/projects/ |
GET, POST |
| Budgets | /api/budgets/ |
GET, POST |
| Development Actions | /api/development-actions/ |
GET, POST |
Run the full test suite with coverage:
pytest --cov=.Ensure code is formatted and linted:
black --check .Alternatively, use the included Makefile:
make install # install dependencies with Pipenv
make check # run black, flake8, and testsContributions are welcome! Please follow these steps:
- Fork the repository and create a feature branch (
git checkout -b feature/my-feature). - Commit your changes (
git commit -am 'Add new feature'). - Ensure all tests pass and code is formatted (
pytest,black). - Push to the branch (
git push origin feature/my-feature) and submit a Pull Request.
This project is licensed under the MIT License. See the LICENSE file for details.