FairAI for Every Decision β Anywhere in the World
Google Solution Challenge 2026 Β· Theme: Unbiased AI Decision Making Build with AI Β· Hack2Skill x GDG India Β· Team from Patna, Bihar, India
BiasGuard is a professional-grade AI Fairness Auditing and Decision Assistant platform. It uses Google Gemini 2.0 to detect, explain in plain language, and actively fix bias in AI-driven decisions β with a special focus on India's unique socio-cultural challenges (caste proxies, rural-urban divide, regional bias).
| Mode | What it does |
|---|---|
| Audit Mode | Upload any AI decision CSV β instant bias scan β Gemini explanation in Hindi/English β one-click mitigation with before/after charts |
| Direct Fair Decision Mode | Input any decision scenario β Gemini delivers a transparent, fair recommendation with zero protected-attribute bias |
User (Flutter Web/Mobile App)
β Riverpod Providers
Presentation Layer (Screens, Widgets)
β HTTP calls
Firebase Cloud Functions (Python)
βββ CF1: parseAndCalculateMetrics β CSV parsing + 4 fairness metrics
βββ CF2: geminiAnalysisAndMitigation β Gemini explanation + proxy detection
βββ CF3: triggerMitigation β Reweighting engine + before/after output
βββ CF4: getDirectFairDecision β Standalone fair decision via Gemini
β Firestore real-time sync
Flutter UI updates in real time
β
Google Gemini 2.0 Flash API (reasoning, explanations, proxy detection, multilingual)
| Metric | Definition |
|---|---|
| Demographic Parity | Max β min approval rate across groups (0 = fair) |
| Equal Opportunity | Difference in true positive rates (qualified candidates approved) |
| Equalized Odds | Average of TPR and FPR differences across groups |
| Predictive Parity | Difference in precision (PPV) across groups |
| Equity Score (0β100) | India-weighted composite: 100 β (0.35ΓDP + 0.30ΓEO + 0.20ΓEOdds + 0.15ΓPP) Γ 100 |
BiasGuard detects bias proxies specific to Indian socio-cultural context:
- Surname β Caste Inference β 80+ Indian surnames mapped to social groups (SC/ST/OBC/General)
- Roll Number β District β Rural/Urban β Bihar BSEB roll number prefix decodes to district
- PIN Code β Rural/Urban β Bihar PIN code ranges classify urban (800x) vs rural (84xβ85x)
- School Board β SES β State boards (BSEB) = lower SES proxy; CBSE/ICSE = higher SES
- District Name β Rural/Urban β All 38 Bihar districts classified
- Name/Salutation β Gender β Female-coded names and salutations (Devi, Kumari, Smt) detected
biasguard-solution-challenge-2026/
βββ biasguard/ # Flutter app (Member A)
β βββ lib/
β β βββ core/ # Theme, constants, config
β β βββ features/ # auth, dashboard, audit_mode, direct_mode
β β βββ models/ # Dart data models
β β βββ providers/ # Riverpod providers
β β βββ services/ # Gemini service, CSV parser
β βββ pubspec.yaml
βββ functions/ # Firebase Cloud Functions (Member B β YOU)
β βββ main.py # 4 HTTP Cloud Functions
β βββ helpers/
β β βββ csv_parser.py # CSV download + column auto-detection
β β βββ fairness_metrics.py # DP, EO, EOdds, PP, Equity Score
β β βββ proxy_detection.py # India-specific proxy detection
β β βββ mitigation.py # Reweighting engine
β β βββ gemini_client.py # Gemini API wrapper (3 prompts)
β β βββ firestore_writer.py # All Firestore read/write helpers
β β βββ anonymizer.py # PII anonymisation
β βββ data/
β β βββ surname_caste_map.json
β β βββ district_rural_map.json
β βββ requirements.txt
βββ assets/
β βββ demo/
β βββ bihar_scholarship_2026.csv # Synthetic 200-row demo dataset
βββ firestore.rules
βββ storage.rules
βββ firestore.indexes.json
βββ firebase.json
- Python 3.11+
- Node.js 18+ (for Firebase CLI)
- Firebase CLI:
npm install -g firebase-tools - Flutter 3.29+ (for Member A's frontend)
git clone https://github.com/YOUR_USERNAME/biasguard-solution-challenge-2026.git
cd biasguard-solution-challenge-2026
firebase login
firebase use biasguard-2026firebase functions:secrets:set GEMINI_API_KEY
# Paste your key from https://aistudio.google.com/app/apikeycd functions
pip install -r requirements.txt # local testing only
cd ..
firebase deploy --only functionsfirebase deploy --only firestore:rules,storagecd biasguard
flutter pub get
flutterfire configure
flutter run -d chrome # web
flutter run # Android/iOSAll field names shared with Member A for Riverpod provider alignment:
/users/{uid}/scans/{scan_id}/
βββ [document] β status, updated_at
βββ data/
βββ metrics β equity_score, demographic_parity, equal_opportunity,
β equalized_odds, predictive_parity, group_stats,
β detected_sensitive_columns, row_count, dataset_name
βββ analysis β explanation_en, explanation_hi, root_causes,
β proxy_features, mitigation_suggestion, severity
βββ proxies β proxy_columns (list with column, proxy_type, confidence, explanation)
βββ mitigation β before/after_equity_score, before/after_approval_rates,
decisions_changed_count, new_demographic_parity
POST /parseAndCalculateMetrics
Content-Type: application/json
{
"uid": "firebase_user_id",
"scan_id": "optional_custom_id",
"storage_path": "uploads/{uid}/filename.csv",
"dataset_name": "Bihar Scholarship 2026",
"use_case": "Scholarship Selection",
"anonymise": false
}
POST /geminiAnalysisAndMitigation
# Body: the _cf2_context object returned by CF1
POST /triggerMitigation
{
"uid": "firebase_user_id",
"scan_id": "scan_id",
"storage_path": "uploads/{uid}/filename.csv",
"group_col": "district",
"outcome_col": "decision"
}
POST /getDirectFairDecision
{
"uid": "firebase_user_id",
"scenario": "Applicant has 78% marks from a rural Bihar school...",
"save_to_firestore": true
}
assets/demo/bihar_scholarship_2026.csv β 200 synthetic student records:
- Columns: student_name, roll_number, district, school_board, stream, marks_percent, decision
- Bias pattern: Urban CBSE students (Patna) approved at ~90%; Rural BSEB SC/ST students approved at ~35%
- Detected proxies: surname β caste, school_board β SES, district β rural/urban, roll_number β district prefix
- Expected equity score: ~42/100 (triggers 'High Bias' flag)
| SDG | Alignment |
|---|---|
| SDG 10 β Reduced Inequalities | Directly audits and fixes digital discrimination against SC/ST and rural applicants |
| SDG 16 β Justice & Accountability | Makes AI decisions transparent and auditable |
| SDG 4 β Quality Education | Fairer scholarship and admission systems |
| SDG 8 β Decent Work | Unbiased hiring tools |
| Member | Role | Location |
|---|---|---|
| Member A | Flutter UI, Riverpod, Charts, PDF, Demo Video | Patna, Bihar |
| Member B (You) | Firebase, Cloud Functions, Gemini, Fairness Metrics | Patna, Bihar |
Sprint: 13β16 April 2026 | Submission: 24 April 2026
Apache 2.0 β See LICENSE
BiasGuard β "Detect. Explain. Fix. Make AI Decisions Fair for Everyone."