RepoTrust

Leaderboard github.com

ShahxHussain/AI-Interviewer-and-Recruitment-Platform

A revolutionary AI-powered interview practice platform that provides realistic, personalized interview experiences for both candidates and recruiters.

  • View repository ↗
  • TypeScript
  • ★ 1
  • commit 424c9efd6256
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

0%

possible

Confidence
44%
Coverage
100%

Estimated share of AI-generated code. Explicit attribution is a lower bound.

Code quality

48/100

poor

Confidence
90%
Coverage
100%

Complexity, duplication, lint density, tests, CI, docs and review process.

Security

59/100

weak

Confidence
85%
Coverage
100%

Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.

AI provenance

0% possible

Weak signals consistent with AI-assisted development. Comments and strings use phrasing typical of LLM-written code (see the coding style evidence).

How the score is built

  • Explicitly attributed share0%
  • Unattributed share in AI-pace bursts21%
  • Estimated AI-generated share0%
  • AI tool configuration files0
  • Work sessions at AI pace2
  • Releases at AI pacenot measured
  • Coding-style index (1.0+ means possible)2.38

Lines added per month all AI-attributed share

  1. 2025-0827,364 · 0% AI
  2. 2025-099,567 · 0% AI

Evidence by analyzer

Explicit AI attributionok
attributed_commit_share
0.0%
attributed_commits
0
attributed_loc
0
attributed_loc_share
0.0%
commits
15
effective_loc
36,931
tools_detected
0
AI tool configurationok
artifacts
0
tools_configured
0
workflow_agents
0
Commit velocityok2 items
excluded_import_loc
27,364
flagged_loc
7,934
flagged_loc_share
82.9%
flagged_units
2
max_loc_per_hour
1,267.50
measured_loc
9,567
median_loc_per_hour
648.17
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
3
Release velocityskipped
Coding styleok8 items
count:assistant_voice
1
count:emoji_in_code
114
count:narrated_steps
1
count:placeholder
11
files:assistant_voice
1
files:emoji_in_code
10
files:narrated_steps
1
files:placeholder
9
index
2.38
lines_scanned
34,401
per_kloc:assistant_voice
0.03
per_kloc:emoji_in_code
3.31
per_kloc:narrated_steps
0.03
per_kloc:placeholder
0.32

Code quality

48 poor

Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 36% of function code in complex or long functions; 14% duplicated lines. Weakest area: testing.

How the score is built

  • Complexity34
  • Duplication44
  • Lint and smells77
  • Tests and CI27
  • Documentation65
  • Type safety100
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
21
function_nloc
24,339
functions
1,499
long_functions
47
many_param_functions
0
mean_ccn
2.64
p90_ccn
6
risky_nloc_share
35.8%
Duplication (jscpd)ok10 items
compared_lines
25,531
duplicated_lines
3,541
duplicated_share
13.9%
files
158
Lintok
category:best-practice
27
category:correctness
20
findings
47
scanned_lines
34,401
weighted_findings
35.75
Tests and CIok
check:ci_present
no
check:ci_runs_lint
no
check:ci_runs_tests
no
check:has_tests
yes
check:test_ratio
no
check:tests_cochange
no
ci_files
0
cochange_commits
6
cochange_share
16.7%
source_lines
34,401
test_lines
70
test_ratio
0.00
Documentationok2 items
  • README.md README.md
  • LICENSE LICENSE
check:changelog
no
check:contributing
no
check:license
yes
check:readme
yes
readme_lines
562
Type safetyok1 item
  • TypeScript strict type checking: ai-interviewer/tsconfig.json ai-interviewer/tsconfig.json
check:low_escape_density
yes
check:strict_config
yes
escapes
48
escapes_per_kloc
1.44

Security

59 weak

Security posture is weak: 124 known vulnerabilities in 24 dependencies. Weakest area: posture.

How the score is built

  • Secrets100
  • Static analysis (SAST)93
  • Vulnerable dependencies3
  • CI workflowsnot measured
  • Security posture0
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
41
declared
41
lookup_errors
0
missing
0
recent
0
Secrets (gitleaks)ok
secrets_current
0
secrets_history
0
secrets_low_confidence
0
secrets_nonprod
0
Static analysis (opengrep)ok
findings
31
findings_high
0
findings_low
5
findings_medium
26
parse_errors
0
scanned_lines
34,401
weighted_findings
6.81
Dependencies (osv-scanner)ok
penalty
210
vulnerabilities
124
vulnerable_packages
24
vulns_critical
7
vulns_high
76
vulns_low
3
vulns_medium
38
vulns_unknown
0
CI workflows (zizmor)skipped
Security postureok
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
no
check:signed_commits
no
signed_commit_share
46.7%
unpinned_manifests
0
Release downloadsok
binary_assets
0
signals
0
suspicious
0

