ADAPTIVESEC  /  HOME

AdaptiveSec

AdaptiveSec is a cybersecurity awareness and behavioral risk analysis platform delivered through a Chrome Extension and a web-based dashboard. The system periodically deploys controlled phishing simulations designed around well-known psychological manipulation triggers, including urgency, authority, scarcity, and social proof. These simulations help organizations evaluate user susceptibility to social engineering tactics while providing insights that support targeted security awareness training and improved human risk management.

↗ GitHub Repo ⬡ Figma Prototype ◫ API Spec ◈ Architecture
The Problem

Most successful cyberattacks exploit human behavior rather than technical vulnerabilities. Despite this reality, most enterprise cybersecurity awareness programs remain static, compliance-driven, and one-size-fits-all. Training is typically delivered annually or after a user has already made a risky decision, which breaks the connection between the user's action and the lesson intended to prevent it. As a result, retention is low and the same mistakes continue to occur. Traditional awareness platforms also focus primarily on blocking threats silently at the system level, missing the opportunity to explain to users why an action was risky and how similar attacks operate. Without real-time feedback or behavioral insight, users are unable to build practical intuition against modern phishing and social engineering tactics. This creates a significant disconnect between rapidly evolving social engineering attacks and outdated awareness models that do not adapt to individual behavior, cognitive biases, or emerging threat patterns.

Our Solution

Cognitive Vulnerability Profiling

We model each user's susceptibility across four dimensions — Urgency Bias, Authority Bias, Social Proof, and Scarcity — and build a personalized vulnerability profile.

🎯

Adaptive Just-in-Time Training

Training nudges fire at the moment of risky behavior (e.g., clicking an unverified link), delivering context-aware lessons matched to the user's active vulnerability profile.

📊

Live Security Dashboard

Users see their risk score, 30, 90, or all-time trend, score change explanations, and training progress in one unified dashboard.

Project Videos
🎬 Promo Video
Overview of the AdaptiveSec platform
📹 Technical Walkthrough
Full demo of features and dashboard
The Team
FM
Forhaad Miah
Developer
forhaadmiah1@gmail.com
HS
Hamza Siddiqui
Developer
hamza2608@gmail.com
NF
Niko Fushi
Developer
nikofushi25@gmail.com
AV
Adnan Vaktapuriya
Developer
adnanvaktapuriya@gmail.com
AL
Aiden Lee
Developer
aidenlee0814@gmail.com
Documentation

Requirements & UX (PRD)

Primary Persona
🧑‍💼 "Security Project Manager Alex" P0 Persona

Who: Organizations and universities responsible for managing cybersecurity awareness and reducing human-related security risks across employees, staff, and students.

Goal: Implement an adaptive security awareness program that continuously evaluates human risk, strengthens user decision-making, and improves overall organizational security posture.

Pain Point: Traditional security awareness programs are static, compliance-driven, and provide limited insight into real user behavior or evolving social engineering threats.

Key Vulnerability: Limited visibility into behavioral risk patterns, making it difficult to identify high-risk users or tailor training to emerging phishing and social engineering tactics.

User Stories
PriorityAs a…I want to…So that…
P0UserThe Chrome Extension to analyze my browser interactions in the backgroundMy risk profile is built on my actual daily habits without interrupting my workflow.
P0UserTo see my Risk Score (0-100) update on my dashboard shortly after if I make a risky decisionI can understand the impact of my actions.
P0UserIf my score drops, I want to see a plain-English explanation generated by the systemI understand exactly why I am considered high risk and how to change my behavior.
P1UserReceive training modules that specifically target my detected weaknessesMy training feels relevant and respects my time.
P1UserView my historical event history and score trends on my dashboardI can visualize my risk level and track my improvement over time.
P1UserThe system to automatically categorize my score into Vulnerability ProfilesI can understand the specific types of risks prevalent across the organization.
P2UserMy risk score to immediately improve upon the successful completion of an assigned training moduleI feel tangibly rewarded for actively participating in my cybersecurity education.
P2UserReceive a short, localized training nudge shortly after clicking a risky link or failing a simulationI can learn from my mistake while the context is still fresh in my mind.
P2UserAccess a unified dashboard view that consolidates my Risk Score, training progress, alerts, and explanationsI can instantly understand my overall security posture without clicking through multiple pages.
Figma Prototype
↗ Open Full Prototype in Figma
Documentation

Architecture & High-Level Design

