AI Slop Code Risk Monitor

amruthpillai/reactive-resume

SlopCodeMonitor badge for amruthpillai/reactive-resume Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A one-of-a-kind resume builder that keeps your privacy in mind. Completely secure, customizable, portable, open-source and free forever. Try it out today!

1.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for amruthpillai/reactive-resume, a TypeScript project with 45,116 GitHub stars. SynthScan examined 309,891 lines of code across 1952 source files, recording 188 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 1.0 (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.0
Adjusted Signal
1.0
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
45.1K
Stars
TypeScript
Language
309.9K
Lines of Code
2.0K
Files
188
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.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 2.0/100 · LOW

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

Agent Over-Engineering Ratio 2.5/100 · LOW

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

PR Review Velocity Impact 4.4/100 · LOW

Which changes need focused human review? 188 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 7HIGH 1MEDIUM 11LOW 169

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 188 distinct pattern matches across 9 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 Identifiers128 hits · 128 pts
SeverityFileLineSnippetContext
LOWtooling/custom-styles.test.ts9function extractSemanticCssExamples(source: string): SemanticCssExample[] {CODE
LOWtooling/recovery/compare-resume.ts189function hasDuplicateSerializedResumeMembers(value: unknown): boolean {CODE
LOWtooling/mobile/distribution_test.rb28 def app_store_connect_api_key(**_options)CODE
LOWtests/e2e/specs/builder-save-navigation.spec.ts11async function clickDashboardWithoutNavigationWait(page: Page) {CODE
LOWpackages/forme-native/src/index.ts20export async function renderSerializedDocWithLayout(doc: Record<string, unknown>): Promise<RenderWithLayoutResult> {CODE
LOWpackages/auth/src/config.ts114export function isCustomOAuthProviderEnabled() {CODE
LOWpackages/auth/src/oauth-profile.ts81async function normalizeExistingUserEmail(userId: string, currentEmail: string, normalizedEmail: string) {CODE
LOWpackages/auth/src/oauth-profile.ts143async function findAvailableUsernameSuffix(baseUsername: string, index = 1): Promise<string | null> {CODE
LOWpackages/auth/src/oauth-profile.ts230export function createGithubProfileMapper() {CODE
LOWpackages/resume/src/markdown.ts111export function getVisibleResumeStructure(data: ResumeStructure) {CODE
LOWpackages/resume/src/export-sections.ts14export function isCoverLetterOnlyDocument(data: ResumeData): boolean {CODE
LOWpackages/resume/src/section-sort.ts27function compareEndpointDescending(left: PeriodEndpoint | undefined, right: PeriodEndpoint | undefined): number {CODE
LOWpackages/resume/src/structural-proposals.ts167export function applyResumeStructureChange(data: ResumeData, change: Exclude<ResumeChange, { kind: "text" }>) {CODE
LOWpackages/resume/src/cover-letter.ts15export function createCoverLetterResumeData(CODE
LOWpackages/resume/src/stylesheet/diagnostics.ts107export function isFatalStylesheetDiagnostic({ code }: Pick<SemanticCssDiagnostic, "code">): boolean {CODE
LOWpackages/resume/src/stylesheet/values.ts65function isRegisteredPropertyValue(property: string, value: string): boolean {CODE
LOWpackages/resume/src/stylesheet/values.ts71function isRegisteredShorthandComponent(property: string, value: string): boolean {CODE
LOWpackages/resume/src/stylesheet/values.ts168function unsupportedPropertyMessage(property: string, value: AstNode | string | null | undefined): string {CODE
LOWpackages/resume/src/stylesheet/serialize.ts27export function serializeGeneratedStylesheet(stylesheet: GeneratedStylesheet): string {CODE
LOWpackages/pdf/src/html/document.ts173export function renderUnavailableDocument(options: { lang: string; messages: WebPageMessages }): string {CODE
LOWpackages/pdf/src/forme/images.node.ts8export function configureOwnPictureReader(reader: (key: string) => Promise<Uint8Array>): void {CODE
LOWpackages/pdf/src/semantic/template-manifest.ts171export function getTemplateSemanticManifest(template: Template): TemplateSemanticManifest {CODE
LOWpackages/pdf/src/semantic/template-manifest.ts175export function getTemplateSemanticBindingRegistry(template: Template): SemanticBindingRegistry {CODE
LOWpackages/pdf/src/semantic/context.tsx188export function SemanticItemNodeKeyProvider({ itemId, children }: { itemId: string; children: ReactNode }) {CODE
LOWpackages/pdf/src/semantic/legacy-converter.ts294export function needsLegacyStyleConversion(CODE
LOWpackages/pdf/src/templates/shared/primitives.tsx382export function semanticTemplatePartNodeKey(ownerNodeKey: string | undefined, ...partKeys: string[]) {CODE
LOWpackages/utils/src/url-security.node.ts254export function isAllowedOAuthRedirectUri(input: string, trustedOrigins: string[], options?: OAuthRedirectUriOptions) {CODE
LOWpackages/schema/src/resume/json-schema.ts11export function createResumeDataJsonSchema() {CODE
LOWpackages/schema/src/resume/json-schema.ts21export function createCustomSectionItemJsonSchemas() {CODE
LOWpackages/schema/src/applications/lanes.ts36export function createDefaultApplicationLanes(): ApplicationLane[] {CODE
LOWpackages/schema/src/applications/lanes.ts49export function getActiveApplicationLanes(lanes: readonly ApplicationLane[]): ApplicationLane[] {CODE
LOWpackages/ai/src/resume/sanitize.ts110function coerceValueAgainstTemplate(CODE
LOWpackages/ai/src/resume/sanitize.ts176function normalizeResumeDataForSchema(data: Record<string, unknown>, diagnostics: ResumeSanitizationDiagnostics) {CODE
LOWpackages/ai/src/resume/sanitize.ts235export function sanitizeAndParseResumeJson(resultText: string): ResumeSanitizationResult {CODE
LOWpackages/ai/src/resume/extraction-template.ts92export function buildAiExtractionTemplate() {CODE
LOWpackages/db/src/application-lanes.ts5export function createDefaultOwnedApplicationLanes(userId: string) {CODE
LOWpackages/api/src/context.ts38async function getAuthenticationFromBearerToken(headers: Headers): Promise<RequestAuthentication | null> {CODE
LOWpackages/api/src/context.ts59async function getAuthenticationFromApiKey(apiKey: string): Promise<RequestAuthentication | null> {CODE
LOWpackages/api/src/context.ts78export async function resolveAuthenticationFromRequestHeaders(headers: Headers): Promise<RequestAuthentication | null> {CODE
LOWpackages/api/src/context.ts109export async function resolveUserFromRequestHeaders(headers: Headers): Promise<User | null> {CODE
LOWpackages/api/src/middleware/rate-limit/index.ts82export async function consumeResumePasswordLimit(input: ResumePasswordAttempt): Promise<boolean> {CODE
LOWpackages/api/src/features/web-access/credentials.ts31function assertPersonalKeysAllowed() {CODE
LOWpackages/api/src/features/resume/pdf-download-url.ts68export function createResumePdfDownloadUrl({ resumeId, userId, now = new Date() }: CreateResumePdfDownloadUrlInput) {CODE
LOWpackages/api/src/features/resume/pdf-download-url.ts89export function verifyResumePdfDownloadToken({CODE
LOWpackages/api/src/features/agent/runs.ts48export async function clearActiveAgentRunIfCurrent(CODE
LOWpackages/api/src/features/agent/routing.ts4function isAgentEnvironmentUnavailable(error: unknown) {CODE
LOWpackages/api/src/features/agent/messages-persistence.ts194export function withAccumulatedUsageMetadata(previous: UIMessage, next: UIMessage): UIMessage {CODE
LOWpackages/api/src/features/agent/messages-persistence.ts226export async function insertDraftAssistantMessage(CODE
LOWpackages/api/src/features/agent/streams.ts18export function configureAgentStreamLifetime(callback: (promise: Promise<unknown>) => void) {CODE
LOWpackages/api/src/features/agent/streams.ts45export function createAgentStreamLifecycle(options: AgentStreamLifecycleOptions) {CODE
LOWpackages/api/src/features/agent/service.ts209function withoutAgentAttachmentUiParts(message: UIMessage): UIMessage {CODE
LOWpackages/api/src/features/agent/service.ts306function getFirstUnansweredAskUserQuestionToolCallId(message: UIMessage) {CODE
LOWpackages/api/src/features/agent/service.ts319function answerAskUserQuestionToolCall(message: UIMessage, toolCallId: string, answer: string) {CODE
LOWpackages/api/src/features/agent/service.ts340function buildAttachmentModelParts(input: AttachmentModelInput[]): Array<TextPart | ImagePart | FilePart> {CODE
LOWpackages/api/src/features/agent/service.ts374async function getUnlinkedMessageAttachments({ ids, ...input }: { ids: string[]; threadId: string; userId: string }) {CODE
LOWpackages/api/src/features/agent/service.ts437function readAttachmentModelInputs(attachments: AgentAttachmentRecord[]): Promise<AttachmentModelInput[]> {CODE
LOWpackages/api/src/features/agent/service.ts453function attachModelPartsToLatestUserMessage(CODE
LOWpackages/api/src/features/agent/service.ts510function updateAssistantToolResultMessage(input: {CODE
LOWpackages/api/src/features/agent/service.ts596async function repairLegacyAskUserQuestionAnswers(CODE
LOWpackages/api/src/features/storage/cleanup.ts73export function reportStorageCleanupSummary(summary: StorageCleanupSummary) {CODE
68 more matches not shown…
Hallucination Indicators7 hits · 90 pts
SeverityFileLineSnippetContext
CRITICALpackages/resume/src/ats/rules.ts85 const website = context.data.basics.website.url.trim();CODE
CRITICALpackages/mcp/src/tool-meta.ts269 resumeDto.create.input.extend({ tags: resumeDto.create.input.shape.tags.default([]) }).strict(),CODE
CRITICAL⚡packages/api/src/dto/cover-letter.ts98 name: coverLetterStyleSchema.shape.basics.shape.name.describe("The letter sender's full name."),CODE
CRITICAL⚡packages/api/src/dto/cover-letter.ts99 email: coverLetterStyleSchema.shape.basics.shape.email.describe("The letter sender's email address."),CODE
CRITICAL⚡packages/api/src/dto/cover-letter.ts100 phone: coverLetterStyleSchema.shape.basics.shape.phone.describe("The letter sender's phone number."),CODE
CRITICAL⚡packages/api/src/dto/cover-letter.ts101 location: coverLetterStyleSchema.shape.basics.shape.location.describe("The letter sender's location."),CODE
CRITICALpackages/api/src/features/cover-letters/service.ts338 const sender = coverLetterDto.update.input.shape.sender.unwrap().parse(input.sender);CODE
Fake / Example Data30 hits · 30 pts
SeverityFileLineSnippetContext
LOW…s/reactive-resume/skills/resume-content-guide/SKILL.md242 { "op": "test", "path": "/sections/experience/items/5/company", "value": "Acme Corp" },CODE
LOW…sume/skills/resume-content-guide/references/patches.md69 { "op": "test", "path": "/sections/experience/items/5/company", "value": "Acme Corp" },CODE
LOWpackages/pdf/src/paragraph-indent.integration.test.tsx15 data.basics.name = "Jane Doe";CODE
LOW…ckages/pdf/src/special-characters.integration.test.tsx16 data.basics.name = "Jane Doe";CODE
LOWpackages/pdf/src/forme/phosphor-icons/rest.json1058 "placeholder": "<path d=\"M 208 32 H 48 A 16 16 0 0 0 32 48 V 208 a 16 16 0 0 0 16 16 H 208 a 16 16 0 0 0 16 -16 V 48 ACODE
LOWpackages/mcp/src/prompts.ts74 '| Change name | `{ "op": "replace", "path": "/basics/name", "value": "Jane Doe" }` |',CODE
LOWpackages/schema/src/icons.ts1095 "placeholder",CODE
LOWpackages/api/src/dto/application.test.ts21 contacts: [{ name: "Jane Doe" }],CODE
LOWpackages/api/src/features/resume/social-meta.test.ts44 data.basics.name = "Jane Doe";CODE
LOWpackages/api/src/features/resume/social-meta.test.ts58 expect(card?.data.basics.name).toBe("Jane Doe");CODE
LOWpackages/import/src/plain-text.test.ts247 expect(data.sections.experience.items[0]).toMatchObject({ company: "Acme Corp", period: "Jan 2020 – Present" });CODE
LOW…kages/import/src/reactive-resume-v4-json.broad.test.ts6 name: "Jane Doe",CODE
LOW…kages/import/src/reactive-resume-v4-json.broad.test.ts81 company: "Acme Corp",CODE
LOW…kages/import/src/reactive-resume-v4-json.broad.test.ts213 expect(result.basics.name).toBe("Jane Doe");CODE
LOW…kages/import/src/reactive-resume-v4-json.broad.test.ts260 expect(exp.company).toBe("Acme Corp");CODE
LOWpackages/import/src/json-resume.test.ts20 name: "Jane Doe",CODE
LOWpackages/import/src/json-resume.test.ts31 expect(result.basics.name).toBe("Jane Doe");CODE
LOWpackages/import/src/json-resume.test.ts44 name: "Acme Corp",CODE
LOWpackages/import/src/json-resume.test.ts62 expect(item.company).toBe("Acme Corp");CODE
LOWpackages/import/src/linkedin.test.ts26 expect(result.basics.name).toBe("Jane Doe");CODE
LOWpackages/import/src/reactive-resume-v4-json.test.ts9 name: "Jane Doe",CODE
LOWpackages/email/src/transport.test.ts49 sendEmail({ to: "user@example.com", subject: "Reset password", react: fakeReact }),CODE
LOWpackages/email/src/transport.test.ts52 to: "user@example.com",CODE
LOWpackages/email/src/transport.test.ts63 sendEmail({ to: "user@example.com", subject: "Reset password", react: fakeReact }),CODE
LOWpackages/email/src/transport.test.ts66 to: "user@example.com",CODE
LOWapps/web/src/features/career/coach-thread.tsx320type ComposerProps = Pick<CoachThreadProps, "placeholder" | "chips" | "privacy" | "draftKey" | "variant"> & {CODE
LOWapps/web/src/features/auth/pages/register.tsx153 message: "John Doe",CODE
LOWapps/web/src/features/resume/import/pdf-text.test.ts78 "Acme Corp",CODE
LOWapps/web/src/features/applications/csv.test.ts40 contacts: [{ name: "Jane Doe", role: "", type: "", email: "jane@example.com", phone: "+1 555 0100" }],CODE
LOWapps/mobile/src/features/assistant/chat-view.tsx689type ComposerProps = Pick<ScopedChatViewProps, "chips" | "privacy" | "placeholder" | "scope"> & {CODE
Decorative Section Separators9 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUMpackages/mcp/src/resources.ts11 // ── Resource: resume://{id} ──────────────────────────────────COMMENT
MEDIUMpackages/mcp/src/resources.ts52 // ── Resource: resume://_meta/schema ───────────────────────────COMMENT
MEDIUMpackages/mcp/src/prompts.ts9// ── Shared prompt helpers ────────────────────────────────────────COMMENT
MEDIUMpackages/mcp/src/prompts.ts93// ── Prompt Registration ──────────────────────────────────────────COMMENT
MEDIUMpackages/mcp/src/prompts.ts96 // ── Build Resume ─────────────────────────────────────────────COMMENT
MEDIUMpackages/mcp/src/prompts.ts136 // ── Improve Resume ───────────────────────────────────────────COMMENT
MEDIUMpackages/mcp/src/prompts.ts179 // ── Review Resume ────────────────────────────────────────────COMMENT
MEDIUMpackages/import/src/reactive-resume-v4-json.test.ts275// ─── Bug #2726-B: Skill / Language levels incorrectly clamped to max ──────────COMMENT
MEDIUMpackages/import/src/reactive-resume-v4-json.test.ts275// ─── Bug #2726-B: Skill / Language levels incorrectly clamped to max ──────────COMMENT
Structural Annotation Overuse10 hits · 17 pts
SeverityFileLineSnippetContext
LOW⚡…s/reactive-resume/skills/resume-content-guide/SKILL.md60### Step 1: Classify the requestCOMMENT
LOW⚡…s/reactive-resume/skills/resume-content-guide/SKILL.md67### Step 2: Read firstCOMMENT
LOW⚡…s/reactive-resume/skills/resume-content-guide/SKILL.md76### Step 3: Confirm context in one messageCOMMENT
LOW…s/reactive-resume/skills/resume-content-guide/SKILL.md88### Step 4: Run the checksCOMMENT
LOW…s/reactive-resume/skills/resume-content-guide/SKILL.md107### Step 5: ReportCOMMENT
LOW…s/reactive-resume/skills/resume-content-guide/SKILL.md118### Step 6: Apply with consent, then follow upCOMMENT
LOWplugins/reactive-resume/skills/resume-builder/SKILL.md32### Step 1: Gather Basic InformationCOMMENT
LOWplugins/reactive-resume/skills/resume-builder/SKILL.md43### Step 2: Collect Section ContentCOMMENT
LOWplugins/reactive-resume/skills/resume-builder/SKILL.md57### Step 3: Configure Layout and DesignCOMMENT
LOWplugins/reactive-resume/skills/resume-builder/SKILL.md65### Step 4: Generate Valid JSONCOMMENT
Cross-Language Confusion (JS/TS)1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHtooling/docker-publishing.test.ts202 elif [[ "$CHANGED" == true && "$4" != *:sha-* ]]; thenCODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM…ges/dsh-plugin/docs/plans/2026-08-16-implementation.md134### Task 2: Repo scaffold with a green build and test cycleCOMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMpackages/schema/src/resume/sample.ts461 "<ul><li>Core developer on 'Starbound Odyssey,' a sci-fi roguelike that achieved 500K+ sales on Steam with 'Very PCODE
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippetContext
LOWpackages/dsh-plugin/cordis.patch.yml1# dsh-plugin-reactive-resume bundle patch: one insert over the profile root.COMMENT