Findings

7 critical76 high96 medium23 low

SeverityRuleLocationMessageTool
critical osv/GHSA-23hp-3jrh-7fpw ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-23hp-3jrh-7fpw Dependencies (osv-scanner)
critical osv/GHSA-2464-fhr4-w9xw ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-2464-fhr4-w9xw Dependencies (osv-scanner)
critical osv/GHSA-2xp9-vwfh-vxw4 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-2xp9-vwfh-vxw4 Dependencies (osv-scanner)
critical osv/GHSA-9qr9-h5gf-34mp ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-9qr9-h5gf-34mp Dependencies (osv-scanner)
critical osv/GHSA-p293-qw3h-jr36 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-p293-qw3h-jr36 Dependencies (osv-scanner)
critical osv/GHSA-pcrw-h46h-c93h ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-pcrw-h46h-c93h Dependencies (osv-scanner)
critical osv/GHSA-rmjr-87wv-gf87 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-rmjr-87wv-gf87 Dependencies (osv-scanner)
high osv/GHSA-23c5-xmqv-rm74 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-23c5-xmqv-rm74 Dependencies (osv-scanner)
high osv/GHSA-23c5-xmqv-rm74 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-23c5-xmqv-rm74 Dependencies (osv-scanner)
high osv/GHSA-25h7-pfq9-p65f ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-25h7-pfq9-p65f Dependencies (osv-scanner)
high osv/GHSA-267c-6grr-h53f ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-267c-6grr-h53f Dependencies (osv-scanner)
high osv/GHSA-26hh-7cqf-hhc6 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-26hh-7cqf-hhc6 Dependencies (osv-scanner)
high osv/GHSA-27p8-2357-5qqv ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-27p8-2357-5qqv Dependencies (osv-scanner)
high osv/GHSA-2883-xcg3-v3hh ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-2883-xcg3-v3hh Dependencies (osv-scanner)
high osv/GHSA-28wg-ghj8-5hjv ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-28wg-ghj8-5hjv Dependencies (osv-scanner)
high osv/GHSA-2v35-w6hq-6mfw ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-2v35-w6hq-6mfw Dependencies (osv-scanner)
high osv/GHSA-2v37-7h3g-55p8 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-2v37-7h3g-55p8 Dependencies (osv-scanner)
high osv/GHSA-34x7-hfp2-rc4v ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-34x7-hfp2-rc4v Dependencies (osv-scanner)
high osv/GHSA-36qx-fr4f-26g5 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-36qx-fr4f-26g5 Dependencies (osv-scanner)
high osv/GHSA-3jxr-9vmj-r5cp ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-3jxr-9vmj-r5cp Dependencies (osv-scanner)
high osv/GHSA-3jxr-9vmj-r5cp ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-3jxr-9vmj-r5cp Dependencies (osv-scanner)
high osv/GHSA-3ppc-4f35-3m26 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-3ppc-4f35-3m26 Dependencies (osv-scanner)
high osv/GHSA-3ppc-4f35-3m26 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-3ppc-4f35-3m26 Dependencies (osv-scanner)
high osv/GHSA-492v-c6pp-mqqv ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-492v-c6pp-mqqv Dependencies (osv-scanner)
high osv/GHSA-4w3w-2rp5-g8jm ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-4w3w-2rp5-g8jm Dependencies (osv-scanner)
high osv/GHSA-52cp-r559-cp3m ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-52cp-r559-cp3m Dependencies (osv-scanner)
high osv/GHSA-5p4m-2wfm-xmqj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-5p4m-2wfm-xmqj Dependencies (osv-scanner)
high osv/GHSA-68fv-2mgg-jv7q ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-68fv-2mgg-jv7q Dependencies (osv-scanner)
high osv/GHSA-6g55-p6wh-862q ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-6g55-p6wh-862q Dependencies (osv-scanner)
high osv/GHSA-6g55-p6wh-862q ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-6g55-p6wh-862q Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-7r86-cg39-jmmj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-7r86-cg39-jmmj Dependencies (osv-scanner)
high osv/GHSA-7r86-cg39-jmmj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-7r86-cg39-jmmj Dependencies (osv-scanner)
high osv/GHSA-8332-j7wj-wjw4 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-8332-j7wj-wjw4 Dependencies (osv-scanner)
high osv/GHSA-8344-3jmq-59r6 ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-8344-3jmq-59r6 Dependencies (osv-scanner)
high osv/GHSA-83g3-92jg-28cx ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-83g3-92jg-28cx Dependencies (osv-scanner)
high osv/GHSA-869p-cjfg-cm3x ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-869p-cjfg-cm3x Dependencies (osv-scanner)
high osv/GHSA-89xv-2m56-2m9x ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-89xv-2m56-2m9x Dependencies (osv-scanner)
high osv/GHSA-8h8q-6873-q5fj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-8h8q-6873-q5fj Dependencies (osv-scanner)
high osv/GHSA-8qq5-rm4j-mr97 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-8qq5-rm4j-mr97 Dependencies (osv-scanner)
high osv/GHSA-8x88-c5mf-7j5w ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-8x88-c5mf-7j5w Dependencies (osv-scanner)
high osv/GHSA-93r5-fhx6-vmg9 ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-93r5-fhx6-vmg9 Dependencies (osv-scanner)
high osv/GHSA-965w-775f-mr7g ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-965w-775f-mr7g Dependencies (osv-scanner)
high osv/GHSA-9ppj-qmqm-q256 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-9ppj-qmqm-q256 Dependencies (osv-scanner)
high osv/GHSA-c2c7-rcm5-vvqj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-c2c7-rcm5-vvqj Dependencies (osv-scanner)
high osv/GHSA-c2c7-rcm5-vvqj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-c2c7-rcm5-vvqj Dependencies (osv-scanner)
high osv/GHSA-c4j6-fc7j-m34r ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-c4j6-fc7j-m34r Dependencies (osv-scanner)
high osv/GHSA-c7q8-3ch8-vqpv ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-c7q8-3ch8-vqpv Dependencies (osv-scanner)
high osv/GHSA-f6ww-3ggp-fr8h ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-f6ww-3ggp-fr8h Dependencies (osv-scanner)
high osv/GHSA-f88m-g3jw-g9cj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-f88m-g3jw-g9cj Dependencies (osv-scanner)
high osv/GHSA-gg4r-jv3p-qx3c ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-gg4r-jv3p-qx3c Dependencies (osv-scanner)
high osv/GHSA-h25m-26qc-wcjf ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-h25m-26qc-wcjf Dependencies (osv-scanner)
high osv/GHSA-hmw2-7cc7-3qxx ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-hmw2-7cc7-3qxx Dependencies (osv-scanner)
high osv/GHSA-j759-j44w-7fr8 ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-j759-j44w-7fr8 Dependencies (osv-scanner)
high osv/GHSA-m99w-x7hq-7vfj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-m99w-x7hq-7vfj Dependencies (osv-scanner)
high osv/GHSA-mg66-mrh9-m8jx ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-mg66-mrh9-m8jx Dependencies (osv-scanner)
high osv/GHSA-mh99-v99m-4gvg ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg Dependencies (osv-scanner)
high osv/GHSA-mh99-v99m-4gvg ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg Dependencies (osv-scanner)
high osv/GHSA-mwv6-3258-q52c ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-mwv6-3258-q52c Dependencies (osv-scanner)
high osv/GHSA-p3m5-59mp-jv5r ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-p3m5-59mp-jv5r Dependencies (osv-scanner)
high osv/GHSA-p9j2-gv94-2wf4 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-p9j2-gv94-2wf4 Dependencies (osv-scanner)
high osv/GHSA-q4gf-8mx6-v5v3 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-q4gf-8mx6-v5v3 Dependencies (osv-scanner)
high osv/GHSA-qffp-2rhf-9h96 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-qffp-2rhf-9h96 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-qpx9-hpmf-5gmw ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-qpx9-hpmf-5gmw Dependencies (osv-scanner)
high osv/GHSA-r28c-9q8g-f849 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-r28c-9q8g-f849 Dependencies (osv-scanner)
high osv/GHSA-r28c-9q8g-f849 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-r28c-9q8g-f849 Dependencies (osv-scanner)
high osv/GHSA-r292-9mhp-454m ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-r292-9mhp-454m Dependencies (osv-scanner)
high osv/GHSA-r683-j2x4-v87g ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-r683-j2x4-v87g Dependencies (osv-scanner)
high osv/GHSA-r6q2-hw4h-h46w ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-r6q2-hw4h-h46w Dependencies (osv-scanner)
high osv/GHSA-rf6f-7fwh-wjgh ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-rf6f-7fwh-wjgh Dependencies (osv-scanner)
high osv/GHSA-rgj7-g3m4-5g8c ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-rgj7-g3m4-5g8c Dependencies (osv-scanner)
high osv/GHSA-rgw5-rvv9-x895 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 Dependencies (osv-scanner)
high osv/GHSA-rgw5-rvv9-x895 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 Dependencies (osv-scanner)
high osv/GHSA-w2rr-34g9-rvrj ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-w2rr-34g9-rvrj Dependencies (osv-scanner)
high osv/GHSA-wh4c-j3r5-mjhp ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-wh4c-j3r5-mjhp Dependencies (osv-scanner)
high osv/GHSA-wpg9-53fq-2r8h ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-wpg9-53fq-2r8h Dependencies (osv-scanner)
high osv/GHSA-wq5f-xc86-pv6w ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-wq5f-xc86-pv6w Dependencies (osv-scanner)
high osv/GHSA-x4fp-j954-r2f4 ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-x4fp-j954-r2f4 Dependencies (osv-scanner)
high osv/GHSA-x6wf-f3px-wcqx ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-x6wf-f3px-wcqx Dependencies (osv-scanner)
high osv/GHSA-xwg4-73v4-xw9w ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-xwg4-73v4-xw9w Dependencies (osv-scanner)
medium opengrep/javascript.lang.best-practice.lazy-load-module ai-interviewer/scripts/cleanup-data.js:36 Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The... Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys ai-interviewer/src/app/api/interview/feedback/route.ts:112 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys ai-interviewer/src/app/api/resume/parse/route.ts:287 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.best-practice.javascript-alert ai-interviewer/src/app/test-job-posting/page.tsx:18 found alert() call; should this be in production code? Lint
medium opengrep/javascript.lang.best-practice.javascript-alert ai-interviewer/src/app/test-metrics/page.tsx:43 found alert() call; should this be in production code? Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys ai-interviewer/src/components/dashboard/DataManagementPanel.tsx:100 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.best-practice.javascript-alert ai-interviewer/src/components/dashboard/DataManagementPanel.tsx:110 found alert() call; should this be in production code? Lint
medium opengrep/javascript.lang.best-practice.javascript-alert ai-interviewer/src/components/dashboard/DataManagementPanel.tsx:143 found alert() call; should this be in production code? Lint
medium opengrep/javascript.lang.best-practice.javascript-alert ai-interviewer/src/components/dashboard/DataManagementPanel.tsx:150 found alert() call; should this be in production code? Lint
medium opengrep/javascript.lang.best-practice.javascript-alert ai-interviewer/src/components/interview/VideoRecorder.tsx:303 found alert() call; should this be in production code? Lint
medium opengrep/javascript.lang.best-practice.javascript-confirm ai-interviewer/src/components/recruiter/JobManagementDashboard.tsx:207 found confirm() call; should this be in production code? Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/Input.tsx:38 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/Select.tsx:40 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/alert.tsx:30 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/alert.tsx:42 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/alert.tsx:54 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/badge.tsx:31 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/button.tsx:46 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/card.tsx:14 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/card.tsx:26 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/card.tsx:41 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/card.tsx:53 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/card.tsx:62 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/card.tsx:73 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/form.tsx:10 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/form.tsx:136 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/form.tsx:37 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/form.tsx:61 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/form.tsx:85 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading ai-interviewer/src/components/ui/progress.tsx:18 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys ai-interviewer/src/hooks/useQuestionGeneration.ts:125 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-stringify-keys ai-interviewer/src/lib/services/question-service.ts:166 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium osv/GHSA-2g4f-4pwh-qvx6 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-2g4f-4pwh-qvx6 Dependencies (osv-scanner)
medium osv/GHSA-3v7f-55p6-f55p ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-3v7f-55p6-f55p Dependencies (osv-scanner)
medium osv/GHSA-3v7f-55p6-f55p ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-3v7f-55p6-f55p Dependencies (osv-scanner)
medium osv/GHSA-3x4c-7xq6-9pq8 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-3x4c-7xq6-9pq8 Dependencies (osv-scanner)
medium osv/GHSA-4342-x723-ch2f ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-4342-x723-ch2f Dependencies (osv-scanner)
medium osv/GHSA-4633-3j49-mh5q ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-4633-3j49-mh5q Dependencies (osv-scanner)
medium osv/GHSA-4c39-4ccg-62r3 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-4c39-4ccg-62r3 Dependencies (osv-scanner)
medium osv/GHSA-4jqv-mc3x-m676 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-4jqv-mc3x-m676 Dependencies (osv-scanner)
medium osv/GHSA-664h-wqgq-64gw ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-664h-wqgq-64gw Dependencies (osv-scanner)
medium osv/GHSA-68g3-v927-f742 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-68g3-v927-f742 Dependencies (osv-scanner)
medium osv/GHSA-6972-9mcm-vhwj ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-6972-9mcm-vhwj Dependencies (osv-scanner)
medium osv/GHSA-6gmq-8vp8-gcm6 ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-6gmq-8vp8-gcm6 Dependencies (osv-scanner)
medium osv/GHSA-6h8r-xr42-gp59 ai-interviewer/package-lock.json @xmldom/[email protected] (npm) is affected by GHSA-6h8r-xr42-gp59 Dependencies (osv-scanner)
medium osv/GHSA-955p-x3mx-jcvp ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-955p-x3mx-jcvp Dependencies (osv-scanner)
medium osv/GHSA-9g9p-9gw9-jx7f ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-9g9p-9gw9-jx7f Dependencies (osv-scanner)
medium osv/GHSA-f886-m6hf-6m8v ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-f886-m6hf-6m8v Dependencies (osv-scanner)
medium osv/GHSA-f886-m6hf-6m8v ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-f886-m6hf-6m8v Dependencies (osv-scanner)
medium osv/GHSA-ffhc-5mcf-pf4q ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-ffhc-5mcf-pf4q Dependencies (osv-scanner)
medium osv/GHSA-fxqj-rqcc-2cmp ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-fxqj-rqcc-2cmp Dependencies (osv-scanner)
medium osv/GHSA-fxqj-rqcc-2cmp ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-fxqj-rqcc-2cmp Dependencies (osv-scanner)
medium osv/GHSA-g3hv-75wg-m249 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-g3hv-75wg-m249 Dependencies (osv-scanner)
medium osv/GHSA-ggv3-7p47-pfv8 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-ggv3-7p47-pfv8 Dependencies (osv-scanner)
medium osv/GHSA-gvwx-54wh-qm9j ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-gvwx-54wh-qm9j Dependencies (osv-scanner)
medium osv/GHSA-gx5p-jg67-6x7h ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-gx5p-jg67-6x7h Dependencies (osv-scanner)
medium osv/GHSA-h64f-5h5j-jqjh ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-h64f-5h5j-jqjh Dependencies (osv-scanner)
medium osv/GHSA-h67p-54hq-rp68 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-h67p-54hq-rp68 Dependencies (osv-scanner)
medium osv/GHSA-mcj8-r9mp-w47p ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-mcj8-r9mp-w47p Dependencies (osv-scanner)
medium osv/GHSA-mh29-5h37-fv8m ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-mh29-5h37-fv8m Dependencies (osv-scanner)
medium osv/GHSA-p498-v437-472g ai-interviewer/package-lock.json @humanfs/[email protected] (npm) is affected by GHSA-p498-v437-472g Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-qx2v-qp2m-jg93 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-qx2v-qp2m-jg93 Dependencies (osv-scanner)
medium osv/GHSA-qx2v-qp2m-jg93 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-qx2v-qp2m-jg93 Dependencies (osv-scanner)
medium osv/GHSA-vmf3-w455-68vh ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-vmf3-w455-68vh Dependencies (osv-scanner)
medium osv/GHSA-w37m-7fhw-fmv9 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-w37m-7fhw-fmv9 Dependencies (osv-scanner)
medium osv/GHSA-w8wr-v893-vjvp ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-w8wr-v893-vjvp Dependencies (osv-scanner)
medium osv/GHSA-wfc6-r584-vfw7 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-wfc6-r584-vfw7 Dependencies (osv-scanner)
medium osv/GHSA-wr5m-5jph-8m96 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-wr5m-5jph-8m96 Dependencies (osv-scanner)
medium opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal ai-interviewer/scripts/download-models.js:53 Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability, where the attacker can access arbitrary files stored in the file system. Instead, be sure to... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/scripts/download-models.js:56 Detected that function argument `filename` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/scripts/download-models.js:64 Detected that function argument `filename` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/scripts/download-models.js:84 Detected that function argument `filename` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp ai-interviewer/src/app/api/jobs/route.ts:36 RegExp() called with a `request` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/picture/route.ts:166 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/picture/route.ts:168 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/picture/route.ts:80 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/picture/route.ts:82 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal ai-interviewer/src/app/api/profile/picture/route.ts:93 Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability, where the attacker can access arbitrary files stored in the file system. Instead, be sure to... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/picture/route.ts:98 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal ai-interviewer/src/app/api/profile/resume/route.ts:77 Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability, where the attacker can access arbitrary files stored in the file system. Instead, be sure to... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/resume/route.ts:82 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/route.ts:156 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/route.ts:157 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/route.ts:171 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/profile/route.ts:172 Detected that function argument `request` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal ai-interviewer/src/app/api/resume/parse/route.ts:104 Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability, where the attacker can access arbitrary files stored in the file system. Instead, be sure to... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/resume/parse/route.ts:106 Detected that function argument `resumeUrl` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/api/resume/parse/route.ts:139 Detected that function argument `filePath` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal ai-interviewer/src/app/uploads/profiles/[filename]/route.ts:28 Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability, where the attacker can access arbitrary files stored in the file system. Instead, be sure to... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/uploads/profiles/[filename]/route.ts:31 Detected that function argument `{ params }: { params: Promise<{ filename: string }> }` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'.... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/uploads/profiles/[filename]/route.ts:54 Detected that function argument `{ params }: { params: Promise<{ filename: string }> }` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'.... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal ai-interviewer/src/app/uploads/resumes/[filename]/route.ts:28 Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability, where the attacker can access arbitrary files stored in the file system. Instead, be sure to... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/uploads/resumes/[filename]/route.ts:31 Detected that function argument `{ params }: { params: Promise<{ filename: string }> }` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'.... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename ai-interviewer/src/app/uploads/resumes/[filename]/route.ts:54 Detected that function argument `{ params }: { params: Promise<{ filename: string }> }` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'.... Static analysis (opengrep)
low opengrep/javascript.lang.correctness.useless-assignment ai-interviewer/scripts/cleanup-data.js:15 `const` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/feedback/route.ts:171 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/feedback/route.ts:171 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/metrics/realtime/route.ts:164 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/metrics/realtime/route.ts:164 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/metrics/realtime/route.ts:32 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/metrics/realtime/route.ts:32 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/metrics/realtime/route.ts:43 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/metrics/realtime/route.ts:43 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/metrics/realtime/route.ts:97 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/interview/metrics/realtime/route.ts:97 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/resume/parse/route.ts:222 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/app/api/resume/parse/route.ts:222 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/lib/services/question-service.ts:217 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator ai-interviewer/src/lib/services/question-service.ts:217 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low osv/GHSA-3g8h-86w9-wvmq ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-3g8h-86w9-wvmq Dependencies (osv-scanner)
low osv/GHSA-vfv6-92ff-j949 ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-vfv6-92ff-j949 Dependencies (osv-scanner)
low osv/GHSA-w7rc-rwvf-8q5r ai-interviewer/package-lock.json [email protected] (npm) is affected by GHSA-w7rc-rwvf-8q5r Dependencies (osv-scanner)
low opengrep/javascript.lang.security.audit.unsafe-formatstring ai-interviewer/src/components/interview/VideoRecorder.tsx:437 Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string.... Static analysis (opengrep)
low opengrep/javascript.lang.security.audit.unsafe-formatstring ai-interviewer/src/lib/services/data-retention-service.ts:281 Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string.... Static analysis (opengrep)
low opengrep/javascript.lang.security.audit.unsafe-formatstring ai-interviewer/src/lib/services/data-retention-service.ts:309 Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string.... Static analysis (opengrep)
low opengrep/javascript.lang.security.audit.unsafe-formatstring ai-interviewer/src/lib/services/data-retention-service.ts:345 Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string.... Static analysis (opengrep)
low opengrep/javascript.lang.security.audit.unsafe-formatstring ai-interviewer/src/lib/services/data-retention-service.ts:59 Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string.... Static analysis (opengrep)

