The #1 AI Harness for Building Resumes, PDFs, Cover Letters & more, locally with 100+ LLMs support.
This report presents the forensic synthetic code analysis of srbhr/Resume-Matcher, a TypeScript project with 27,972 GitHub stars. SynthScan v2.0 examined 92,169 lines of code across 376 source files, recording 959 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 13.2 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 959 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/agent/architecture/prompt-workflow-design.md | 211 | def _check_personal_info_leak(improved: dict[str, Any]) -> list[str]: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 75 | def test_scrub_text_redacts_sk_keys() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 81 | def test_scrub_text_redacts_long_hex_and_jwt() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 87 | def test_scrub_config_redacts_key_fields_keeps_provider() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 438 | def test_check_pdf_bytes_accepts_real_pdf() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 445 | def test_check_pdf_bytes_rejects_empty() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 451 | def test_check_pdf_bytes_rejects_non_pdf() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 554 | def test_score_tailoring_clean_pass() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 769 | def test_diff_clean_when_within_tolerance() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 776 | def test_diff_flags_floor_breach() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 784 | def test_diff_flags_drop_beyond_tolerance_even_above_floor() -> None: | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 791 | def test_summary_to_baseline_roundtrips_shape() -> None: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 284 | def test_bundle_creates_layout(tmp_path: Path) -> None: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 294 | def test_build_manifest_records_provider_and_scrubs_secrets() -> None: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 568 | def test_score_tailoring_flags_fabrication_and_identity_change() -> None: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 662 | def test_build_flow_trace_counts_and_orders() -> None: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 670 | def test_build_summary_rolls_up_scores_and_flow() -> None: | CODE |
| LOW | …superpowers/plans/2026-04-17-dev-issues-754-751-749.md | 701 | def validate_prompt_placeholders(prompt: str) -> list[str]: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 66 | def test_initial_state_defaults_to_intro() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 76 | def test_turn_request_requires_answer_for_answer_action() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 81 | def test_turn_request_skip_needs_no_answer() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 87 | def test_question_rejects_unknown_section() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 92 | def test_finalize_requires_non_empty_name() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 255 | def test_build_initial_state_has_intro_question() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 262 | def test_extract_intro_name_from_conversational_answer() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 268 | def test_merge_unique_skills_dedupes_case_insensitively_and_keeps_order() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 276 | def test_section_prompt_falls_back_for_unknown_section() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 281 | def test_compute_progress_grows_with_questions_and_caps() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 290 | def test_review_warnings_identify_thin_resume() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 201 | def _validate_ready_to_finalize(self) -> "ResumeWizardFinalizeRequest": | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 448 | def build_initial_wizard_state() -> ResumeWizardState: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 511 | def normalize_wizard_resume_data(data: dict[str, Any]) -> dict[str, Any]: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 607 | async def test_ai_turn_merges_only_target_section_and_advances() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 628 | async def test_ai_turn_does_not_let_other_sections_be_clobbered() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 663 | async def test_ai_turn_question_cap_forces_completion() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 678 | async def test_ai_turn_skip_does_not_modify_resume_data() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 700 | async def test_ai_turn_intro_uses_deterministic_name_fallback() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 718 | async def test_ai_turn_missing_next_question_falls_back_to_gap() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 737 | def test_apply_back_restores_previous_snapshot() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 761 | def test_apply_back_noop_without_history() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 768 | def test_apply_review_builds_warnings_without_llm() -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 1031 | async def test_turn_answer_runs_ai_and_returns_next_question(isolated_db) -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 1059 | async def test_turn_review_needs_no_llm(isolated_db) -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 1088 | async def test_finalize_creates_ready_master_resume(isolated_db) -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 1113 | async def test_finalize_rejects_when_master_exists(isolated_db, sample_resume) -> None: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 1442 | export function createInitialResumeWizardState(): ResumeWizardState { | CODE |
| LOW | …powers/plans/2026-04-17-litellm-reasoning-hardening.md | 39 | def _configure_litellm_logging() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 411 | def test_reject_blocked_path_personal_info() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 427 | def test_reject_blocked_path_years() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 442 | def test_reject_blocked_path_company() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 457 | def test_reject_blocked_path_education() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 875 | def test_no_warnings_on_clean_result() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 884 | def test_warns_on_empty_changes() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 889 | def test_warns_on_section_count_mismatch() -> None: | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 896 | def test_warns_on_word_count_explosion() -> None: | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 50 | def test_resume_change_replace_valid() -> None: | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 62 | def test_resume_change_append_valid() -> None: | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 74 | def test_resume_change_reorder_valid() -> None: | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 85 | def test_improve_diff_result_valid() -> None: | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 102 | def test_improve_diff_result_empty_changes() -> None: | CODE |
| 489 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/backend/app/llm.py | 558 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/app/llm.py | 560 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/app/routers/enrichment.py | 411 | # ============================================ | COMMENT |
| MEDIUM⚡ | apps/backend/app/routers/enrichment.py | 413 | # ============================================ | COMMENT |
| MEDIUM | apps/backend/app/schemas/enrichment.py | 74 | # ============================================ | COMMENT |
| MEDIUM | apps/backend/app/schemas/enrichment.py | 76 | # ============================================ | COMMENT |
| MEDIUM | apps/backend/app/prompts/enrichment.py | 128 | # ============================================ | COMMENT |
| MEDIUM | apps/backend/app/prompts/enrichment.py | 130 | # ============================================ | COMMENT |
| MEDIUM | apps/backend/app/services/improver.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/app/services/improver.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/conftest.py | 9 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/conftest.py | 11 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/conftest.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/conftest.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/conftest.py | 131 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/conftest.py | 133 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/conftest.py | 141 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/conftest.py | 143 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/conftest.py | 182 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/conftest.py | 184 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 19 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 21 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 120 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 122 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 189 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 191 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 238 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 240 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 354 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm.py | 356 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/unit/test_llm.py | 646 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/unit/test_llm.py | 648 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 80 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 129 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 131 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 156 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 158 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 177 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/unit/test_llm_providers.py | 179 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/evals/golden/cases.py | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/evals/golden/cases.py | 34 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/evals/golden/cases.py | 214 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/evals/golden/cases.py | 216 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/integration/test_config_api.py | 387 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/integration/test_config_api.py | 389 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/integration/test_llm_contract.py | 61 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | apps/backend/tests/integration/test_llm_contract.py | 63 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/integration/test_llm_contract.py | 113 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/integration/test_llm_contract.py | 115 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/integration/test_llm_contract.py | 195 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/integration/test_llm_contract.py | 197 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/integration/test_llm_contract.py | 258 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | apps/backend/tests/integration/test_llm_contract.py | 260 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/check_locale_parity.py | 21 | CODE | |
| LOW | apps/backend/app/pdf.py | 3 | CODE | |
| LOW | apps/backend/app/main.py | 20 | CODE | |
| LOW | apps/backend/app/routers/enrichment.py | 8 | CODE | |
| LOW | apps/backend/app/routers/resumes.py | 10 | CODE | |
| LOW | apps/backend/app/routers/config.py | 3 | CODE | |
| LOW | apps/backend/app/routers/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/routers/__init__.py | 4 | CODE | |
| LOW | apps/backend/app/routers/__init__.py | 5 | CODE | |
| LOW | apps/backend/app/routers/__init__.py | 6 | CODE | |
| LOW | apps/backend/app/routers/__init__.py | 7 | CODE | |
| LOW | apps/backend/app/routers/__init__.py | 8 | CODE | |
| LOW | apps/backend/app/routers/__init__.py | 9 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| LOW | apps/backend/app/schemas/__init__.py | 3 | CODE | |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/CLAUDE.md | 129 | except Exception as e: | CODE |
| LOW | docs/agent/llm-integration.md | 66 | except Exception as e: | CODE |
| LOW | docs/agent/coding-standards.md | 53 | except Exception as e: | CODE |
| LOW | docs/agent/architecture/backend-architecture.md | 185 | except Exception as e: | CODE |
| LOW | docs/agent/architecture/backend-guide.md | 115 | except Exception as e: | CODE |
| MEDIUM | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 1135 | def _git_sha() -> str: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 210 | except Exception: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 499 | except Exception: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 1138 | except Exception: | CODE |
| LOW | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 1197 | except Exception as exc: # noqa: BLE001 — capture, keep going | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 1199 | except Exception as e: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 1237 | except Exception as e: | CODE |
| LOW | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 1257 | except Exception as e: | CODE |
| LOW | …powers/plans/2026-04-17-litellm-reasoning-hardening.md | 571 | except Exception as e: | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 1241 | except Exception as e: | CODE |
| LOW | apps/backend/CLAUDE.md | 110 | except Exception as e: | CODE |
| LOW | apps/backend/app/llm.py | 472 | except Exception as e: | CODE |
| LOW | apps/backend/app/llm.py | 732 | except Exception as e: | CODE |
| LOW | apps/backend/app/llm.py | 806 | except Exception as e: | CODE |
| LOW | apps/backend/app/llm.py | 838 | except Exception: | CODE |
| LOW | apps/backend/app/llm.py | 907 | except Exception: | CODE |
| LOW | apps/backend/app/llm.py | 1016 | except Exception: | CODE |
| LOW | apps/backend/app/llm.py | 1354 | except Exception: | CODE |
| LOW | apps/backend/app/main.py | 64 | except Exception as e: | CODE |
| LOW | apps/backend/app/main.py | 69 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/enrichment.py | 164 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/enrichment.py | 239 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/enrichment.py | 321 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/enrichment.py | 398 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/enrichment.py | 799 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resume_wizard.py | 61 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resume_wizard.py | 102 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resume_wizard.py | 121 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 97 | except Exception as e: # noqa: BLE001 - tracker is non-critical | CODE |
| LOW | apps/backend/app/routers/resumes.py | 494 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 516 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 658 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 700 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 848 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 892 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 930 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1046 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1071 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1263 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1418 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1521 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1718 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1825 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1896 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/resumes.py | 1961 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/config.py | 106 | except Exception: | CODE |
| LOW | apps/backend/app/routers/health.py | 50 | except Exception: | CODE |
| LOW | apps/backend/app/routers/health.py | 56 | except Exception: | CODE |
| LOW | apps/backend/app/routers/applications.py | 49 | except Exception as e: | CODE |
| LOW⚡ | apps/backend/app/routers/applications.py | 82 | except Exception as e: | CODE |
| LOW⚡ | apps/backend/app/routers/applications.py | 86 | except Exception as cleanup_error: | CODE |
| LOW⚡ | apps/backend/app/routers/applications.py | 94 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/applications.py | 117 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/applications.py | 129 | except Exception as e: | CODE |
| LOW | apps/backend/app/routers/applications.py | 144 | except Exception as e: | CODE |
| 16 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/agent/architecture/prompt-workflow-design.md | 369 | - Changed workExperience[0] company from 'Acme Corp' to 'ACME Corporation'. Never change company names. | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 548 | "personalInfo": {"name": "Jane Doe", "email": "jane@x.dev"}, | CODE |
| LOW⚡ | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 556 | "personalInfo": {"name": "Jane Doe", "email": "jane@x.dev"}, | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 416 | original="Jane Doe", | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 424 | assert result["personalInfo"]["name"] == "Jane Doe" | CODE |
| LOW⚡ | …superpowers/plans/2026-03-23-diff-based-improvement.md | 447 | original="Acme Corp", | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 300 | "personalInfo": {"name": "Jane Doe", "email": "jane@example.com", "title": "Engineer", "phone": "", "location": ""}, | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 306 | "company": "Acme Corp", | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 561 | original="Jane Doe", | CODE |
| LOW | …superpowers/plans/2026-03-23-diff-based-improvement.md | 577 | assert result["personalInfo"]["name"] == "Jane Doe" | CODE |
| LOW | apps/frontend/messages/zh.json | 248 | "placeholder": "示例:添加更多量化指标、强调领导能力、使用更多行动动词...", | CODE |
| LOW | apps/frontend/messages/zh.json | 849 | "placeholder": "启用求职信生成并完成一次简历定制后,求职信内容会显示在这里...", | CODE |
| LOW | apps/frontend/messages/zh.json | 869 | "placeholder": "启用外联消息生成并完成一次简历定制后,外联消息会显示在这里...", | CODE |
| LOW | apps/frontend/messages/ja.json | 248 | "placeholder": "例:より定量的な指標を追加する、リーダーシップを強調する、行動動詞を増やす…", | CODE |
| LOW | apps/frontend/messages/ja.json | 848 | "placeholder": "設定でカバーレター生成を有効にして履歴書をカスタマイズすると、ここに表示されます...", | CODE |
| LOW | apps/frontend/messages/ja.json | 869 | "placeholder": "設定で外連絡メッセージ生成を有効にして履歴書をカスタマイズすると、ここに表示されます...", | CODE |
| LOW | apps/frontend/messages/en.json | 248 | "placeholder": "Example: Add more quantifiable metrics, emphasize leadership skills, use more action verbs...", | CODE |
| LOW | apps/frontend/messages/en.json | 457 | "name": "John Doe", | CODE |
| LOW | apps/frontend/messages/en.json | 849 | "placeholder": "Your cover letter will appear here after tailoring your resume with cover letter generation enable | CODE |
| LOW | apps/frontend/messages/en.json | 869 | "placeholder": "Your cold outreach message will appear here after tailoring your resume with outreach message gene | CODE |
| LOW | apps/frontend/messages/fr.json | 248 | "placeholder": "Exemple : Ajoutez plus de métriques quantifiables, mettez en avant les compétences en leadership | CODE |
| LOW | apps/frontend/messages/fr.json | 849 | "placeholder": "Votre lettre de motivation apparaîtra ici après la personnalisation de votre CV avec la génération | CODE |
| LOW | apps/frontend/messages/fr.json | 869 | "placeholder": "Votre message de prospection à froid apparaîtra ici après la personnalisation de votre CV avec la | CODE |
| LOW | apps/frontend/messages/pt-BR.json | 248 | "placeholder": "Exemplo: Adicione mais métricas quantificáveis, enfatize liderança, use mais verbos de ação...", | CODE |
| LOW | apps/frontend/messages/pt-BR.json | 849 | "placeholder": "Sua carta de apresentação aparecerá aqui após personalizar seu currículo com a geração de carta ha | CODE |
| LOW | apps/frontend/messages/pt-BR.json | 869 | "placeholder": "Sua mensagem de contato frio aparecerá aqui após personalizar seu currículo com a geração de mensa | CODE |
| LOW | apps/frontend/messages/ko.json | 228 | "placeholder": "예: 정량적 지표 추가, 리더십 역량 강조, 더 많은 행동 동사 사용...", | CODE |
| LOW | apps/frontend/messages/ko.json | 849 | "placeholder": "자기소개서 생성을 활성화한 상태로 이력서를 맞춤화하면 여기에 자기소개서가 표시됩니다...", | CODE |
| LOW | apps/frontend/messages/ko.json | 869 | "placeholder": "아웃리치 메시지 생성을 활성화한 상태로 이력서를 맞춤화하면 여기에 콜드 아웃리치 메시지가 표시됩니다...", | CODE |
| LOW | apps/frontend/messages/es.json | 248 | "placeholder": "Ejemplo: Añade más métricas cuantificables, enfatiza habilidades de liderazgo, usa más verbos de | CODE |
| LOW | apps/frontend/messages/es.json | 848 | "placeholder": "Tu carta de presentación aparecerá aquí después de adaptar tu currículum con la generación de cart | CODE |
| LOW | apps/frontend/messages/es.json | 869 | "placeholder": "Tu mensaje de contacto en frío aparecerá aquí después de adaptar tu currículum con la generación d | CODE |
| LOW | apps/frontend/tests/additional-info-newlines.test.tsx | 47 | personalInfo: { name: 'Jane Doe' }, | CODE |
| LOW | apps/backend/app/routers/enrichment.py | 141 | placeholder=q.get("placeholder", ""), | CODE |
| LOW⚡ | apps/backend/app/prompts/enrichment.py | 48 | "placeholder": "e.g., Reduced API response time by 40%, saved $50K annually" | CODE |
| LOW⚡ | apps/backend/app/prompts/enrichment.py | 54 | "placeholder": "e.g., Python, FastAPI, PostgreSQL, Redis, AWS Lambda" | CODE |
| LOW⚡ | apps/backend/app/prompts/enrichment.py | 60 | "placeholder": "e.g., Team of 5, serving 100K users, processing 1M requests/day" | CODE |
| LOW⚡ | apps/backend/app/prompts/enrichment.py | 66 | "placeholder": "e.g., Designed the architecture, led the implementation, mentored 2 junior devs" | CODE |
| LOW | apps/backend/app/prompts/templates.py | 23 | "name": "John Doe", | CODE |
| LOW | apps/backend/app/prompts/templates.py | 192 | "company": "Acme Corp", | CODE |
| LOW⚡ | apps/backend/tests/conftest.py | 18 | "name": "Jane Doe", | CODE |
| LOW | apps/backend/tests/conftest.py | 32 | "company": "Acme Corp", | CODE |
| LOW⚡ | apps/backend/tests/unit/test_apply_diffs.py | 311 | original="Acme Corp", | CODE |
| LOW | apps/backend/tests/unit/test_apply_diffs.py | 282 | ("personalInfo.name", "Jane Doe"), | CODE |
| LOW | apps/backend/tests/unit/test_apply_diffs.py | 458 | original="Jane Doe", | CODE |
| LOW | apps/backend/tests/unit/test_apply_diffs.py | 474 | assert result["personalInfo"]["name"] == "Jane Doe" # Unchanged | CODE |
| LOW | apps/backend/tests/unit/test_database.py | 169 | "company": "Acme Corp", | CODE |
| LOW | apps/backend/tests/unit/test_database.py | 181 | assert fetched["company"] == "Acme Corp" | CODE |
| LOW⚡ | apps/backend/tests/unit/test_e2e_monitor_scores.py | 8 | "personalInfo": {"name": "Jane Doe", "email": "jane@x.dev"}, | CODE |
| LOW⚡ | apps/backend/tests/unit/test_e2e_monitor_scores.py | 16 | "personalInfo": {"name": "Jane Doe", "email": "jane@x.dev"}, | CODE |
| LOW | apps/backend/tests/unit/test_interview_prep_service.py | 11 | "personalInfo": {"name": "Jane Doe"}, | CODE |
| LOW | apps/backend/tests/unit/test_improve_confirm_hash.py | 28 | "personalInfo": {"name": "Jane Doe", "email": "jane@x.dev"}, | CODE |
| LOW⚡ | apps/backend/tests/evals/golden/cases.py | 38 | "name": "Jane Doe", | CODE |
| LOW | apps/backend/tests/evals/golden/cases.py | 55 | "company": "Acme Corp", | CODE |
| LOW | apps/backend/tests/evals/golden/cases.py | 142 | "company": "Acme Corp", | CODE |
| LOW | apps/backend/tests/integration/test_applications_api.py | 48 | return_value={"company": "Acme Corp", "role": "Staff Engineer"}, | CODE |
| LOW | apps/backend/tests/integration/test_applications_api.py | 60 | assert body["company"] == "Acme Corp" | CODE |
| LOW | …s/backend/tests/integration/test_tracker_autocreate.py | 46 | "company": "Acme Corp", | CODE |
| LOW | …s/backend/tests/integration/test_tracker_autocreate.py | 118 | assert card["company"] == "Acme Corp" | CODE |
| LOW | apps/backend/tests/integration/test_pipeline_e2e.py | 111 | assert master["processed_data"]["personalInfo"]["name"] == "Jane Doe" | CODE |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apps/backend/app/llm.py | 639 | CODE | |
| LOW | apps/backend/app/llm.py | 1099 | CODE | |
| LOW | apps/backend/app/llm.py | 1184 | CODE | |
| LOW | apps/backend/app/routers/enrichment.py | 329 | CODE | |
| LOW | apps/backend/app/routers/enrichment.py | 548 | CODE | |
| LOW | apps/backend/app/routers/resumes.py | 234 | CODE | |
| LOW | apps/backend/app/routers/resumes.py | 365 | CODE | |
| LOW | apps/backend/app/routers/resumes.py | 556 | CODE | |
| LOW | apps/backend/app/routers/resumes.py | 1120 | CODE | |
| LOW | apps/backend/app/services/refiner.py | 591 | CODE | |
| LOW | apps/backend/app/services/refiner.py | 688 | CODE | |
| LOW | apps/backend/app/services/resume_wizard.py | 230 | CODE | |
| LOW | apps/backend/app/services/improver.py | 226 | CODE | |
| LOW | apps/backend/app/services/improver.py | 413 | CODE | |
| LOW | apps/backend/app/services/improver.py | 430 | CODE | |
| LOW | apps/backend/app/services/improver.py | 630 | CODE | |
| LOW | apps/backend/app/services/improver.py | 754 | CODE | |
| LOW | apps/backend/app/services/improver.py | 839 | CODE | |
| LOW | apps/backend/app/services/improver.py | 1095 | CODE | |
| LOW | apps/backend/app/services/improver.py | 1146 | CODE | |
| LOW | apps/backend/app/services/ats.py | 33 | CODE | |
| LOW | apps/backend/app/services/ats.py | 37 | CODE | |
| LOW | apps/backend/app/services/parser.py | 40 | CODE | |
| LOW | apps/backend/e2e_monitor/__main__.py | 74 | CODE | |
| LOW | apps/backend/tests/evals/scorers.py | 60 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apps/backend/app/db_engine.py | 18 | __all__ = ["Base", "make_async_engine", "make_sync_engine", "init_models_sync"] | CODE |
| LOW | apps/backend/app/config_cache.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/database.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/database.py | 692 | def set_api_key_ciphertext(self, provider: str, ciphertext: str) -> None: | CODE |
| LOW | apps/backend/app/pdf.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/crypto.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/main.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/routers/enrichment.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/routers/resume_wizard.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/routers/resumes.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/routers/health.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/routers/applications.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/routers/__init__.py | 11 | __all__ = [ | CODE |
| LOW | apps/backend/app/schemas/__init__.py | 75 | __all__ = [ | CODE |
| LOW | apps/backend/app/scripts/migrate_tinydb_to_sqlite.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/prompts/__init__.py | 43 | __all__ = [ | CODE |
| LOW | apps/backend/app/services/refiner.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/services/improver.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/services/__init__.py | 7 | __all__ = [ | CODE |
| LOW | apps/backend/app/services/ats.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | apps/backend/app/services/parser.py | 16 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | SETUP.md | 127 | LLM_API_KEY=sk-your-api-key-here | CODE |
| HIGH | SETUP.es.md | 132 | LLM_API_KEY=sk-your-api-key-here | CODE |
| HIGH | SETUP.zh-CN.md | 132 | LLM_API_KEY=sk-your-api-key-here | CODE |
| HIGH | SETUP.ja.md | 132 | LLM_API_KEY=sk-your-api-key-here | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …superpowers/plans/2026-06-04-resume-wizard-redesign.md | 202 | if not self.state.resume_data.personalInfo.name.strip(): | CODE |
| CRITICAL | apps/backend/app/schemas/resume_wizard.py | 103 | if not self.state.resume_data.personalInfo.name.strip(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | apps/backend/app/prompts/templates.py | 589 | "original": null, | CODE |
| HIGH | apps/backend/app/prompts/templates.py | 596 | "original": null, | CODE |
| HIGH | apps/backend/tests/integration/test_pipeline_e2e.py | 310 | # --- Preview (no persistence; resume_id stays null) --- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …cs/superpowers/plans/2026-06-01-agentic-e2e-monitor.md | 1093 | ## Task 8: CLI + `sweep` orchestration | COMMENT |
| MEDIUM | …wers/specs/2026-03-23-diff-based-improvement-design.md | 70 | ### 2.2 What each hallucination vector looks like after this change | COMMENT |
| MEDIUM | …wers/specs/2026-06-04-resume-wizard-redesign-design.md | 145 | ### Server-side guardrails (don't trust the model blindly) | COMMENT |
| MEDIUM | apps/backend/e2e_monitor/README.md | 1 | # e2e_monitor — agentic end-to-end monitor | COMMENT |
| MEDIUM | apps/backend/e2e_monitor/AGENT_PLAYBOOK.md | 6 | # monitor-e2e — agentic end-to-end monitor | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | apps/backend/app/schemas/enrichment.py | 20 | """A clarifying question generated by AI for an item.""" | STRING |
| HIGH | apps/backend/app/schemas/enrichment.py | 109 | diff_summary: str = "" # AI-generated summary of changes | CODE |
| HIGH | apps/backend/app/prompts/refinement.py | 3 | # AI Phrase Blacklist - Words and phrases that sound AI-generated | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …superpowers/plans/2026-03-23-diff-based-improvement.md | 0 | a single change the llm wants to make to the resume. | STRING |
| HIGH | apps/backend/app/schemas/models.py | 0 | a single change the llm wants to make to the resume. | STRING |
| HIGH | …wers/specs/2026-03-23-diff-based-improvement-design.md | 0 | a single change the llm wants to make to the resume. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apps/backend/app/llm.py | 649 | # Check if API key is configured. Ollama and openai_compatible local | COMMENT |
| LOW | apps/backend/app/llm.py | 1215 | # Check if we can use JSON mode | COMMENT |
| LOW | apps/backend/app/routers/resumes.py | 1784 | # Check if it's a tailored resume (has parent_id) | COMMENT |
| LOW | apps/backend/app/routers/resumes.py | 1855 | # Check if it's a tailored resume (has parent_id) | COMMENT |
| LOW | apps/backend/app/routers/resumes.py | 1991 | # Check if it's a tailored resume (has parent_id) | COMMENT |
| LOW | apps/backend/app/services/refiner.py | 334 | # Check if skill appears anywhere in master resume text | COMMENT |
| LOW | apps/backend/app/services/improver.py | 129 | # Check if the leaf field is blocked | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | SETUP.md | 230 | #### Step 1: Install Ollama | COMMENT |
| LOW⚡ | SETUP.md | 234 | #### Step 2: Pull a model | COMMENT |
| LOW⚡ | SETUP.md | 242 | #### Step 3: Configure your `.env` | COMMENT |
| LOW⚡ | SETUP.md | 251 | #### Step 4: Make sure Ollama is running | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/frontend/hooks/use-file-upload.ts | 366 | // Duplicate check (more robust for multiple additions) | COMMENT |
| MEDIUM | apps/backend/app/routers/health.py | 36 | """Get comprehensive application status. | STRING |
| MEDIUM | apps/backend/tests/unit/test_refiner.py | 38 | # "robust" is in the blacklist, but if it's in JD, it should be protected | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yml | 21 | # LLM Configuration - configure via Settings UI or set env vars for explicit overrides | COMMENT |
| LOW | apps/frontend/app/layout.tsx | 21 | // want to ship a large font to users who never render CJK. Turbopack already | COMMENT |
| LOW | apps/backend/app/llm.py | 141 | # bare-service-root branch depends on it. Two callers disagreeing about | COMMENT |
| LOW | apps/backend/app/llm.py | 521 | # Deliberately no `gpt5_series/` segment. That string is absent from | COMMENT |
| LOW | apps/backend/app/routers/config.py | 141 | `/config/llm-test` and the System Status panel. | COMMENT |
| LOW | apps/backend/app/services/improver.py | 321 | # Pure permutation: map the new order back to original casing. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | apps/backend/app/services/refiner.py | 682 | # Create a cache key from the data | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | apps/backend/app/database.py | 182 | CODE | |
| LOW | apps/backend/app/database.py | 245 | CODE | |
| LOW | apps/backend/app/routers/resumes.py | 1587 | CODE |