Prismatic Influence

Prismatic Influence

175 files Intelligence

Overview

Prismatic Influence provides tools for detecting and analyzing influence operations, disinformation campaigns, and information warfare tactics. It monitors information channels for coordinated inauthentic behavior, narrative manipulation, and sentiment engineering targeting organizations or public discourse. In an era where reputation attacks and disinformation campaigns can materially damage organizations, Influence provides the analytical foundation for understanding who is saying what, whether the behavior is coordinated, and what the likely objectives are. This module operates at the strategic level of threat intelligence, analyzing campaigns as organized operations rather than individual messages.

The module models information flows as directed graphs where nodes represent accounts, publications, or platforms, and edges represent content propagation with temporal metadata. By analyzing the structural properties of these graphs -- clustering coefficients, propagation velocity, temporal synchronization -- Influence can distinguish organic information spread from coordinated campaigns with high confidence. The NABLA framework's signal plurality axiom is enforced throughout: no single indicator is sufficient to classify behavior as inauthentic; multiple independent signals must converge. Graph analysis results are persisted in KuzuDB as a knowledge graph, enabling relationship traversal across campaigns, actors, and narratives.

Influence also provides counter-narrative effectiveness measurement, allowing organizations to evaluate whether their communications are successfully addressing disinformation. This closed-loop capability transforms Influence from a passive monitoring tool into an active defense system for organizational reputation -- directly supporting the platform's EASM mission by covering the informational dimension of the attack surface.

Architecture

Social APIs --> Collection Layer --> Normalization --> Analysis Layer --> Assessment
News Feeds -->       |                  |               |               |
Forums     -->   GenStage Pipeline   Event Stream   Graph Build     Confidence
Telegram   -->   Rate Limiting       Dedup/Enrich   NLP Classify    Scoring
Custom     -->   Backpressure        Entity Tag      Temporal Sync   KuzuDB Store

The module is organized around three processing layers. The Collection Layer aggregates content from configured channels (social media APIs, news feeds, forum scrapers) into a normalized event stream. The Analysis Layer applies graph construction, temporal pattern detection, and NLP-based content classification using a pipeline of GenStage producers and consumers with backpressure management. The Assessment Layer combines analytical outputs into structured influence assessments with confidence scoring, stored in KuzuDB for relationship traversal and in PostgreSQL for time-series querying.

Each analysis function runs as a supervised Task under a TaskSupervisor within the OTP supervision tree, enabling parallel processing of multiple channels and campaigns simultaneously. Telemetry events report processing latencies, detection rates, and false positive ratios for continuous calibration.

Key Modules

ModuleResponsibility
PrismaticInfluencePublic facade: analyze_narrative/1, detect_coordination/1, assess_credibility/2
PrismaticInfluence.ApplicationOTP application entry point and supervision tree
PrismaticInfluence.CollectorMulti-channel content collection with rate limiting
PrismaticInfluence.GraphBuilderInformation flow graph construction with temporal edges
PrismaticInfluence.NlpClassifierContent classification using semantic embeddings
PrismaticInfluence.CoordinationDetectorTemporal synchronization and behavioral clustering analysis
PrismaticInfluence.CredibilityAssessorSource credibility scoring with historical accuracy tracking
PrismaticInfluence.CounterNarrativeCounter-narrative effectiveness measurement
PrismaticInfluence.CampaignTrackerLong-running campaign state management with lifecycle tracking

Key Features

Detection Capabilities

  • Coordinated inauthentic behavior identification through temporal synchronization analysis
  • Bot network detection using account creation patterns, posting frequency, and content similarity
  • Narrative tracking with semantic clustering to group related messaging across platforms using embeddings
  • Astroturfing and fake grassroots identification through account provenance analysis

Analysis Tools

  • Narrative network mapping showing propagation paths from origin to amplification nodes
  • Source credibility assessment using historical accuracy, editorial standards, and ownership data
  • Information cascade analysis measuring reach, velocity, and amplification ratios
  • Counter-narrative effectiveness measurement comparing sentiment shifts before and after response

Coordination Detection Methodology

The coordination detection system uses three complementary signals that must converge before classifying behavior as coordinated:

SignalMethodWeight
Temporal SynchronizationMessage timing correlation within sliding windows0.35
Content SimilaritySemantic embedding cosine similarity above threshold0.35
Network OverlapShared follower/following patterns and engagement targets0.30
defmodule PrismaticInfluence.CoordinationDetector do
  @spec detect(list(map()), keyword()) :: {:ok, list(map())} | {:error, term()}
  def detect(accounts, opts \\ []) do
    threshold = Keyword.get(opts, :threshold, 0.85)
    methods = Keyword.get(opts, :methods, [:temporal_sync, :content_similarity, :network_overlap])

    signals = Enum.map(methods, fn method ->
      {method, compute_signal(accounts, method)}
    end)

    clusters = fuse_signals(signals, threshold)

    {:ok, Enum.map(clusters, fn cluster ->
      %{
        accounts: cluster.members,
        coordination_score: cluster.score,
        evidence: cluster.signals,
        confidence: compute_confidence(cluster)
      }
    end)}
  end
