{# ── Header ── #}
DeepShield Analysis Report  ·  ID: {{ analysis_id }}
Media: {{ media_type | upper }}  ·  Generated: {{ generated_at }}
{# ── Verdict ── #}

Deepfake Probability

{% if donut_b64 %} {% endif %}
{{ fake_score }}
/ 100
{{ verdict.label }}
Severity: {{ verdict.severity }}
Model: {{ verdict.model_label }}  ({{ '%.1f' | format(verdict.model_confidence * 100) }}% confidence)
score donut
{# ── LLM Explanation ── #} {% if llm_summary and llm_summary.paragraph %}

AI Explanation

{{ llm_summary.paragraph }}

{% if llm_summary.bullets %} {% endif %} {% if llm_summary.model_used %}
via {{ llm_summary.model_used }}
{% endif %}
{% endif %} {# ══════════ IMAGE ══════════ #} {% if media_type == 'image' %} {# EXIF #} {% if explainability.exif %}

EXIF Metadata

{% if explainability.exif.make %} {% endif %} {% if explainability.exif.model %} {% endif %} {% if explainability.exif.datetime_original %} {% endif %} {% if explainability.exif.software %} {% endif %} {% if explainability.exif.lens_model %} {% endif %} {% if explainability.exif.gps_info %} {% endif %}
FieldValueTrust Signal
Camera Make{{ explainability.exif.make }}+real
Camera Model{{ explainability.exif.model }}
Date Taken{{ explainability.exif.datetime_original }}+real
Software{{ explainability.exif.software }} {% if 'photoshop' in explainability.exif.software | lower %}+fake{% endif %}
Lens Model{{ explainability.exif.lens_model }}
GPS{{ explainability.exif.gps_info }}
Trust adjustment {% if explainability.exif.trust_adjustment > 0 %} +{{ explainability.exif.trust_adjustment }} (fake signal) {% elif explainability.exif.trust_adjustment < 0 %} {{ explainability.exif.trust_adjustment }} (real signal) {% else %} neutral {% endif %}
{% endif %} {# Artifact indicators #} {% if explainability.artifact_indicators %}

Artifact Indicators

{% for ind in explainability.artifact_indicators %} {% endfor %}
TypeSeverityConfidenceDescription
{{ ind.type }} {{ ind.severity }} {{ '%.0f' | format(ind.confidence * 100) }}% {{ ind.description }}
{% else %}

Artifact Indicators

No artifacts detected.
{% endif %} {# VLM Detailed Breakdown #} {% if explainability.vlm_breakdown %}

Detailed Breakdown

{% if explainability.vlm_breakdown.model_used %}
Scored by {{ explainability.vlm_breakdown.model_used }}
{% endif %} {% set bd = explainability.vlm_breakdown %} {% for comp_key, comp_label in [ ('facial_symmetry', 'Facial Symmetry'), ('skin_texture', 'Skin Texture'), ('lighting_consistency', 'Lighting Consistency'), ('background_coherence', 'Background Coherence'), ('anatomy_hands_eyes', 'Anatomy / Hands & Eyes'), ('context_objects', 'Context & Objects') ] %} {% set comp = bd[comp_key] %} {% set sc2 = comp.score if comp else 75 %} {% set bar_cls = 'vlm-real' if sc2 >= 70 else ('vlm-warn' if sc2 >= 40 else 'vlm-fake') %} {% endfor %}
ComponentScoreBarNotes
{{ comp_label }} {{ sc2 }}/100 {{ comp.notes if comp else '' }}
{% endif %} {% endif %}{# end image #} {# ══════════ VIDEO ══════════ #} {% if media_type == 'video' %}

Frame-Level Analysis

MetricValue
Frames sampled{{ explainability.num_frames_sampled }}
Frames with face{{ explainability.num_face_frames }}
Suspicious frames{{ explainability.num_suspicious_frames }}
Mean suspicious prob{{ '%.1f' | format(explainability.mean_suspicious_prob * 100) }}%
Max suspicious prob{{ '%.1f' | format(explainability.max_suspicious_prob * 100) }}%
Insufficient faces{{ explainability.insufficient_faces }}
{% endif %} {# ══════════ TEXT ══════════ #} {% if media_type == 'text' %} {# Language + truth-override #} {% if explainability.detected_language and explainability.detected_language != 'en' %}

Language

Detected: {{ explainability.detected_language | upper }} — analysed via multilingual model
{% endif %} {% if explainability.truth_override and explainability.truth_override.applied %}
Truth-override applied. Corroborated by {{ explainability.truth_override.source_name }} ({{ '%.0f' | format(explainability.truth_override.similarity * 100) }}% similarity). Fake probability reduced from {{ '%.1f' | format(explainability.truth_override.fake_prob_before * 100) }}% to {{ '%.1f' | format(explainability.truth_override.fake_prob_after * 100) }}%.
{% endif %}

Text Classification

MetricValue
Fake probability{{ '%.1f' | format(explainability.fake_probability * 100) }}%
Top label{{ explainability.top_label }}
Sensationalism score{{ explainability.sensationalism.score }}/100 ({{ explainability.sensationalism.level }})
Exclamations{{ explainability.sensationalism.exclamation_count }}
ALL CAPS words{{ explainability.sensationalism.caps_word_count }}
Clickbait matches{{ explainability.sensationalism.clickbait_matches }}
Emotional words{{ explainability.sensationalism.emotional_word_count }}
{% if explainability.manipulation_indicators %}

Manipulation Indicators ({{ explainability.manipulation_indicators | length }})

{% for m in explainability.manipulation_indicators %} {% endfor %}
PatternSeverityMatched text
{{ m.pattern_type }} {{ m.severity }} {{ m.matched_text }}
{% endif %} {% if explainability.keywords %}

Extracted Keywords

{% for kw in explainability.keywords %}{{ kw }}{% endfor %}
{% endif %} {% endif %}{# end text #} {# ══════════ SCREENSHOT ══════════ #} {% if media_type == 'screenshot' %} {% if explainability.detected_language and explainability.detected_language != 'en' %}
Detected language: {{ explainability.detected_language | upper }}
{% endif %} {% if explainability.truth_override and explainability.truth_override.applied %}
Truth-override applied. {{ explainability.truth_override.source_name }} ({{ '%.0f' | format(explainability.truth_override.similarity * 100) }}% similarity)
{% endif %}

Extracted Text

{{ explainability.ocr_boxes | length }} OCR regions detected
{{ explainability.extracted_text }}

Analysis Summary

MetricValue
Fake probability{{ '%.1f' | format(explainability.fake_probability * 100) }}%
Sensationalism{{ explainability.sensationalism.score }}/100 ({{ explainability.sensationalism.level }})
Suspicious phrases{{ explainability.suspicious_phrases | length }}
Layout anomalies{{ explainability.layout_anomalies | length }}
{% if explainability.suspicious_phrases %}

Suspicious Phrases

{% for p in explainability.suspicious_phrases %} {% endfor %}
TextPatternSeverity
{{ p.text }} {{ p.pattern_type }} {{ p.severity }}
{% endif %} {% endif %}{# end screenshot #} {# ══════════ SOURCES (all types) ══════════ #} {% if trusted_sources %}

Trusted Source Cross-Reference ({{ trusted_sources | length }})

{% for s in trusted_sources %} {% endfor %}
SourceTitleRelevance
{{ s.source_name }} {{ s.title }} {{ '%.0f' | format(s.relevance_score * 100) }}%
{% endif %} {% if contradicting_evidence %}

Contradicting Evidence ({{ contradicting_evidence | length }})

{% for c in contradicting_evidence %} {% endfor %}
SourceTitleType
{{ c.source_name }}{{ c.title }}{{ c.type }}
{% endif %} {# ══════════ PROCESSING ══════════ #}

Processing Summary

Model: {{ processing_summary.model_used }}  ·  Duration: {{ processing_summary.total_duration_ms }} ms
{{ processing_summary.stages_completed | join(' → ') }}
{# ══════════ FOOTER ══════════ #}