Scan timing: clone 1.23s · analysis 0.28s · 0.4 MB · GitHub API rate-limit (preflight)
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)
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.
| 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 |
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.
| Label | Layer | Status | Path |
|---|---|---|---|
_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.
| Label | Layer | Status | Path |
|---|---|---|---|
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 |
| Label | Layer | Status | Path |
|---|---|---|---|
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 |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-ysf390rj |
software | healthy | /tmp/repobility-clone-ysf390rj |
| Label | Layer | Status | Path |
|---|---|---|---|
Tests |
software | healthy | Tests |
| Label | Layer | Status | Path |
|---|---|---|---|
port:8501 |
network | healthy | Dockerfile |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
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.