Tools and coverage

Every analyzer that ran on this commit. A failed or skipped tool is a coverage gap: its share of the score is left out and the coverage figure drops.

AnalyzerPillarStatusVersionFindingsNote
AI tool configurationAI provenanceoksignatures-v10
Explicit AI attributionAI provenanceoksignatures-v10
Release velocityAI provenanceskipped—0
Coding styleAI provenanceok—0
Commit velocityAI provenanceokprov-40
Complexity (lizard)Code qualityoklizard 1.25.10
DocumentationCode qualityok—0
Duplication (jscpd)Code qualityokrepotrust-dup-w60
LintCode qualityokopengrep 1.33.1; rules f1d2b562b41447
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityskipped—0
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.1124
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b41431
OpenSSF ScorecardSecurityskipped—0no published OpenSSF Scorecard result for this repo
Secrets (gitleaks)Securityokgitleaks 8.30.10

Score history

Scores from different scoring versions aren't directly comparable.

ScoredCommitScoringAI provenanceQualitySecurity
2026-11-14424c9efd6256prov-5+qual-2+sec-20%4859
2026-11-14424c9efd6256prov-4+qual-2+sec-20%4859

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/ShahxHussain/AI-Interviewer-and-Recruitment-Platform/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/ShahxHussain/AI-Interviewer-and-Recruitment-Platform/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/ShahxHussain/AI-Interviewer-and-Recruitment-Platform/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/ShahxHussain/AI-Interviewer-and-Recruitment-Platform/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/ShahxHussain/AI-Interviewer-and-Recruitment-Platform/security.svg)](https://repotrust.synapticcyber.com/r/github.com/ShahxHussain/AI-Interviewer-and-Recruitment-Platform/)
Full text report

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 0 possible 44% 100%
Code quality 48 poor 90% 100%
Security 59 weak 85% 100%

AI provenance

Weak signals consistent with AI-assisted development. Comments and strings use phrasing typical of LLM-written code (see the coding style evidence).

  • Explicitly attributed share (lower bound): 0.0%

  • Unattributed share in AI-consistent velocity bursts: 21.5%

  • Estimated AI-generated share: 0.0%

  • Stylometry index: 2.38 per 1,000 lines (narrated steps 1, placeholders 11, assistant phrasing 1, emoji 114). Reported as a signal, not scored.

Month Lines added Attributed to AI
2025-08 27,364 0%
2025-09 9,567 0%

Evidence

  • 5,070 lines of first-party code in ~4.0h (1,268 lines/hour, 1 commit session) (6e1d3545249a)
  • 2,864 lines of first-party code in ~4.4h (648 lines/hour, 2 commit session) (424c9efd6256)
  • placeholder or demo-only phrasing: // In a real implementation, we would simulate the cleanup (ai-interview)
  • placeholder or demo-only phrasing: // In-memory storage for demo purposes (ai-interview)
  • placeholder or demo-only phrasing: // Verify user is authenticated (optional - you might want to add user-specific access control) (ai-interview)
  • placeholder or demo-only phrasing: // Verify user is authenticated (optional - you might want to add user-specific access control) (ai-interview)
  • assistant-style phrasing left in code: Key Features: (ai-interview)
  • placeholder or demo-only phrasing: // Store metadata in localStorage for demo purposes (ai-interview)
  • placeholder or demo-only phrasing: // In a real implementation, this would be stored in a separate collection (ai-interview)
  • placeholder or demo-only phrasing: // In a real implementation, this would be retrieved from a separate collection (ai-interview)

AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.

Code quality

Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 36% of function code in complex or long functions; 14% duplicated lines. Weakest area: testing.

Area Score
Complexity (lizard) 34
Duplication 44
Code smells (Opengrep) 77
Tests and CI 27
Documentation 65
Type safety 100
Process (Scorecard review/maintenance) n/a
  • Functions: 1,499; mean complexity 2.6, 90th percentile 6; 21 complex and 47 long functions
  • Duplicated lines: 13.9% of 25,531 compared
  • Tests: 70 test lines for 34,401 source lines (ratio 0.00); CI test commands: none detected; 17% of recent source commits also change tests
  • Docs missing or thin: contributing, changelog

Most complex functions:

Security

Security posture is weak: 124 known vulnerabilities in 24 dependencies. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 93
Vulnerable dependencies (OSV) 3
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a
  • Known vulnerabilities: 124 in 24 packages (critical 7, high 76, medium 38, low 3)

  • Posture checks passed: lockfiles; missing: security policy, dependency updates, signed commits

Top findings

Severity Finding Location
critical osv/GHSA-rmjr-87wv-gf87: [email protected] (npm) is affected by GHSA-rmjr-87wv-gf87 ai-interviewer/package-lock.json
critical osv/GHSA-pcrw-h46h-c93h: [email protected] (npm) is affected by GHSA-pcrw-h46h-c93h ai-interviewer/package-lock.json
critical osv/GHSA-2464-fhr4-w9xw: [email protected] (npm) is affected by GHSA-2464-fhr4-w9xw ai-interviewer/package-lock.json
critical osv/GHSA-2xp9-vwfh-vxw4: [email protected] (npm) is affected by GHSA-2xp9-vwfh-vxw4 ai-interviewer/package-lock.json
critical osv/GHSA-9qr9-h5gf-34mp: [email protected] (npm) is affected by GHSA-9qr9-h5gf-34mp ai-interviewer/package-lock.json
critical osv/GHSA-p293-qw3h-jr36: [email protected] (npm) is affected by GHSA-p293-qw3h-jr36 ai-interviewer/package-lock.json
critical osv/GHSA-23hp-3jrh-7fpw: [email protected] (npm) is affected by GHSA-23hp-3jrh-7fpw ai-interviewer/package-lock.json
high osv/GHSA-27p8-2357-5qqv: @xmldom/[email protected] (npm) is affected by GHSA-27p8-2357-5qqv ai-interviewer/package-lock.json
high osv/GHSA-2v35-w6hq-6mfw: @xmldom/[email protected] (npm) is affected by GHSA-2v35-w6hq-6mfw ai-interviewer/package-lock.json
high osv/GHSA-4w3w-2rp5-g8jm: @xmldom/[email protected] (npm) is affected by GHSA-4w3w-2rp5-g8jm ai-interviewer/package-lock.json
high osv/GHSA-8344-3jmq-59r6: @xmldom/[email protected] (npm) is affected by GHSA-8344-3jmq-59r6 ai-interviewer/package-lock.json
high osv/GHSA-93r5-fhx6-vmg9: @xmldom/[email protected] (npm) is affected by GHSA-93r5-fhx6-vmg9 ai-interviewer/package-lock.json
high osv/GHSA-965w-775f-mr7g: @xmldom/[email protected] (npm) is affected by GHSA-965w-775f-mr7g ai-interviewer/package-lock.json
high osv/GHSA-c7q8-3ch8-vqpv: @xmldom/[email protected] (npm) is affected by GHSA-c7q8-3ch8-vqpv ai-interviewer/package-lock.json
high osv/GHSA-f6ww-3ggp-fr8h: @xmldom/[email protected] (npm) is affected by GHSA-f6ww-3ggp-fr8h ai-interviewer/package-lock.json
high osv/GHSA-j759-j44w-7fr8: @xmldom/[email protected] (npm) is affected by GHSA-j759-j44w-7fr8 ai-interviewer/package-lock.json
high osv/GHSA-w2rr-34g9-rvrj: @xmldom/[email protected] (npm) is affected by GHSA-w2rr-34g9-rvrj ai-interviewer/package-lock.json
high osv/GHSA-wh4c-j3r5-mjhp: @xmldom/[email protected] (npm) is affected by GHSA-wh4c-j3r5-mjhp ai-interviewer/package-lock.json
high osv/GHSA-x4fp-j954-r2f4: @xmldom/[email protected] (npm) is affected by GHSA-x4fp-j954-r2f4 ai-interviewer/package-lock.json
high osv/GHSA-x6wf-f3px-wcqx: @xmldom/[email protected] (npm) is affected by GHSA-x6wf-f3px-wcqx ai-interviewer/package-lock.json
high osv/GHSA-3jxr-9vmj-r5cp: [email protected] (npm) is affected by GHSA-3jxr-9vmj-r5cp ai-interviewer/package-lock.json
high osv/GHSA-6j4f-fj2g-mc7p: [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p ai-interviewer/package-lock.json
high osv/GHSA-mh99-v99m-4gvg: [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg ai-interviewer/package-lock.json
high osv/GHSA-qhr7-859c-m2p7: [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 ai-interviewer/package-lock.json
high osv/GHSA-rgw5-rvv9-x895: [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 ai-interviewer/package-lock.json

Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.

Repository profile

  • Source lines: 34,401; test lines: 70
Language Lines
TypeScript 33,518
JavaScript 953