AI Slop Code RIsk Monitor

FujiwaraChoki/MoneyPrinterV2

Automate the process of making money online.

23.7 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for FujiwaraChoki/MoneyPrinterV2, a Python project with 32,082 GitHub stars. SynthScan examined 5,244 lines of code across 39 source files, recording 103 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 23.7 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

23.7
Adjusted Signal
23.7
Raw Pattern Score
100%
Time Factor
2026-09-15
Last Push
32.1K
Stars
Python
Language
5.2K
Lines of Code
39
Files
103
Pattern Hits
2026-10-12
Scan Date
0.05
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 53.4/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 57 finding(s).

Hallucinated Dependency & Supply Chain Risk 24.2/100 · LOW

Are imports declared and package/API names verified? 29 finding(s).

Agent Over-Engineering Ratio 37.3/100 · MEDIUM

Are wrappers, guards, and repeated structures necessary? 50 finding(s).

PR Review Velocity Impact 70.2/100 · HIGH

Which changes need focused human review? 103 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 2MEDIUM 7LOW 94

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 103 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers33 hits · 34 pts
SeverityFileLineSnippetContext
LOWtests/test_post_bridge_integration.py20 def test_resolve_social_account_ids_interactive_prompts_for_ambiguous_accounts(self) -> None:CODE
LOWtests/test_post_bridge_integration.py40 def test_resolve_social_account_ids_skips_non_interactive_when_multiple_accounts_exist(self) -> None:CODE
LOWtests/test_post_bridge_integration.py58 def test_cron_mode_skips_when_auto_crosspost_is_disabled(CODE
LOWtests/test_post_bridge_integration.py83 def test_interactive_crosspost_uploads_and_posts(CODE
LOWtests/test_post_bridge_integration.py118 def test_account_ids_work_without_platform_filters(CODE
LOWtests/test_cron_post_bridge.py49 def test_crosspost_does_not_run_when_youtube_upload_fails(CODE
LOWtests/test_post_bridge_client.py31 def test_list_social_accounts_follows_pagination(self, _sleep_mock) -> None:CODE
LOWtests/test_post_bridge_client.py83 def test_create_post_retries_after_rate_limit(self, sleep_mock) -> None:CODE
LOWtests/test_post_bridge_client.py101 def test_upload_media_does_not_forward_api_bearer_token_to_signed_upload_url(self) -> None:CODE
LOWtests/test_post_bridge_client.py130 def test_request_rewinds_streamed_upload_body_before_retry(self, sleep_mock) -> None:CODE
LOWtests/test_youtube_custom_topic.py78 def test_custom_topic_skips_llm_topic_generation(self, _verbose_mock) -> None:CODE
LOW⚡tests/test_youtube_custom_topic.py89 def test_no_topic_falls_back_to_llm_topic_generation(self, _verbose_mock) -> None:CODE
LOW⚡tests/test_youtube_custom_topic.py98 def test_blank_topic_falls_back_to_llm_topic_generation(self, _verbose_mock) -> None:CODE
LOW⚡tests/test_youtube_custom_topic.py106 def test_set_topic_normalizes_whitespace(self) -> None:CODE
LOW⚡tests/test_youtube_custom_topic.py114 def test_set_topic_rejects_empty_topic(self) -> None:CODE
LOWtests/test_config.py23 def test_missing_platforms_uses_defaults(self) -> None:CODE
LOWtests/test_config.py32 def test_invalid_or_empty_platforms_do_not_expand_to_defaults(self) -> None:CODE
LOWtests/test_config.py49 def test_non_list_platforms_fail_closed(self) -> None:CODE
LOWtests/test_config.py66 def test_non_object_post_bridge_config_falls_back_to_defaults(self) -> None:CODE
LOWsrc/config.py176def get_google_maps_scraper_zip_url() -> str:CODE
LOWsrc/config.py186def get_google_maps_scraper_niche() -> str:CODE
LOWsrc/config.py206def get_outreach_message_subject() -> str:CODE
LOWsrc/config.py216def get_outreach_message_body_file() -> str:CODE
LOWsrc/config.py328def get_script_sentence_length() -> int:CODE
LOWsrc/post_bridge_integration.py14def resolve_social_account_ids(CODE
LOWsrc/post_bridge_integration.py105def build_platform_configurations(title: str) -> dict:CODE
LOWsrc/post_bridge_integration.py126def maybe_crosspost_youtube_short(CODE
LOWsrc/utils.py13def close_running_selenium_instances() -> None:CODE
LOWsrc/main.py22def generate_and_upload_short(youtube: YouTube, tts: TTS, topic: str | None = None) -> None:CODE
LOWsrc/classes/YouTube.py392 def generate_script_to_speech(self, tts_instance: TTS) -> str:STRING
LOWsrc/classes/YouTube.py465 def generate_subtitles_assemblyai(self, audio_path: str) -> str:STRING
LOWsrc/classes/YouTube.py505 def generate_subtitles_local_whisper(self, audio_path: str) -> str:STRING
LOWsrc/classes/AFM.py91 def scrape_product_information(self) -> None:CODE
Unused Imports29 hits · 29 pts
SeverityFileLineSnippetContext
LOWtests/test_cron_post_bridge.py5CODE
LOWscripts/preflight_local.py106CODE
LOWsrc/cron.py4CODE
LOWsrc/utils.py7CODE
LOWsrc/utils.py8CODE
LOWsrc/main.py4CODE
LOWsrc/main.py5CODE
LOWsrc/main.py6CODE
LOWsrc/main.py7CODE
LOWsrc/main.py8CODE
LOWsrc/main.py10CODE
LOWsrc/classes/YouTube.py9CODE
LOWsrc/classes/YouTube.py10CODE
LOWsrc/classes/YouTube.py13CODE
LOWsrc/classes/YouTube.py14CODE
LOWsrc/classes/YouTube.py16CODE
LOWsrc/classes/YouTube.py18CODE
LOWsrc/classes/YouTube.py20CODE
LOWsrc/classes/Outreach.py14CODE
LOWsrc/classes/Outreach.py15CODE
LOWsrc/classes/Outreach.py16CODE
LOWsrc/classes/AFM.py5CODE
LOWsrc/classes/AFM.py6CODE
LOWsrc/classes/AFM.py7CODE
LOWsrc/classes/AFM.py10CODE
LOWsrc/classes/Twitter.py7CODE
LOWsrc/classes/Twitter.py8CODE
LOWsrc/classes/Twitter.py9CODE
LOWsrc/classes/Twitter.py14CODE
Self-Referential Comments7 hits · 19 pts
SeverityFileLineSnippetContext
MEDIUMsrc/cache.py76 # Create the cache fileCOMMENT
MEDIUMsrc/cache.py152 # Create the cache fileCOMMENT
MEDIUMsrc/classes/YouTube.py894 # Create the cache fileSTRING
MEDIUMsrc/classes/Outreach.py180 # Define a regular expression pattern to match email addressesCOMMENT
MEDIUMsrc/classes/Outreach.py246 # Create a yagmail SMTP client outside the loopCOMMENT
MEDIUMsrc/classes/AFM.py160 # Initialize the Twitter classCOMMENT
MEDIUMsrc/classes/Twitter.py151 # Create the cache fileCOMMENT
Excessive Try-Catch Wrapping17 hits · 16 pts
SeverityFileLineSnippetContext
LOWscripts/setup_local.sh80except Exception:CODE
LOWscripts/preflight_local.py30 except Exception as exc:CODE
LOWscripts/preflight_local.py81 except Exception as exc:CODE
LOWscripts/preflight_local.py109 except Exception as exc:CODE
LOWsrc/utils.py31 except Exception as e:CODE
LOWsrc/utils.py119 except Exception as err:CODE
LOWsrc/utils.py133 except Exception as e:CODE
LOWsrc/utils.py157 except Exception as e:CODE
LOWsrc/main.py488 except Exception as e:CODE
LOWsrc/classes/YouTube.py274 except Exception:STRING
LOWsrc/classes/YouTube.py375 except Exception as e:STRING
LOWsrc/classes/YouTube.py628 except Exception as e:STRING
LOWsrc/classes/Outreach.py60 except Exception as e:CODE
LOWsrc/classes/Outreach.py143 except Exception as e:CODE
LOWsrc/classes/Outreach.py291 except Exception as err:CODE
LOWsrc/classes/Twitter.py107 except Exception:CODE
LOWsrc/classes/Twitter.py128 except Exception:CODE
Deep Nesting10 hits · 10 pts
SeverityFileLineSnippetContext
LOWsrc/config.py343CODE
LOWsrc/cron.py13CODE
LOWsrc/utils.py65CODE
LOWsrc/main.py48CODE
LOWsrc/classes/YouTube.py224CODE
LOWsrc/classes/YouTube.py319CODE
LOWsrc/classes/YouTube.py552CODE
LOWsrc/classes/Outreach.py199CODE
LOWsrc/classes/PostBridge.py259CODE
LOWsrc/classes/Twitter.py143CODE
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHsrc/cache.py44 Gets the cache path for a supported account provider. Args: provider (str): The provider name ("twitteSTRING
HIGHsrc/classes/YouTube.py650 Sets a user-provided topic for the next video instead of generating one. Args: topic (str)STRING
Redundant / Tautological Comments5 hits · 8 pts
SeverityFileLineSnippetContext
LOWscripts/upload_video.sh25# Check if the id is in the listCOMMENT
LOWsrc/classes/Outreach.py31 # Check if go is installedCOMMENT
LOWsrc/classes/Outreach.py56 # Check if go is installedCOMMENT
LOWsrc/classes/Outreach.py206 # Check if go is installedCOMMENT
LOWsrc/classes/Outreach.py257 # Check if the item"s website is validCOMMENT