// Tech Spec — System Diagram · Stack · Security
System Diagram
Scroll to zoom · Drag to pan
55%
FRAME 1 — USER INTERFACE Chrome Extension MV3 · JIT nudges React Dashboard Risk scores · training behavioral events FRAME 2 — BACKEND SYSTEM Load Balancer Distributes traffic FastAPI Gateway Auth · rate limiting risk scores + alerts FRAME 3 — APPLICATION SERVER (ML + LOGIC) Event Processor Aggregates signals validated events Feature Vector Builder 8-dim vectors patterns Risk Scoring Engine XGBoost · 0–100 feature vectors Cognitive Vulnerability Model Gemini LLM · bias tags risk score Recommendation Engine MAB · assigns training cognitive trigger Explanation Generator Gemini · counterfactuals Training Assignment Risk events · metadata FRAME 4 — DATABASE SERVER Neo4j AuraDB User graph · profiles Redis Pub/Sub Alerts · 60s TTL Training Metadata Modules · scores historical data JIT nudge · WebSocket Legend Request / event flow Data / response flow
Tech Stack Justification
LayerTechnologyWhy We Chose It
FrontendReact + TypeScriptComponent-based UI, strong typing for risk data models, rich dashboard component ecosystem
Backend APIFastAPI (Python)High-performance async endpoints, native Pydantic validation, seamless ML model integration
Risk EngineXGBoostGradient-boosted decision trees optimized for high-accuracy behavioral risk scoring with built-in feature importance for explainability.
DatabaseNeo4jGraph databases excel at querying patterns like 'which users are vulnerable to authority-based attacks who haven't completed related training'
AuthJWT + OAuth2Stateless auth for API, SSO integration for enterprise IdP environments
Browser LayerChrome Extension (MV3)Passive behavioral signal collection without proxying all traffic
Security Architecture
🔐 Auth & Authorization

All API endpoints require JWT bearer tokens. RBAC enforces separation between Employee, Manager, and Admin views. OAuth2 PKCE flow for SSO.

🛡️ Data Privacy

User behavioral data stored encrypted at rest (AES-256). Risk scores are user-owned; org-level aggregation is opt-in. GDPR & CCPA data deletion supported.

⚡ Real-Time Event Security

Browser extension events are HMAC-signed to prevent spoofing. Rate limiting prevents score manipulation. All audit events are append-only logs.

📡 Transport Security

TLS 1.3 enforced throughout. HSTS headers set. Content-Security-Policy prevents XSS. Pydantic schema validation on all API inputs before processing.

Documentation

Detailed Component Design

