https://github.com/coconutlampshade/reco-deals
· scanned 2026-06-17 01:50 UTC (1 month, 1 week ago)
180 raw signals (0 security + 180 graph)
Last scanned 1 month, 1 week ago · v2 · last Δ -26.4 (diff) · 160 actionable findings from 1 signal source. 20 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 589 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 |
|---|---|---|---|
api_request_with_retry |
software | healthy | utils.py:11 |
atomic_json_write |
software | healthy | utils.py:53 |
setup_logging |
software | dead | utils.py:78 |
call_claude |
software | healthy | utils.py:87 |
_call_claude_cli |
software | healthy | utils.py:105 |
load_campaign_history |
software | healthy | campaign_report.py:29 |
build_url_to_asin_map |
software | healthy | campaign_report.py:38 |
fmt_pct |
software | healthy | campaign_report.py:63 |
fmt_date |
software | healthy | campaign_report.py:68 |
extract_asin_from_url |
software | healthy | campaign_report.py:75 |
fetch_all_reports |
software | healthy | campaign_report.py:86 |
fetch_click_details_for_campaigns |
software | healthy | campaign_report.py:103 |
section_summary |
software | healthy | campaign_report.py:122 |
section_campaign_table |
software | healthy | campaign_report.py:159 |
section_top_campaigns |
software | healthy | campaign_report.py:185 |
section_worst_campaigns |
software | healthy | campaign_report.py:205 |
section_product_clicks |
software | healthy | campaign_report.py:229 |
section_unsub_trend |
software | healthy | campaign_report.py:288 |
section_engagement_trend |
software | healthy | campaign_report.py:329 |
trend |
software | healthy | campaign_report.py:350 |
generate_report |
software | healthy | campaign_report.py:377 |
main |
software | healthy | campaign_report.py:439 |
_safe_get_stat |
software | healthy | keepa_utils.py:5 |
_extract_stat |
software | healthy | keepa_utils.py:18 |
_is_valid_third_party_price |
software | healthy | keepa_utils.py:28 |
parse_keepa_current_price |
software | healthy | keepa_utils.py:46 |
parse_keepa_stats |
software | healthy | keepa_utils.py:97 |
parse_keepa_buybox_price |
software | healthy | keepa_utils.py:150 |
parse_keepa_rating |
software | healthy | keepa_utils.py:216 |
calculate_deal_metrics |
software | healthy | keepa_utils.py:239 |
calculate_deal_score |
software | healthy | keepa_utils.py:260 |
load_deals |
software | healthy | find_substitutes.py:31 |
load_products |
software | healthy | find_substitutes.py:41 |
find_unavailable_asins |
software | healthy | find_substitutes.py:50 |
pick_best_variation |
software | healthy | find_substitutes.py:75 |
find_substitutes |
software | healthy | find_substitutes.py:110 |
apply_substitutions |
software | healthy | find_substitutes.py:181 |
main |
software | healthy | find_substitutes.py:219 |
load_deals |
software | healthy | generate_all_benefits.py:30 |
is_article_title |
software | healthy | generate_all_benefits.py:49 |
fix_catalog_titles |
software | healthy | generate_all_benefits.py:55 |
load_catalog |
software | healthy | generate_all_benefits.py:70 |
save_catalog |
software | healthy | generate_all_benefits.py:81 |
fetch_article_html |
software | healthy | generate_all_benefits.py:88 |
extract_product_context |
software | healthy | generate_all_benefits.py:107 |
__init__ |
software | healthy | generate_all_benefits.py:117 |
handle_starttag |
software | dead | generate_all_benefits.py:123 |
handle_endtag |
software | dead | generate_all_benefits.py:129 |
handle_data |
software | dead | generate_all_benefits.py:135 |
get_text |
software | healthy | generate_all_benefits.py:139 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
.env.example |
software | healthy | .env.example |
utils.py |
software | healthy | utils.py |
campaign_report.py |
software | healthy | campaign_report.py |
keepa_utils.py |
software | healthy | keepa_utils.py |
CLAUDE.md |
software | healthy | CLAUDE.md |
find_substitutes.py |
software | healthy | find_substitutes.py |
generate_all_benefits.py |
software | healthy | generate_all_benefits.py |
vercel.json |
software | healthy | vercel.json |
generate_report.py |
software | healthy | generate_report.py |
config.py |
software | healthy | config.py |
requirements.txt |
software | healthy | requirements.txt |
review_deals.py |
software | healthy | review_deals.py |
tune_audience_weights.py |
software | healthy | tune_audience_weights.py |
check_deals.py |
software | healthy | check_deals.py |
README.md |
software | healthy | README.md |
pyproject.toml |
software | healthy | pyproject.toml |
audience_score.py |
software | healthy | audience_score.py |
pa_api.py |
software | healthy | pa_api.py |
fetch_cooltools_campaigns.py |
software | healthy | fetch_cooltools_campaigns.py |
categorize.py |
software | healthy | categorize.py |
sales_report.py |
software | healthy | sales_report.py |
mailchimp_send.py |
software | healthy | mailchimp_send.py |
requirements-dev.txt |
software | healthy | requirements-dev.txt |
run_review.sh |
software | healthy | run_review.sh |
generate_catalog_data.py |
software | healthy | generate_catalog_data.py |
create_review_page.py |
software | healthy | create_review_page.py |
test_urls_and_categorize.py |
software | healthy | tests/test_urls_and_categorize.py |
test_audience_score.py |
software | healthy | tests/test_audience_score.py |
test_utils.py |
software | healthy | tests/test_utils.py |
test_keepa_utils.py |
software | healthy | tests/test_keepa_utils.py |
requirements.txt |
software | healthy | api/requirements.txt |
prices.py |
software | healthy | api/prices.py |
import_click_stats.py |
software | healthy | scripts/archive/import_click_stats.py |
fetch_latest_issue.py |
software | healthy | scripts/archive/fetch_latest_issue.py |
README.md |
software | healthy | scripts/archive/README.md |
convert_to_geniuslinks.py |
software | healthy | scripts/archive/convert_to_geniuslinks.py |
weekly-update.yml |
software | healthy | .github/workflows/weekly-update.yml |
daily-deals.yml |
software | healthy | .github/workflows/daily-deals.yml |
tests.yml |
software | healthy | .github/workflows/tests.yml |
deploy-vercel.yml |
software | healthy | .github/workflows/deploy-vercel.yml |
action.yml |
software | healthy | .github/actions/notify-failure/action.yml |
review.html |
software | healthy | templates/review.html |
edit.html |
software | healthy | templates/edit.html |
import_cooltools.py |
software | healthy | catalog/import_cooltools.py |
processed_campaigns.json |
software | healthy | catalog/processed_campaigns.json |
campaign_history.json |
software | healthy | catalog/campaign_history.json |
featured_history.json |
software | healthy | catalog/featured_history.json |
unavailable_tracking.json |
software | healthy | catalog/unavailable_tracking.json |
audience_weights.json |
software | healthy | catalog/audience_weights.json |
products.json |
software | healthy | catalog/products.json |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
api |
software | healthy | api |
scripts |
software | healthy | scripts |
archive |
software | healthy | scripts/archive |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
actions |
software | healthy | .github/actions |
notify-failure |
software | healthy | .github/actions/notify-failure |
templates |
software | healthy | templates |
catalog |
software | healthy | catalog |
.claude |
software | healthy | .claude |
agents |
software | healthy | .claude/agents |
skills |
software | healthy | .claude/skills |
catalog-cleanup |
software | healthy | .claude/skills/catalog-cleanup |
push-newsletter |
software | healthy | .claude/skills/push-newsletter |
review-deals |
software | healthy | .claude/skills/review-deals |
performance-report |
software | healthy | .claude/skills/performance-report |
pre-send-check |
software | healthy | .claude/skills/pre-send-check |
regen-benefits |
software | healthy | .claude/skills/regen-benefits |
public |
software | healthy | public |
history |
software | healthy | history |
candidates |
software | healthy | history/candidates |
| Label | Layer | Status | Path |
|---|---|---|---|
HTMLTextExtractor |
software | healthy | generate_all_benefits.py:116 |
HTMLTextExtractor |
software | healthy | review_deals.py:121 |
ReviewHandler |
software | healthy | review_deals.py:1288 |
_ProgressTee |
software | healthy | create_review_page.py:502 |
ReviewHandler |
software | healthy | create_review_page.py:916 |
TestResolveAffiliateUrl |
software | healthy | tests/test_urls_and_categorize.py:8 |
TestCategorize |
software | healthy | tests/test_urls_and_categorize.py:27 |
TestDiversify |
software | healthy | tests/test_urls_and_categorize.py:43 |
TestAudienceScore |
software | healthy | tests/test_audience_score.py:19 |
TestCombinedScore |
software | healthy | tests/test_audience_score.py:53 |
TestDealScore |
software | healthy | tests/test_keepa_utils.py:34 |
TestDealMetrics |
software | healthy | tests/test_keepa_utils.py:100 |
TestCurrentPrice |
software | healthy | tests/test_keepa_utils.py:117 |
TestStats |
software | healthy | tests/test_keepa_utils.py:154 |
TestRating |
software | healthy | tests/test_keepa_utils.py:184 |
handler |
software | healthy | api/prices.py:165 |
ProxyItem |
software | healthy | scripts/archive/fetch_latest_issue.py:74 |
ProxyText |
software | healthy | scripts/archive/fetch_latest_issue.py:96 |
| Label | Layer | Status | Path |
|---|---|---|---|
VERCEL_PROJECT_ID |
cicd | healthy | — |
VERCEL_ORG_ID |
cicd | healthy | — |
MAILCHIMP_API_KEY |
cicd | healthy | — |
VERCEL_TOKEN |
cicd | healthy | — |
KEEPA_API_KEY |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::weekly-update |
cicd | healthy | .github/workflows/weekly-update.yml |
gha::daily-deals |
cicd | healthy | .github/workflows/daily-deals.yml |
gha::tests |
cicd | healthy | .github/workflows/tests.yml |
gha::deploy-vercel |
cicd | healthy | .github/workflows/deploy-vercel.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
update-catalog |
cicd | healthy | .github/workflows/weekly-update.yml |
check-prices |
cicd | healthy | .github/workflows/daily-deals.yml |
test |
cicd | healthy | .github/workflows/tests.yml |
deploy |
cicd | healthy | .github/workflows/deploy-vercel.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
port:04 |
network | healthy | .github/workflows/weekly-update.yml |
port:06 |
network | healthy | .github/workflows/weekly-update.yml |
port:10 |
network | healthy | .github/workflows/daily-deals.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::public/newsletter-2026-03-30.html |
security | healthy | public/newsletter-2026-03-30.html |
auth::public/newsletter-2026-03-27.html |
security | healthy | public/newsletter-2026-03-27.html |
auth::public/newsletter-2026-02-11.html |
security | healthy | public/newsletter-2026-02-11.html |
| Label | Layer | Status | Path |
|---|---|---|---|
120.0.0.0 |
network | healthy | fetch_cooltools_campaigns.py |
127.0.0.1 |
network | healthy | create_review_page.py |
| Label | Layer | Status | Path |
|---|---|---|---|
generic_api_key::scripts/archive/convert_to_geniuslinks.py |
security | healthy | scripts/archive/convert_to_geniuslinks.py |
generic_api_key::scripts/archive/convert_to_geniuslinks.py |
security | healthy | scripts/archive/convert_to_geniuslinks.py |
| Label | Layer | Status | Path |
|---|---|---|---|
coconutlampshade__reco-deals |
software | healthy | /data/fable5_failed_archive/coconutlampshade__reco-deals |
| Label | Layer | Status | Path |
|---|---|---|---|
vps::aws |
hardware | healthy | pa_api.py |
This page is publicly accessible at:
https://repobility.com/scan/0daf684c-386a-4f1c-944e-d31a7cbee421/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/0daf684c-386a-4f1c-944e-d31a7cbee421/
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.