AI Slop Code Risk Monitor

krayin/laravel-crm

SlopCodeMonitor badge for krayin/laravel-crm Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Krayin CRM is Free & Open Source CRM Built with Laravel for Customer, Lead, and Sales Management.

1.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for krayin/laravel-crm, a PHP project with 24,082 GitHub stars. SynthScan examined 160,832 lines of code across 1155 source files, recording 122 pattern matches distributed across 4 syntactic categories. The legacy adjusted pattern signal is 1.2 (Low 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.

1.2
Adjusted Signal
1.2
Raw Pattern Score
100%
Time Factor
2026-10-21
Last Push
24.1K
Stars
PHP
Language
160.8K
Lines of Code
1.2K
Files
122
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 2.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 3.8/100 · LOW

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

Agent Over-Engineering Ratio 1.9/100 · LOW

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

PR Review Velocity Impact 5.1/100 · LOW

Which changes need focused human review? 122 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 5HIGH 0MEDIUM 0LOW 117

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 122 distinct pattern matches across 4 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.

Hallucination Indicators5 hits · 70 pts
SeverityFileLineSnippetContext
CRITICAL⚡…/Resources/views/dashboard/index/total-leads.blade.php81 return this.report.statistics.all.over_time.map(({ label }) => label);CODE
CRITICAL⚡…/Resources/views/dashboard/index/total-leads.blade.php86 data: this.report.statistics.all.over_time.map(({ count }) => count),CODE
CRITICAL⚡…/Resources/views/dashboard/index/total-leads.blade.php90 data: this.report.statistics.won.over_time.map(({ count }) => count),CODE
CRITICAL⚡…/Resources/views/dashboard/index/total-leads.blade.php94 data: this.report.statistics.lost.over_time.map(({ count }) => count),CODE
CRITICAL…ces/views/components/datagrid/toolbar/filter.blade.php1042 applied.filters.columns = this.savedFilters.params.filters.columns.filter((column) => this.hasAnyValCODE
Hyper-Verbose Identifiers62 hits · 64 pts
SeverityFileLineSnippetContext
LOWtests/Pest.php103function actingAsSanctumAuthenticatedAdmin()CODE
LOW…ts/Feature/Security/InboundEmailAuthenticationTest.php23 public function processMessagesFromAllFolders() {}CODE
LOWtests/Feature/Security/InstallerLockdownTest.php49 public function markInstallationCompleted(): voidCODE
LOWtests/Feature/Leads/LeadPartialUpdateTest.php9function makeLeadWithExpectedCloseDate(): LeadCODE
LOWtests/Feature/Notifications/NotificationScopeTest.php17function makeNotificationScopeUser(string $scope, string $permissionType, array $permissions = [], int $status = 1): UseCODE
LOWtests/Feature/Notifications/NotificationDriverTest.php12function configureNotificationReverb(bool $complete = true, string $broadcast = 'reverb'): voidCODE
LOWpackages/Webkul/DataGrid/src/DataGrid.php393 protected function processRequestedPagination($requestedPagination): LengthAwarePaginatorCODE
LOW…s/Webkul/Contact/src/Repositories/PersonRepository.php144 public function fetchOrCreateOrganizationByName(string $organizationName)CODE
LOW…s/Webkul/Contact/src/Repositories/PersonRepository.php159 private function sanitizeRequestedPersonData(array $data): arrayCODE
LOWpackages/Webkul/Core/src/SystemConfig.php63 public function prepareConfigurationItems()CODE
LOWpackages/Webkul/Core/src/SystemConfig.php116 public function getActiveConfigurationItem(): ?ItemCODE
LOWpackages/Webkul/Core/src/Traits/PDFHandler.php54 protected function adjustArabicAndPersianContent(string $html)CODE
LOW…kul/Attribute/src/Repositories/AttributeRepository.php213 public function getRestrictedWebFormAttributeIds()CODE
LOWpackages/Webkul/Admin/tests/e2e-pw/utils/form.ts93function generateRandomStringWithSpaces(length) {CODE
LOWpackages/Webkul/Admin/tests/e2e-pw/utils/form.ts108function generateRandomProductName() {CODE
LOWpackages/Webkul/Admin/tests/e2e-pw/utils/form.ts122function generateRandomHtmlContent() {CODE
LOWpackages/Webkul/Admin/tests/e2e-pw/utils/form.ts150async function fillParagraphWithRandomHtml(multi) {CODE
LOWpackages/Webkul/Admin/tests/e2e-pw/utils/form.ts167function generateRandomDateTimeRange() {CODE
LOWpackages/Webkul/Admin/tests/e2e-pw/utils/faker.ts239export function generateRandomNumericString(length: number = 10, min?: number | null, max?: number | null): string {CODE
LOW⚡…ges/Webkul/Admin/src/Traits/ProvideDropdownOptions.php31 public function isBooleanDropdownChoiceExists($choice): boolCODE
LOW⚡…ges/Webkul/Admin/src/Traits/ProvideDropdownOptions.php41 public function getBooleanDropdownOptions($choice = 'active_inactive'): arrayCODE
LOW⚡…ges/Webkul/Admin/src/Traits/ProvideDropdownOptions.php51 public function getActiveInactiveDropdownOptions(): arrayCODE
LOW…ges/Webkul/Admin/src/Traits/ProvideDropdownOptions.php157 public function getOrganizationDropdownOptions(): arrayCODE
LOW…ges/Webkul/Admin/src/Traits/ProvideDropdownOptions.php204 public function getActivityTypeDropdownOptions(): arrayCODE
LOW…ges/Webkul/Admin/src/Traits/ProvideDropdownOptions.php234 public function getAttributeTypeDropdownOptions(): arrayCODE
LOW…ges/Webkul/Admin/src/Traits/ProvideDropdownOptions.php261 public function getWarehouseDropdownOptions(): arrayCODE
LOW…kages/Webkul/Admin/src/Http/Controllers/Controller.php31 protected function preventUnauthorizedAccess($ownerIds)CODE
LOW…Admin/src/Http/Controllers/Settings/UserController.php424 protected function preventUnauthorizedRoleAssignment(?int $roleId): voidCODE
LOW…Admin/src/Http/Controllers/Settings/UserController.php460 protected function preventUnauthorizedScopeAssignment(?string $scope, ?string $currentScope = null): voidCODE
LOW…Admin/src/Http/Controllers/Settings/UserController.php512 protected function preventManagingHigherPrivilegedUser($targetUser): voidCODE
LOW…l/Admin/src/Http/Controllers/Quote/QuoteController.php287 private function syncShippingAddressWithBilling(AttributeForm $request): voidCODE
LOW…ul/Admin/src/Http/Controllers/Mail/EmailController.php81 protected function preventUnauthorizedMailAccess($email): voidCODE
LOW…ul/Admin/src/Http/Controllers/Lead/QuoteController.php178 private function adjustArabicAndPersianContent(string $html): stringCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Product.php27 public function getTopSellingProductsByRevenue($limit = null): CollectionCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Product.php68 public function getTopSellingProductsByQuantity($limit = null): CollectionCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Lead.php100 public function getTotalLostLeadsOverTime($period = 'auto'): arrayCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Lead.php165 public function getAverageLeadsPerDayProgress(): arrayCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Lead.php194 public function getTotalLeadValueProgress(): arrayCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Lead.php222 public function getAverageLeadValueProgress(): arrayCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Lead.php250 public function getTotalWonLeadValueProgress(): arrayCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Lead.php279 public function getTotalLostLeadValueProgress(): arrayCODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Lead.php308 public function getTotalWonLeadValueBySources()CODE
LOWpackages/Webkul/Admin/src/Helpers/Reporting/Lead.php326 public function getTotalWonLeadValueByTypes()CODE
LOW…es/Webkul/Admin/src/Helpers/Reporting/Organization.php25 public function getTotalOrganizationsProgress(): arrayCODE
LOW…es/Webkul/Admin/src/Helpers/Reporting/Organization.php53 public function getTopOrganizationsByRevenue($limit = null): CollectionCODE
LOW…ckages/Webkul/User/src/Repositories/UserRepository.php35 public function getCurrentUserGroupsUserIds()CODE
LOW…/Webkul/Product/src/Repositories/ProductRepository.php160 public function getInventoriesGroupedByWarehouse($id)CODE
LOWpackages/Webkul/DataTransfer/src/Helpers/Error.php170 public function getAllErrorsGroupedByCode(): arrayCODE
LOWpackages/Webkul/Automation/src/Helpers/Entity.php89 public function getEmailTemplatePlaceholders()CODE
LOW…ebkul/Automation/src/Helpers/Entity/AbstractEntity.php81 public function getEmailTemplatePlaceholders(array $entity): arrayCODE
LOW…ages/Webkul/Automation/src/Helpers/Entity/Activity.php115 public function getEmailTemplatePlaceholders(array $entity): arrayCODE
LOW…kages/Webkul/Installer/src/Helpers/DatabaseManager.php45 public function markInstallationCompleted(): voidCODE
LOW…kages/Webkul/Installer/src/Helpers/DatabaseManager.php80 public function markInstallationInProgress(): voidCODE
LOW…kages/Webkul/Installer/src/Helpers/DatabaseManager.php88 public function clearInstallationInProgress(): voidCODE
LOW…rc/InboundEmailProcessor/WebklexImapEmailProcessor.php52 public function processMessagesFromAllFolders()CODE
LOW…rc/InboundEmailProcessor/WebklexImapEmailProcessor.php175 protected function processMessagesFromLeafFolders($rootFoldersCollection = null): voidCODE
LOW…l/src/InboundEmailProcessor/SendgridEmailProcessor.php28 public function processMessagesFromAllFolders()CODE
LOW…oundEmailProcessor/Contracts/InboundEmailProcessor.php12 public function processMessagesFromAllFolders();CODE
LOWpackages/Webkul/Email/src/Helpers/Parser.php577 public function extractMultipartMIMEAttachments()CODE
LOW…/Webkul/WebForm/src/Repositories/WebFormRepository.php97 protected function filterRestrictedAttributes(array $attributes)CODE
2 more matches not shown…
Fake / Example Data54 hits · 56 pts
SeverityFileLineSnippetContext
LOWtests/Pest.php90 'email' => 'admin@example.com',CODE
LOW⚡tests/Feature/Contact/PersonContactNumberTest.php35 ['value' => '555-1234', 'label' => 'home'],CODE
LOW⚡tests/Feature/Contact/PersonContactNumberTest.php40 expect($data['contact_numbers'][0]['value'])->toBe('555-1234');CODE
LOW⚡tests/Feature/Contact/PersonContactNumberTest.php47 ['value' => '555-0001', 'label' => 'work'],CODE
LOW⚡tests/Feature/Contact/PersonContactNumberTest.php48 ['value' => '555-0002', 'label' => 'home'],CODE
LOW…dmin/tests/e2e-pw/tests/security/auth-security.spec.ts66 const response = await submitLogin(page, "admin@example.com", "admin123");CODE
LOW…ests/e2e-pw/tests/security/web-form-submission.spec.ts331 "persons[emails][0][value]": "admin@example.com",CODE
LOWpackages/Webkul/Admin/tests/e2e-pw/utils/acl.ts19export const ADMIN_EMAIL = "admin@example.com";CODE
LOWpackages/Webkul/Admin/src/Resources/lang/vi/app.php144 'placeholder' => 'Nhập để tìm kiếm người tham gia',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/vi/app.php328 'placeholder' => 'Nhập để tìm thẻ',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/pt_BR/app.php144 'placeholder' => 'Digite para pesquisar participantes',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/pt_BR/app.php328 'placeholder' => 'Digite para procurar tags',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/ja/app.php144 'placeholder' => '入力して参加者を検索',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/ja/app.php328 'placeholder' => '入力してタグを検索',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/zh_CN/app.php144 'placeholder' => '输入以搜索参与者',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/zh_CN/app.php328 'placeholder' => '输入以搜索标签',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/ar/app.php144 'placeholder' => 'اكتب للبحث عن المشاركين',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/ar/app.php328 'placeholder' => 'اكتب للبحث عن الوسوم',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/ko/app.php144 'placeholder' => '참가자를 검색하려면 입력하세요',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/ko/app.php328 'placeholder' => '태그를 검색하려면 입력하세요',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/es/app.php144 'placeholder' => 'Escribe para buscar participantes',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/es/app.php328 'placeholder' => 'Escribe para buscar etiquetas',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/en/app.php144 'placeholder' => 'Type to search participants',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/en/app.php328 'placeholder' => 'Type to search tags',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/fa/app.php144 'placeholder' => 'برای جستجوی شرکت‌کنندگان تایپ کنید',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/fa/app.php328 'placeholder' => 'برای جستجوی برچسب‌ها تایپ کنید',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/tr/app.php144 'placeholder' => 'Type to search participants',CODE
LOWpackages/Webkul/Admin/src/Resources/lang/tr/app.php328 'placeholder' => 'Etiketleri aramak için yazın',CODE
LOW…esources/views/settings/email-templates/edit.blade.php92 name="placeholder"CODE
LOW…esources/views/settings/email-templates/edit.blade.php93 id="placeholder"CODE
LOW…ources/views/settings/email-templates/create.blade.php90 name="placeholder"CODE
LOW…ources/views/settings/email-templates/create.blade.php91 id="placeholder"CODE
LOW…/src/Resources/views/settings/web-forms/edit.blade.php131 ::placeholder="placeholder"CODE
LOW…rc/Resources/views/settings/web-forms/create.blade.php100 ::placeholder="placeholder"CODE
LOW…/components/form/control-group/controls/tags.blade.php52 :placeholder="placeholder"CODE
LOW…ents/form/control-group/controls/inline/date.blade.php76 ::placeholder="placeholder"CODE
LOW…ents/form/control-group/controls/inline/text.blade.php80 ::placeholder="placeholder"CODE
LOW…s/form/control-group/controls/inline/boolean.blade.php64 ::placeholder="placeholder"CODE
LOW…/form/control-group/controls/inline/datetime.blade.php76 ::placeholder="placeholder"CODE
LOW…ts/form/control-group/controls/inline/lookup.blade.php82 ::placeholder="placeholder"CODE
LOW…ts/form/control-group/controls/inline/select.blade.php78 ::placeholder="placeholder"CODE
LOW…kul/Installer/src/Database/Seeders/User/UserSeeder.php24 'email' => 'admin@example.com',CODE
LOW…ages/Webkul/Installer/src/Resources/lang/pt_BR/app.php136 'email-address' => 'admin@example.com',CODE
LOWpackages/Webkul/Installer/src/Resources/lang/ja/app.php136 'email-address' => 'admin@example.com',CODE
LOW…ages/Webkul/Installer/src/Resources/lang/zh_CN/app.php136 'email-address' => 'admin@example.com',CODE
LOWpackages/Webkul/Installer/src/Resources/lang/ar/app.php136 'email-address' => 'admin@example.com',CODE
LOWpackages/Webkul/Installer/src/Resources/lang/ko/app.php136 'email-address' => 'admin@example.com',CODE
LOWpackages/Webkul/Installer/src/Resources/lang/es/app.php136 'email-address' => 'admin@example.com',CODE
LOWpackages/Webkul/Installer/src/Resources/lang/en/app.php136 'email-address' => 'admin@example.com',CODE
LOWpackages/Webkul/Installer/src/Resources/lang/fa/app.php136 'email-address' => 'admin@example.com',CODE
LOW…nstaller/src/Resources/views/installer/index.blade.php929 value="admin@example.com"CODE
LOW…es/Webkul/Installer/src/Console/Commands/Installer.php341 default: 'admin@example.com',CODE
LOW…2021_12_14_214923_create_web_form_attributes_table.php19 $table->string('placeholder')->nullable();CODE
LOWpackages/Webkul/WebForm/src/Models/WebFormAttribute.php25 'placeholder',CODE
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippetContext
LOWresources/js/bootstrap.js21// window.Pusher = Pusher;COMMENT