end

Narrative Lifecycle Tracking

Influence campaigns evolve through distinct phases, from initial seeding through amplification to saturation. The CampaignTracker models this lifecycle to provide predictive intelligence on campaign trajectory:

PhaseIndicatorsTypical DurationResponse Window
SeedingLow volume, few accounts, test messaging1-7 daysPre-emptive
AmplificationRapid volume increase, bot activation, cross-platform spread1-3 daysImmediate
PeakMaximum reach, mainstream media pickup12-48 hoursReactive
DecayDeclining engagement, account cleanup3-14 daysAssessment
defmodule PrismaticInfluence.CampaignTracker do
  @spec assess_phase(Campaign.t()) :: {:ok, CampaignPhase.t()} | {:error, term()}
  def assess_phase(campaign) do
    metrics = compute_campaign_metrics(campaign)

    phase = cond do
      metrics.volume_trend == :rapid_increase and metrics.account_diversity < 0.3 ->
        :amplification
      metrics.volume > metrics.baseline * 10 ->
        :peak
      metrics.volume_trend == :declining and metrics.age_days > 3 ->
        :decay
      true ->
        :seeding
    end

    {:ok, %CampaignPhase{phase: phase, confidence: metrics.confidence, metrics: metrics}}
  end
end

Monitoring and Alerting

  • Real-time information channel surveillance with configurable keyword and entity resolution tracking
  • Trend divergence detection comparing observed narrative volume against baseline models
  • Cross-platform coordination identification linking accounts across social media services
  • Early warning system for emerging campaigns based on velocity and coordination indicators

Evidence and Reporting

  • Campaign evidence packaging with full provenance chains for audit trail requirements
  • GDPR-compliant personal data handling in influence analysis outputs
  • Structured evidence export for regulatory reporting on information security incident response
  • Visualization of influence networks for executive briefings via Phoenix LiveView

Usage

# Analyze narrative spread across channels
{:ok, analysis} = PrismaticInfluence.analyze_narrative(
  topic: "brand_name",
  channels: [:twitter, :reddit, :news, :telegram],
  window: :last_7_days)
# => %{narratives: [...], coordination_score: 0.73, top_amplifiers: [...]}

# Detect coordinated inauthentic behavior
{:ok, clusters} = PrismaticInfluence.detect_coordination(
  accounts: account_list,
  threshold: 0.85,
  methods: [:temporal_sync, :content_similarity, :network_overlap])

# Assess source credibility with evidence
{:ok, assessment} = PrismaticInfluence.assess_credibility(source_url,
  factors: [:editorial_history, :ownership, :citation_patterns])

# Monitor for emerging influence campaigns
{:ok, monitor} = PrismaticInfluence.create_monitor(
  entity: "organization_name",
  channels: [:all],
  alert_threshold: :medium)

# Measure counter-narrative effectiveness
{:ok, effectiveness} = PrismaticInfluence.measure_counter_narrative(
  campaign_id: campaign_id,
  metric: :sentiment_shift,
  window: :post_response_7_days)

NABLA Compliance

NABLA AxiomInfluence EnforcementImplementation
Signal PluralityMulti-signal convergence required for coordination classificationThree independent detection methods must agree above threshold
Provenance MandatoryEvery influence claim traceable to source contentFull evidence chain from social media post to assessment
Contradiction PreservationConflicting credibility assessments preservedMultiple assessment methods maintained independently
Source IndependenceEach analysis method operates independentlySeparate GenStage stages with independent state
Unknown ValidLow-confidence assessments explicitly markedConfidence scores with explicit uncertainty ranges

Testing

Collection tests verify channel integration, rate limiting, and content normalization against captured API response fixtures. Coordination detection tests verify temporal synchronization, content similarity, and network overlap algorithms against labeled datasets of known coordinated and organic behavior. NLP classification tests verify semantic clustering accuracy.

Integration tests exercise the full pipeline from content collection through analysis to assessment generation. Property-based tests generate random content streams to verify coordination detection stability. Campaign lifecycle tests verify phase transition accuracy using synthetic campaign data with known trajectories.

Integration Points

ApplicationRelationship
Prismatic ManipulationTactical social engineering analysis complementing strategic detection
Prismatic NarrativeIntelligence report generation from influence analysis findings
Prismatic DeductionRule-based inference over influence indicators
Prismatic CERCampaign evidence storage for regulatory reporting
Prismatic GraphInfluence network graph stored in KuzuDB

Performance

OperationLatencyNotes
Content collection (per channel)1-5sAPI rate limiting
Coordination detection2-10sDepends on account volume
NLP classification100-500msPer content item
Credibility assessment500ms-2sMulti-factor evaluation
Graph construction< 1sPer campaign update
Campaign phase assessment< 200msMetric computation and classification

Telemetry events: [:prismatic, :influence, :campaign_detected], [:prismatic, :influence, :coordination_scored], [:prismatic, :influence, :narrative_tracked].


Connect & Contribute

Created by Tomáš Korcak (korczis) | Open Source under GHL