// DB Schema · API Specification · Algorithm Logic
Database Schema
USER
PK user_id
email
org_id
baseline_risk_score
baseline_caution
fatigue_factor
created_at
SIMULATION
PK simulation_id
trigger_type
template
phishing_link
delivery_schedule
CLICK_EVENT
PK event_id
FK user_id
FK simulation_id
url_hash
page_context
timestamp
risk_delta
threat_score
VULNERABILITY_PROFILE
PK profile_id
FK user_id
dominant_trait
urgency_score
authority_score
social_proof_score
scarcity_score
updated_at
TRAINING_MODULE
PK module_id
title
bias_target
content_url
estimated_duration
TRAINING_ASSIGNMENT
PK assignment_id
FK user_id
FK module_id
progress
due_date
completed
completed_at
EXPLANATION
PK explanation_id
FK event_id
cognitive_bias_tag
plain_english_text
generated_at
// RELATIONSHIPS
USER ||--o{ CLICK_EVENT  ·  USER ||--|| VULNERABILITY_PROFILE  ·  USER ||--o{ TRAINING_ASSIGNMENT
SIMULATION ||--o{ CLICK_EVENT  ·  TRAINING_MODULE ||--o{ TRAINING_ASSIGNMENT  ·  CLICK_EVENT ||--|| EXPLANATION
API Specification
POST /api/v1/telemetry/click Auth Required

Triggered by the Chrome Extension when a risky link is clicked. Drops the event payload into a RabbitMQ message queue for background processing. Returns 202 immediately to prevent browser lag.

REQUEST BODY
{
  "user_id":       "uuid-1234",
  "url":           "https://update-payroll-now.com",
  "page_context": "URGENT: Verify your credentials",
  "timestamp":    "2026-03-10T14:00:00Z"
}
RESPONSE 202
{ "status": 202, "message": "Event queued for background processing" }
CodeMeaning
400Missing required fields
401Missing or expired JWT token
500RabbitMQ queue unavailable
ML Pipeline — Order of Execution
Background Worker Pipeline (backend/ml_pipeline/)
# Step 1 — Sanitize PII from payload
DataPreprocessor.sanitize(payload)
→ Strips PII from URL, hashes user_id → Output: sanitized dict

# Step 2 — Build feature vector
FeatureVectorBuilder.extract(sanitized_data)
→ Output: [URL_length: 25, Domain_age: 2, prior_click_count: 0, ...]

# Step 3 — XGBoost risk scoring
RiskScoringEngine.predict(feature_vector)
→ Output: { threat_score: 92, risk_delta: +15 }

# Step 4 — NLP cognitive trigger classification
CognitiveModel.tag_trigger(page_context)
→ Output: { cognitive_trigger: "Urgency_Bias" }

# Step 5 — MAB training assignment
RecommendationEngine.assign_training(user_id, cognitive_trigger)
→ Output: { assigned_module: "TM-URG-01" }

# Step 6 — Neo4j graph update
Neo4jClient.update_graph(user_id, trigger, module_id)
→ Writes [VULNERABLE_TO] and [ASSIGNED_TRAINING] edges

# Step 7 — Counterfactual explanation (Gemini API)
ExplanationGenerator.generate(event_context)
→ Publishes alert to Redis Pub/Sub → pushed via WebSocket to user
Risk Scoring Algorithm
Cognitive Susceptibility Update Model
# Click probability (Protection Motivation Theory)
click_probability = (
    trigger_susceptibility
    × (1 − baseline_caution)
    × fatigue_multiplier
    + noise  # ±0.05
)

# Susceptibility reduction after training completion
new_susceptibility = current_susceptibility × (1 − learning_rate)

# Final risk score clamped to 0–100
return clamp(ema_update(raw_score), 0, 100)
Documentation

Testing & Validation

// Unit Tests · Integration Tests · E2E · Performance · Synthetic Agents
Backend Unit Tests
Test CaseMethod / EndpointInputExpected Output
Risk score calculationRiskScoringEngine.predict()[URL_length: 25, Domain_age: 2]{ threat_score: 45, risk_delta: +15 }
Cognitive trigger taggingCognitiveModel.tag_trigger()'URGENT: Verify your credentials'{ cognitive_trigger: 'Urgency_Bias' }
Training assignment (Urgency)RecommendationEngine.assign_training()user_id, 'Urgency_Bias'{ assigned_module: 'TM-URG-01' }
Training assignment (Authority)RecommendationEngine.assign_training()user_id, 'Authority_Bias'{ assigned_module: 'TM-AUT-01' }
Data sanitization (PII removal)DataPreprocessor.sanitize()Raw click event payloadSanitized dict, user_id hashed
Feature vector extractionFeatureVectorBuilder.extract()Sanitized URL and contextArray of floats [F1…F8]
Module completion scoringPOST /api/v1/users/{id}/training/{id}/completeuserId, moduleIdUpdatedRiskScore, ScoreImprovement
Performance Benchmarks
<200ms
Neo4j graph query (100+ events)
<2s
Full ML pipeline per click event
50
Concurrent WebSocket connections
>85%
Redis cache hit rate under load
Synthetic Agent Personas

Note: Because developers possess prior knowledge of the system, unbiased testing uses synthetic user agents that emulate realistic behavioral patterns. Each agent is initialized with a persona profile defining its susceptibility across all four trigger types.

PersonaUrgencyAuthoritySocial ProofScarcityCautionPurpose
The Rushed Employee0.850.400.300.600.20Validates urgency-trigger detection and TM-URG-01 assignment
The Rule Follower0.300.800.350.250.40Validates authority-trigger detection and IT/management spoofing scenarios
The Social User0.250.300.850.450.30Validates social proof detection and peer influence scenarios
The Cautious User0.150.200.150.200.85Validates false-positive rate — must NOT be over-assigned training
The Vulnerable User0.850.800.850.800.10Validates multi-dimensional vulnerability detection and critical-risk flagging
Project

Management & Ethics

// Timeline · Task Breakdown · Ethics · IRB Status
Project Timeline (15 Weeks)
WEEKS 1–2
Project Proposal & Executive Summary Creation
Project charter, team roles, problem statement, and primary persona definition
WEEKS 3–4
PRD & UI/UX Creation
User stories, PRD, Figma prototype, and UX wireframes for dashboard and Chrome Extension
WEEKS 5–7
Testing & Planning Strategy Creation; API
Testing & validation strategy, synthetic agent personas, unit/integration test planning, and API endpoint specification
WEEKS 8–10
Developer Design Creation
Developer design document, ML pipeline architecture, risk scoring algorithm, Neo4j schema, and system architecture diagram
WEEKS 11–12
Implementation
Core backend implementation: FastAPI endpoints, XGBoost risk engine, RabbitMQ queue, Redis Pub/Sub, and WebSocket alerts
WEEKS 13–14
Implementation
Frontend implementation: React dashboard, Chrome Extension (MV3), training module UI, and capstone site deployment to GitHub Pages
WEEK 15
Final Presentation & Poster
Final presentation, project poster, and live demo of end-to-end simulation click → risk score → training nudge pipeline
Ethics Statement
Legal & Ethical Monitoring Policy

AdaptiveSec operates exclusively on organization-owned platforms and systems. Organizations are legally permitted to monitor their own infrastructure, including email and web activity, for activity that may jeopardize their cybersecurity posture.

No human reviewer will access the contents of monitored interactions under normal operation. Manual review is reserved strictly for critical escalation scenarios, such as detecting an active threat actor or a confirmed security breach.