Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.

Scan timing: clone 1.23s · analysis 0.28s · 0.4 MB · GitHub API rate-limit (preflight)

yassineaourarh/phishguard-ai

https://github.com/yassineaourarh/phishguard-ai.git · scanned 2026-05-26 07:42 UTC (2 weeks, 4 days ago) · 10 languages

103 raw signals (45 security + 58 graph) 54th percentile · Python · small (2-20K LoC) System graph score 86 (lower by 16)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 2 weeks, 4 days ago · v2 · 41 actionable findings from 2 signal sources. 33 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Score breakdown â 2026-05-18-v5
Component Sub-score Weight Contribution
structure_score 40.0 0.15 6.00
security_score 94.2 0.25 23.55
testing_score 82.0 0.20 16.40
documentation_score 86.0 0.15 12.90
practices_score 42.0 0.15 6.30
code_quality 48.0 0.10 4.80
Overall 1.00 70.0
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all

All 104 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.

LabelLayerStatusPath
_ensure_dir software healthy tracking_server.py:36
generate_tracking_id software healthy tracking_server.py:45
save_tracking_link software healthy tracking_server.py:50
get_tracking_info software healthy tracking_server.py:75
record_event software healthy tracking_server.py:90
get_all_events software healthy tracking_server.py:116
_compute_not_opened software healthy tracking_server.py:133
get_campaign_stats software dead tracking_server.py:149
get_all_campaigns software dead tracking_server.py:215
get_recipient_detail software dead tracking_server.py:230
inject_tracking_into_email software healthy tracking_server.py:294
replace_link software dead tracking_server.py:318
log_message software dead tracking_server.py:371
do_GET software dead tracking_server.py:375
start_tracking_server software healthy tracking_server.py:455
stop_tracking_server software healthy tracking_server.py:477
is_tracking_server_running software dead tracking_server.py:487
__post_init__ software healthy email_sender.py:99
__init__ software healthy email_sender.py:255
_load_allowlist software healthy email_sender.py:134
add_to_allowlist software dead email_sender.py:148
validate_recipient software healthy email_sender.py:159
validate_content software healthy email_sender.py:177
validate_email software healthy email_sender.py:229
_add_footer software healthy email_sender.py:274
_log_outbox software healthy email_sender.py:289
_log_error software healthy email_sender.py:294
_send_smtp software healthy email_sender.py:299
_send_sendgrid software healthy email_sender.py:348
_send_mailgun software healthy email_sender.py:409
send_email software healthy email_sender.py:463
send_campaign software dead email_sender.py:555
send_personalized_campaign software healthy email_sender.py:588
get_outbox software dead email_sender.py:701
get_errors software dead email_sender.py:715
send_phishing_simulation_email software healthy email_sender.py:734
is_reasoning_step software healthy agent.py:52
to_dict software healthy agent.py:73
__init__ software healthy agent.py:235
_register_default_tools software healthy agent.py:97
mock_rag_search software dead agent.py:100
real_llm_generation software dead agent.py:111
mock_validate_email software dead agent.py:166
mock_create_campaign software dead agent.py:175
mock_simulate_events software dead agent.py:182
mock_get_metrics software dead agent.py:189
register software dead agent.py:207
get software healthy agent.py:211
exists software healthy agent.py:215
list_tools software dead agent.py:219

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
tracking_server.py software healthy tracking_server.py
README.md software healthy README.md
config.py software warning config.py
Dockerfile software healthy Dockerfile
email_sender.py software healthy email_sender.py
streamlit_app.py software warning streamlit_app.py
agent.py software healthy agent.py
requirements.txt software healthy requirements.txt
setup_colab.py software healthy setup_colab.py
test_config_integrity.py software healthy Tests/test_config_integrity.py
test_security_validator.py software healthy Tests/test_security_validator.py

LabelLayerStatusPath
TrackingHandler software healthy tracking_server.py:368
EmailConfig software healthy email_sender.py:65
EmailMessage software healthy email_sender.py:89
SendResult software healthy email_sender.py:105
EmailSecurityValidator software healthy email_sender.py:120
PhishingEmailSender software healthy email_sender.py:249
StepStatus software healthy agent.py:29
AgentStep software healthy agent.py:39
AgentPlan software healthy agent.py:64
ToolRegistry software healthy agent.py:89
PhishingAgent software healthy agent.py:228

LabelLayerStatusPath
repobility-clone-ysf390rj software healthy /tmp/repobility-clone-ysf390rj

LabelLayerStatusPath
Tests software healthy Tests

LabelLayerStatusPath
port:8501 network healthy Dockerfile

LabelLayerStatusPath
image::Dockerfile hardware healthy Dockerfile
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/967f230d-e3fc-4a5e-bc55-16dd464a891a/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/967f230d-e3fc-4a5e-bc55-16dd464a891a/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.