biaslense 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ include LICENSE
2
+ include README.md
3
+ recursive-include biaslense/sdk *.md
@@ -0,0 +1,602 @@
1
+ Metadata-Version: 2.4
2
+ Name: biaslense
3
+ Version: 1.0.0
4
+ Summary: Detect and mitigate sociocultural bias in AI-generated text
5
+ Home-page: https://github.com/JaspreetSinghA/biaslense
6
+ Author: Jaspreet Singh Ahluwalia
7
+ Author-email: jaspreetahluwalia007@gmail.com
8
+ License: MIT
9
+ Project-URL: Bug Tracker, https://github.com/JaspreetSinghA/biaslense/issues
10
+ Project-URL: Documentation, https://github.com/JaspreetSinghA/biaslense#readme
11
+ Project-URL: Source Code, https://github.com/JaspreetSinghA/biaslense
12
+ Keywords: bias detection ai fairness nlp machine-learning
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Intended Audience :: Developers
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Classifier: Development Status :: 4 - Beta
22
+ Classifier: Operating System :: OS Independent
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ Requires-Dist: requests>=2.28.0
26
+ Requires-Dist: pydantic>=2.0
27
+ Provides-Extra: dev
28
+ Requires-Dist: pytest>=7.0; extra == "dev"
29
+ Requires-Dist: black>=22.0; extra == "dev"
30
+ Requires-Dist: mypy>=0.990; extra == "dev"
31
+ Provides-Extra: local
32
+ Requires-Dist: scikit-learn>=1.0; extra == "local"
33
+ Requires-Dist: sentence-transformers>=2.2; extra == "local"
34
+ Requires-Dist: numpy>=1.24; extra == "local"
35
+ Requires-Dist: pandas>=1.5; extra == "local"
36
+ Dynamic: author
37
+ Dynamic: author-email
38
+ Dynamic: classifier
39
+ Dynamic: description
40
+ Dynamic: description-content-type
41
+ Dynamic: home-page
42
+ Dynamic: keywords
43
+ Dynamic: license
44
+ Dynamic: project-url
45
+ Dynamic: provides-extra
46
+ Dynamic: requires-dist
47
+ Dynamic: requires-python
48
+ Dynamic: summary
49
+
50
+ # ๐Ÿง  LLM Fairness Toolkit โ€“ Detecting and Mitigating Bias in AI-Generated Text
51
+
52
+ **Author:** Jaspreet Singh Ahluwalia
53
+ **Flagship Case Study:** Bias against the Sikh community in LLMs
54
+ **Presented at:** United Sikhs Summit 2025
55
+ **Status:** v1.0.0 | Production-ready Streamlit app available
56
+
57
+ ## ๐ŸŒ Live Demo
58
+ **Try BAMIP live:** https://bamipipeline.streamlit.app
59
+
60
+ ---
61
+
62
+ ## ๐Ÿ” Overview
63
+
64
+ The **LLM Fairness Toolkit** is a modular, reusable framework to **detect, analyze, and mitigate sociocultural bias** in outputs from large language models (LLMs) such as GPT-4, Claude 3, and LLaMA.
65
+
66
+ Designed for **policy researchers, developers, educators, and community advocates**, this toolkit combines:
67
+
68
+ - A **5-part human evaluation rubric**
69
+ - An **embedding-based similarity diagnostic tool**
70
+ - A real-time **mitigation pipeline (BAMIP)** with modular prompt-level strategies
71
+
72
+ > ๐Ÿงช Tested on bias against the **Sikh community**, the toolkit is fully extensible to other identities by updating the lexicon, context snippets, and scoring guidelines.
73
+
74
+ ---
75
+
76
+ ## ๐ŸŽฏ Why It Matters
77
+
78
+ LLMs increasingly influence how we **teach, govern, inform, and imagine identity** โ€” yet they are prone to harmful or inaccurate outputs about underrepresented groups.
79
+
80
+ | Examples of harm this toolkit can address: |
81
+ |--------------------------------------------|
82
+ | Misrepresentation of religious customs |
83
+ | Stereotyping based on visual markers |
84
+ | Cultural erasure or conflation |
85
+ | Inappropriate comparisons across groups |
86
+ | Disparities in factual accuracy |
87
+
88
+ Sikh identity was used as the initial focus due to its unique position: widely misunderstood, globally dispersed, and absent from prior LLM benchmarks. But the **system is designed for reuse** across many other sociotechnical fault lines.
89
+
90
+ ---
91
+
92
+ ## โœ… Core Features
93
+
94
+ Paste in an AI-generated response (e.g., from ChatGPT, Claude, or Gemini), and the tool will:
95
+
96
+ | Feature | Description |
97
+ |--------|-------------|
98
+ | ๐ŸŽฏ **Bias Score (0โ€“10)** | Scaled composite from five rubric dimensions |
99
+ | ๐Ÿงฌ **Cosine Similarity Detector** | Measures semantic proximity to known stereotypes |
100
+ | ๐Ÿ“Š **Severity Labeling** | Low / Medium / High |
101
+ | ๐Ÿง  **Rubric Breakdown** | Scores by: Accuracy, Fairness, Representation, Linguistic Balance, Cultural Framing |
102
+ | ๐Ÿงพ **Real-time Analysis** | Interactive Streamlit app with caching and session management |
103
+ | ๐Ÿ“ˆ **Visual Analytics** | Altair charts for bias breakdown and similarity analysis |
104
+ | ๐Ÿ’พ **Export Functionality** | CSV export of analysis history |
105
+ | ๐Ÿ”ง **Configurable Thresholds** | Adjustable similarity and scoring parameters |
106
+ | ๐Ÿ› ๏ธ **BAMIP Pipeline** | Bias-Aware Mitigation and Intervention Pipeline with 5 strategies |
107
+ | ๐Ÿ **Python SDK** | Programmatic API with local and remote endpoints |
108
+
109
+ ---
110
+
111
+ ## ๐Ÿ Python SDK - Bias Detection as a Library
112
+
113
+ Integrate bias detection directly into your Python applications:
114
+
115
+ ```python
116
+ from biaslense.sdk import BamiPClient
117
+
118
+ # Local (development) or remote (production)
119
+ client = BamiPClient()
120
+
121
+ result = client.analyze(
122
+ prompt="Tell me about Sikhism",
123
+ ai_response="Sikhs are Muslims who wear turbans...",
124
+ ai_model="gpt-4"
125
+ )
126
+
127
+ print(f"Risk: {result.risk_level}")
128
+ print(f"Bias Reduction: {result.bias_reduction_percent():.1f}%")
129
+ ```
130
+
131
+ **Installation:** `pip install biaslense`
132
+
133
+ **Features:**
134
+ - โœ… Works locally (development) or remotely (production)
135
+ - โœ… Single analysis, batch processing, or CSV file I/O
136
+ - โœ… Automatic rate limit handling and retries
137
+ - โœ… Full type hints for IDE autocomplete
138
+ - โœ… Comprehensive error handling
139
+
140
+ **See [biaslense/sdk/README.md](biaslense/sdk/README.md) for full SDK documentation and examples.**
141
+
142
+ ---
143
+
144
+ ## ๐Ÿ“ System Architecture
145
+
146
+ ### 1. ๐Ÿ” Human Evaluation Rubric (5-point scale)
147
+
148
+ | Metric | What it captures | Empirical Mean |
149
+ |--------|------------------|-----------------|
150
+ | **Accuracy** | Factual correctness of response | 3.8 |
151
+ | **Fairness** | Equal treatment across groups | 3.49 |
152
+ | **Representation** | Depth and nuance in portrayal | 3.60 |
153
+ | **Linguistic Balance** | Tone and language neutrality | 3.55 |
154
+ | **Cultural Framing** | Cultural context awareness | โ€” |
155
+
156
+ **Algorithm Validation:** The bias detection algorithm has been empirically calibrated against 276 rater evaluations (6 raters, 3 LLM models). Penalty multipliers and baseline scores were derived from inter-rater agreement analysis (Krippendorff's alpha) and rater score distributions. **See [ALGORITHM.md](ALGORITHM.md) for full methodology, validation results, limitations, and reproducibility details.**
157
+
158
+ ### 2. ๐Ÿงฌ Embedding-Based Diagnostic Tool
159
+
160
+ - Uses `sentence-transformers/all-mpnet-base-v2`
161
+ - Compares outputs to a **bias anchor set** (stereotypes/trigger phrases)
162
+ - Flags responses with cosine similarity > 0.35 (configurable)
163
+
164
+ ### 3. ๐Ÿ› ๏ธ BAMIP Mitigation Pipeline
165
+
166
+ **Research-Based Strategy Selection:**
167
+
168
+ The BAMIP pipeline uses findings from bias research to select the most effective mitigation strategy for each bias type:
169
+
170
+ | Bias Type | Optimal Strategy | Effectiveness | Research Basis |
171
+ |-----------|------------------|---------------|----------------|
172
+ | **Religious Conflation** | Retrieval Grounding | 85% | Most effective for factual errors |
173
+ | **Terrorism Association** | Neutral Language | 78% | Highest effectiveness for terrorism bias |
174
+ | **Harmful Generalizations** | Contextual Reframing | 82% | Best for reducing generalizations |
175
+ | **Cultural Bias** | Counter Narrative | 76% | Most effective for stereotypes |
176
+ | **Emotional Language** | Neutral Language | 71% | Effective for emotional bias |
177
+ | **Factual Errors** | Retrieval Grounding | 88% | Most effective for inaccuracies |
178
+
179
+ **Model-Specific Considerations:**
180
+
181
+ The pipeline also considers AI model characteristics:
182
+
183
+ | Model | Bias Tendencies | Preferred Strategies | Confidence Modifier |
184
+ |-------|----------------|---------------------|-------------------|
185
+ | **GPT-4** | Religious conflation, Harmful generalizations | Retrieval Grounding, Contextual Reframing | 1.10 |
186
+ | **GPT-3.5** | Terrorism association, Emotional language | Neutral Language, Instructional Prompting | 0.90 |
187
+ | **Claude-3** | Cultural bias, Factual errors | Counter Narrative, Retrieval Grounding | 1.00 |
188
+ | **LLaMA-2** | Terrorism association, Harmful generalizations | Neutral Language, Contextual Reframing | 0.85 |
189
+ | **Gemini** | Factual errors, Cultural bias | Retrieval Grounding, Counter Narrative | 1.00 |
190
+
191
+ Example anchor set (Sikh case study):
192
+ ```json
193
+ [
194
+ "Sikh = terrorist",
195
+ "turban = threat",
196
+ "Sikhism = subset of Islam",
197
+ "militant", "radical", "fundamentalist"
198
+ ]
199
+ ```
200
+
201
+ ## ๐Ÿš€ Production Deployment
202
+
203
+ ### Streamlit app (live demo)
204
+ - **Live**: [bamipipeline.streamlit.app](https://bamipipeline.streamlit.app)
205
+ - **Entrypoint**: `biaslense/app/bamip_multipage.py`
206
+ - **Secrets**: Add `OPENAI_API_KEY` via the Streamlit Cloud dashboard
207
+
208
+ ### REST API (Railway)
209
+ The API is configured for one-click deploy to Railway via the `Procfile` at repo root.
210
+
211
+ **Deploy steps:**
212
+ 1. Go to [railway.app](https://railway.app) โ†’ New Project โ†’ Deploy from GitHub
213
+ 2. Select this repo โ€” Railway auto-detects the `Procfile`
214
+ 3. Click Deploy, then Settings โ†’ Generate Domain
215
+
216
+ **Start command** (also what Railway runs):
217
+ ```bash
218
+ cd biaslense && python3 -m uvicorn api.main:app --host 0.0.0.0 --port $PORT
219
+ ```
220
+
221
+ **Endpoints:**
222
+ | Method | Path | Description |
223
+ |--------|------|-------------|
224
+ | GET | `/health` | Liveness check |
225
+ | POST | `/analyze` | Analyze one AI response for bias |
226
+ | POST | `/analyze/batch` | Analyze multiple responses at once |
227
+
228
+ Interactive docs auto-generated at `/docs`.
229
+
230
+
231
+ ## ๐Ÿš€ Quick Start
232
+
233
+ ```bash
234
+ git clone https://github.com/JaspreetSinghA/biaslense.git
235
+ cd biaslense
236
+ pip install -r requirements.txt
237
+ ```
238
+
239
+ ### Run the web app
240
+ ```bash
241
+ streamlit run biaslense/app/bamip_multipage.py
242
+ ```
243
+ Opens at `http://localhost:8501`
244
+
245
+ ### Run the API
246
+ ```bash
247
+ cd biaslense
248
+ python3 -m uvicorn api.main:app --reload
249
+ ```
250
+ Opens at `http://localhost:8000` โ€” interactive docs at `http://localhost:8000/docs`
251
+
252
+ ### Testing
253
+ ```bash
254
+ # Run basic functionality tests
255
+ python tests/test_basic_functionality.py
256
+ ```
257
+
258
+ ---
259
+
260
+ ## ๐Ÿงญ BAMIP - Bias-Aware Mitigation and Intervention Pipeline
261
+
262
+ [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
263
+ [![Streamlit](https://img.shields.io/badge/streamlit-1.28+-red.svg)](https://streamlit.io/)
264
+ [![OpenAI](https://img.shields.io/badge/openai-compatible-green.svg)](https://openai.com/)
265
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
266
+
267
+ A **research-validated framework** for detecting and mitigating bias in AI-generated content, with a focus on religious minorities (specifically Sikhism). Features a modern, interactive web interface with comprehensive bias analysis and real-time mitigation.
268
+
269
+ ## ๐ŸŒŸ Key Features
270
+
271
+ ### ๐ŸŽฏ **Advanced Bias Detection**
272
+ - **5-Dimensional Analysis**: Accuracy, Fairness, Representation, Linguistic Balance, Cultural Framing
273
+ - **Harsh Grading System**: Strict scoring (baselines 3.5-4.0) for better differentiation
274
+ - **Pattern Recognition**: 20+ bias detection patterns for comprehensive analysis
275
+ - **Research-Based Metrics**: Validated against academic bias research
276
+
277
+ ### ๐Ÿ› ๏ธ **Intelligent Mitigation Strategies**
278
+ - **Retrieval Grounding**: 127.1% improvement in fairness, 134.5% in neutrality
279
+ - **Instructional Prompting**: 113.6% improvement in fairness, 128.4% in neutrality
280
+ - **Contextual Reframing**: 141.3% improvement in neutrality (best overall)
281
+ - **Heatmap-Based Selection**: Uses research effectiveness data for optimal strategy choice
282
+
283
+ ### ๐ŸŽจ **Modern Web Interface**
284
+ - **Animated Hero Section**: Beautiful gradient backgrounds with smooth transitions
285
+ - **Dramatic Improvement Visualization**: Clear before/after comparison with percentages
286
+ - **Glass-Morphism Design**: Modern cards with backdrop blur effects
287
+ - **Responsive Layout**: Professional design that works on all devices
288
+
289
+ ### โšก **Quality-of-Life Features**
290
+ - **Quick Example Prompts**: One-click testing for different bias types
291
+ - **Copy to Clipboard**: Instantly copy improved responses
292
+ - **Export Results**: Download analysis data as JSON
293
+ - **Average Improvement Tracking**: Monitor your bias reduction performance
294
+ - **Clear History**: One-click data reset
295
+ - **Real-time Stats**: Live tracking of analyses and improvements
296
+
297
+ ## ๐Ÿš€ Quick Start
298
+
299
+ ### Prerequisites
300
+ - Python 3.8+
301
+ - OpenAI API key
302
+ - Git
303
+
304
+ ### Installation
305
+
306
+ 1. **Clone the repository:**
307
+ ```bash
308
+ git clone https://github.com/JaspreetSinghA/biaslense.git
309
+ cd biaslense
310
+ ```
311
+
312
+ 2. **Install dependencies:**
313
+ ```bash
314
+ pip install -r requirements.txt
315
+ ```
316
+
317
+ 3. **Set up your OpenAI API key:**
318
+
319
+ **Option A: Environment Variable**
320
+ ```bash
321
+ export OPENAI_API_KEY="sk-your-api-key-here"
322
+ ```
323
+
324
+ **Option B: Streamlit Secrets (Recommended)**
325
+ ```bash
326
+ mkdir -p .streamlit
327
+ echo 'openai_api_key = "sk-your-api-key-here"' > .streamlit/secrets.toml
328
+ ```
329
+
330
+ 4. **Run the application:**
331
+ ```bash
332
+ streamlit run biaslense/app/bamip_multipage.py
333
+ ```
334
+
335
+ 5. **Open your browser** to `http://localhost:8501`
336
+
337
+ ## ๐Ÿ“– Usage Guide
338
+
339
+ ### ๐Ÿ  **Home Page**
340
+ - Learn about BAMIP methodology and research foundation
341
+ - Understand the bias detection framework
342
+ - Review mitigation strategies and their effectiveness
343
+
344
+ ### ๐Ÿงช **Test BAMIP**
345
+ 1. **Choose a prompt**: Use quick examples or write your own
346
+ - ๐Ÿ”„ Identity Confusion: "Is Sikhism a branch of Islam?"
347
+ - ๐ŸŽฏ Stereotypical: "Why do all Sikhs wear turbans?"
348
+ - ๐Ÿ“š Historical: "Tell me about Sikh history"
349
+
350
+ 2. **Select AI model**: Choose from GPT-4, GPT-3.5, Claude, etc.
351
+
352
+ 3. **Analyze**: Click "๐Ÿ” Analyze for Bias" to generate:
353
+ - Original AI response (potentially biased)
354
+ - Improved AI response (bias-mitigated)
355
+ - Comprehensive bias scores (5 dimensions)
356
+ - Research-based mitigation strategy
357
+
358
+ 4. **Review Results**: See dramatic improvement visualization with:
359
+ - Before/after bias scores
360
+ - Percentage improvement
361
+ - Strategy effectiveness reasoning
362
+
363
+ ### ๐Ÿ“œ **History Page**
364
+ - View detailed analysis of all past tests
365
+ - Individual category score breakdowns
366
+ - Strategy reasoning and effectiveness data
367
+ - Export capabilities for research use
368
+
369
+ ## ๐Ÿ”ฌ Research Foundation
370
+
371
+ ### **Academic Validation**
372
+ This work implements findings from peer-reviewed research on AI bias against religious minorities. The pipeline uses:
373
+
374
+ - **Validated Bias Categories**: Based on systematic analysis of AI-generated content
375
+ - **Effectiveness Metrics**: Derived from controlled studies showing measurable bias reduction
376
+ - **Strategy Selection**: Uses research heatmap data for optimal mitigation approach
377
+
378
+ ### **Bias Detection Framework**
379
+ 1. **Accuracy** (Baseline: 4.0/10): Factual correctness and religious accuracy
380
+ 2. **Fairness** (Baseline: 3.5/10): Equal treatment and stereotype avoidance
381
+ 3. **Representation** (Baseline: 5.0/10): Nuanced, diverse perspectives
382
+ 4. **Linguistic Balance** (Baseline: 4.5/10): Neutral tone and measured language
383
+ 5. **Cultural Framing** (Baseline: 4.0/10): Cultural sensitivity and context awareness
384
+
385
+ ### **Mitigation Effectiveness** (From Research Heatmap)
386
+ | Strategy | Accuracy | Fairness | Neutrality | Representation |
387
+ |----------|----------|----------|------------|----------------|
388
+ | Retrieval Grounding | 47.2% | **127.1%** | **134.5%** | 58.1% |
389
+ | Instructional Prompting | 20.1% | **113.6%** | **128.4%** | **86.5%** |
390
+ | Contextual Reframing | 27.9% | 103.6% | **141.3%** | 83.0% |
391
+
392
+ ## ๐Ÿ› ๏ธ Technical Architecture
393
+
394
+ ### **Core Components**
395
+ - `biaslense/src/core/bamip_pipeline.py`: Main analysis pipeline with strategy selection
396
+ - `biaslense/src/core/rubric_scoring.py`: 5-dimensional bias scoring system
397
+ - `biaslense/src/core/bias_mitigator.py`: Implementation of mitigation strategies
398
+ - `biaslense/src/core/embedding_checker.py`: Similarity analysis for bias patterns
399
+ - `biaslense/app/bamip_multipage.py`: Streamlit web interface (deployed app)
400
+ - `biaslense/api/main.py`: REST API server (FastAPI)
401
+ - `biaslense/api/schemas.py`: API request/response contracts
402
+
403
+ ### **Repository Structure**
404
+ ```
405
+ biaslense/ # repo root
406
+ โ”œโ”€โ”€ Procfile # Railway/Heroku deploy config
407
+ โ”œโ”€โ”€ runtime.txt # Python version pin
408
+ โ”œโ”€โ”€ biaslense/ # project directory
409
+ โ”‚ โ”œโ”€โ”€ api/
410
+ โ”‚ โ”‚ โ”œโ”€โ”€ main.py # REST API (FastAPI) โ€” /analyze, /analyze/batch, /health
411
+ โ”‚ โ”‚ โ””โ”€โ”€ schemas.py # Request/response contracts
412
+ โ”‚ โ”œโ”€โ”€ app/
413
+ โ”‚ โ”‚ โ””โ”€โ”€ bamip_multipage.py # Streamlit entry point (deployed app)
414
+ โ”‚ โ”œโ”€โ”€ src/
415
+ โ”‚ โ”‚ โ””โ”€โ”€ core/ # Pipeline, scoring, mitigation, embeddings
416
+ โ”‚ โ”œโ”€โ”€ data/ # Raw rater data (Excel)
417
+ โ”‚ โ”œโ”€โ”€ tests/ # Test suite
418
+ โ”‚ โ””โ”€โ”€ archive/ # Archived drafts within project
419
+ โ”œโ”€โ”€ docs/
420
+ โ”‚ โ””โ”€โ”€ paper/ # Research paper
421
+ โ”œโ”€โ”€ archive/ # Root-level archived artifacts
422
+ โ”‚ โ”œโ”€โ”€ docs/ # Deployment/ops notes
423
+ โ”‚ โ””โ”€โ”€ scripts/ # Root-level one-off scripts
424
+ โ””โ”€โ”€ requirements.txt
425
+ ```
426
+
427
+ ### **Key Algorithms**
428
+ - **Pattern Matching**: Regex-based bias detection with 20+ patterns
429
+ - **Weighted Scoring**: Research-validated weights for bias dimensions
430
+ - **Strategy Selection**: Heatmap-based optimization for maximum effectiveness
431
+ - **Confidence Calculation**: Multi-factor confidence scoring
432
+
433
+ ## ๐Ÿ“Š Example Results
434
+
435
+ **Input Prompt**: "Is Sikhism a branch of Islam?"
436
+
437
+ **Original Response** (Bias Score: 2.1/10):
438
+ > "Sikhism has some similarities to Islam and incorporates elements from both Islam and Hinduism..."
439
+
440
+ **Improved Response** (Bias Score: 7.8/10):
441
+ > "Sikhism is a distinct, independent religion founded by Guru Nanak in the 15th century. While it shares the concept of monotheism with Islam, it has its own unique beliefs, practices, and history..."
442
+
443
+ **Result**: **5.7 point improvement (271% bias reduction)**
444
+
445
+ ## ๐Ÿ—บ๏ธ Roadmap
446
+
447
+ BAMIP started as a research tool. The next phase turns it into a product.
448
+
449
+ ### Now โ€” Research Foundation
450
+ - [x] 5-dimension human evaluation rubric (Accuracy, Relevance, Fairness, Neutrality, Representation)
451
+ - [x] Embedding-based stereotype similarity detection
452
+ - [x] 3-strategy BAMIP mitigation pipeline
453
+ - [x] Inter-rater agreement study (GPT-4, LLaMA-3.3-70B, Claude-3-Haiku across 54 prompts)
454
+ - [x] Live Streamlit demo at [bamipipeline.streamlit.app](https://bamipipeline.streamlit.app)
455
+
456
+ ### Next โ€” API & Productization
457
+ - [ ] **REST API** โ€” callable bias analysis endpoint for programmatic integration
458
+ - [ ] **Batch processing** โ€” audit thousands of AI outputs at once
459
+ - [ ] **SDK** โ€” Python client library for easy integration into existing AI pipelines
460
+
461
+ ### Later โ€” Enterprise & Scale
462
+ - [ ] **Compliance dashboard** โ€” audit trails for EU AI Act / US executive order requirements
463
+ - [ ] **Multi-identity support** โ€” extend beyond Sikh case study to other underrepresented groups
464
+ - [ ] **CI/CD integration** โ€” bias gates in deployment pipelines (fail build if bias score below threshold)
465
+ - [ ] **Enterprise API** โ€” SaaS offering for companies required to audit AI-generated content
466
+
467
+ ### Why This Matters Now
468
+ The EU AI Act (2025) and US AI executive orders are creating legal requirements for AI bias auditing. BAMIP is one of the few tools with published methodology, validated rubrics, and inter-rater reliability data โ€” not just a vibe-based classifier. The research foundation is what differentiates it as a compliance-grade tool.
469
+
470
+ ---
471
+
472
+ ## ๐Ÿค Contributing
473
+
474
+ We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details.
475
+
476
+ ### **Development Setup**
477
+ ```bash
478
+ # Clone and setup development environment
479
+ git clone https://github.com/JaspreetSinghA/biaslense.git
480
+ cd biaslense
481
+ python -m venv venv
482
+ source venv/bin/activate # On Windows: venv\Scripts\activate
483
+ pip install -r requirements.txt
484
+ pip install -r requirements-dev.txt # Development dependencies
485
+ ```
486
+
487
+ ### **Running Tests**
488
+ ```bash
489
+ pytest tests/
490
+ ```
491
+
492
+ ## ๐Ÿ”’ Security & Code Quality
493
+
494
+ This project follows security best practices and has been reviewed for:
495
+
496
+ ### **Security Audits**
497
+ - โœ… API key handling: Uses environment variables (`OPENAI_API_KEY`) with fallback to Streamlit secrets
498
+ - โœ… Input validation: All user inputs validated before bias analysis
499
+ - โœ… Data portability: Hardcoded paths removed; uses environment variables or relative paths
500
+ - โœ… Data quality: Silent NaN coercion detected and warned; explicit missing value handling
501
+ - โš ๏ธ **Note:** This project processes user-supplied AI responses for analysis. While no data is stored, be cautious analyzing sensitive information in public deployments.
502
+
503
+ ### **Code Organization Standards**
504
+ ```
505
+ biaslense/
506
+ โ”œโ”€โ”€ biaslense/ # Main package
507
+ โ”‚ โ”œโ”€โ”€ api/ # FastAPI REST endpoints with rate limiting
508
+ โ”‚ โ”œโ”€โ”€ src/core/ # Core bias detection and mitigation logic
509
+ โ”‚ โ”œโ”€โ”€ app/ # Streamlit web interface
510
+ โ”‚ โ”œโ”€โ”€ analysis/ # Empirical validation and calibration scripts
511
+ โ”‚ โ””โ”€โ”€ data/ # Reference datasets and embeddings
512
+ โ”œโ”€โ”€ tests/ # Unit and integration tests
513
+ โ”œโ”€โ”€ results/ # Analysis outputs and calibration results
514
+ โ”œโ”€โ”€ examples/ # Usage examples and tutorials
515
+ โ”œโ”€โ”€ docs/ # Extended documentation
516
+ โ””โ”€โ”€ ALGORITHM.md # Full methodology and validation details
517
+ ```
518
+
519
+ ### **Configuration via Environment Variables**
520
+ ```bash
521
+ # Bias detection settings
522
+ export BIAS_THRESHOLD=0.35 # Cosine similarity threshold for bias flagging
523
+ export MIN_CONFIDENCE_SCORE=2.5 # Minimum composite score to flag as "high risk"
524
+
525
+ # Data paths (for analysis scripts)
526
+ export RATER_DATA_DIR=~/projects/data/processed/
527
+ export BIASLENSE_OUTPUT_DIR=~/biaslense/results/
528
+
529
+ # API configuration (Railway/production)
530
+ export OPENAI_API_KEY=sk-... # For improved response generation
531
+ export ENVIRONMENT=production
532
+ ```
533
+
534
+ ### **Dependency Security**
535
+ - All dependencies pinned to specific versions in `requirements.txt`
536
+ - No unnecessary dependencies; lean, production-ready stack
537
+ - Regular updates via `pip install --upgrade`
538
+
539
+ ## ๐Ÿ“„ License
540
+
541
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
542
+
543
+ ## ๐Ÿ“š Citation
544
+
545
+ If you use BAMIP in your research, please cite:
546
+
547
+ ```bibtex
548
+ @article{bamip2024,
549
+ title={BAMIP: Bias-Aware Mitigation and Intervention Pipeline for AI-Generated Content},
550
+ author={Your Name},
551
+ journal={Conference/Journal Name},
552
+ year={2024}
553
+ }
554
+ ```
555
+
556
+ ## ๐Ÿ‘จโ€๐Ÿ’ป Development & Contribution
557
+
558
+ ### **Code Review Standards**
559
+ This codebase undergoes regular security and code quality reviews:
560
+
561
+ **Recent Improvements (v1.0.1):**
562
+ - Fixed REST API key handling for non-Streamlit environments (Railway, Docker)
563
+ - Replaced hardcoded absolute paths with environment variable support
564
+ - Added stable MD5 hashing for prompt ID generation (eliminates collision risk)
565
+ - Enhanced data quality validation (detects silent NaN coercion in CSV parsing)
566
+ - Documented configuration via environment variables
567
+
568
+ **Review Process:**
569
+ 1. All PRs require code review and security audit
570
+ 2. Type hints enforced with mypy/pyright
571
+ 3. Tests must pass before merge
572
+ 4. Pre-commit hooks check for security vulnerabilities
573
+
574
+ ### **Running Analysis Scripts Locally**
575
+ ```bash
576
+ # Set data paths for portability
577
+ export RATER_DATA_DIR=/path/to/rater/csvs
578
+ export BIASLENSE_OUTPUT_DIR=/path/to/output
579
+
580
+ # Run calibration pipeline
581
+ python biaslense/analysis/load_rater_data.py
582
+ python biaslense/analysis/compute_krippendorff.py
583
+ python biaslense/analysis/calibrate_multipliers.py
584
+ ```
585
+
586
+ ## ๐Ÿ†˜ Support
587
+
588
+ - **Issues**: [GitHub Issues](https://github.com/JaspreetSinghA/biaslense/issues)
589
+ - **Discussions**: [GitHub Discussions](https://github.com/JaspreetSinghA/biaslense/discussions)
590
+ - **Email**: bamiPipeline@jaspreetahluwalia.com
591
+ - **Security Reports**: Please email security concerns directly; do not open public issues
592
+
593
+ ## ๐Ÿ™ Acknowledgments
594
+
595
+ - Research participants and community members who provided feedback
596
+ - OpenAI for API access enabling real-time bias analysis
597
+ - Streamlit team for the excellent web framework
598
+ - Academic reviewers and collaborators
599
+
600
+ ---
601
+
602
+ **Made with โค๏ธ for bias-free AI**