feat: AI Interview Preparation Agent - Lamatic AgentKit Challenge#167
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughThis PR introduces a complete Lamatic kit for interview preparation. It scaffolds a Next.js app, defines a resume-parser flow with trigger-LLM-response wiring, specifies Gemini 2.5 Flash as the generative model, and provides system/user prompts that enforce a JSON schema with interview strengths, gaps, and structured questions. ChangesAI Interview Preparation Agent Kit
Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
/validate |
|
📡 Running Studio validation — results will appear here shortly. |
|
Hello @harshuldashora Can you work on your PR? There are many files missing. |
|
Thank you for the feedback. I'm currently rebuilding the project in Lamatic Studio and updating the repository structure to align with AgentKit requirements. I'll update the PR with the required files shortly. |
|
Thanks for the feedback. The submission has been updated with:
I believe all requested changes have been addressed. I'd appreciate another review when convenient. |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@submissions/harshul-dashora/flows/resume-parser.ts`:
- Around line 111-112: The outputMapping currently stores
LLMNode_139.output.generatedResponse as a string under interviewPlan, which
violates the expected JSON schema (fields strengths, gaps, questions) declared
in the README/system prompt; update the mapping so the LLMNode_139 output is
interpreted/parsed as JSON and its top-level fields are emitted directly (or
mapped into interviewPlan as an object with strengths, gaps, questions) instead
of a quoted string—locate the outputMapping entry that references
"LLMNode_139.output.generatedResponse" and change it to produce a JSON object
(or parse the generatedResponse) that matches the schema.
In
`@submissions/harshul-dashora/model-configs/resume-parser_llmnode-139_generative-model-name.ts`:
- Around line 10-12: Remove the hardcoded credential metadata values
(credentialId and credential_name) from the committed config and replace usage
with environment-driven values (e.g., read process.env variables such as
GEMINI_CREDENTIAL_ID and GEMINI_CREDENTIAL_NAME where the config is loaded);
ensure provider_name remains generic or is also driven by an env var (e.g.,
GEMINI_PROVIDER_NAME) if environment-specific. Add a .env.example file with
placeholder keys (GEMINI_CREDENTIAL_ID, GEMINI_CREDENTIAL_NAME,
GEMINI_PROVIDER_NAME) and update any initialization/loading code that references
credentialId, credential_name, or provider_name to pull from those env vars
instead of literals. Commit the config with no real identifiers and include
.env.example for guidance.
In `@submissions/harshul-dashora/prompts/resume-parser_llmnode-139_user_1.md`:
- Around line 1-2: The markdown is missing a top-level heading and may have
incorrect EOF newlines; add a single H1 as the first line (for example a short
title above the template) and ensure exactly one trailing newline at EOF; keep
the existing template lines containing {{triggerNode_1.output.jobDescription}}
and {{triggerNode_1.output.resumeText}} unchanged and remove any extra blank
lines so MD041/MD047 are satisfied.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: 95d51abe-986f-4d6c-add4-5c09fcf98609
⛔ Files ignored due to path filters (4)
screenshots/home.pngis excluded by!**/*.pngscreenshots/result.pngis excluded by!**/*.pngscreenshots/skill_gap.pngis excluded by!**/*.pngsubmissions/harshul-dashora/ss/deployed.pngis excluded by!**/*.png
📒 Files selected for processing (9)
submissions/harshul-dashora/.gitignoresubmissions/harshul-dashora/README.mdsubmissions/harshul-dashora/agent.mdsubmissions/harshul-dashora/constitutions/default.mdsubmissions/harshul-dashora/flows/resume-parser.tssubmissions/harshul-dashora/lamatic.config.tssubmissions/harshul-dashora/model-configs/resume-parser_llmnode-139_generative-model-name.tssubmissions/harshul-dashora/prompts/resume-parser_llmnode-139_system_0.mdsubmissions/harshul-dashora/prompts/resume-parser_llmnode-139_user_1.md
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
submissions/harshul-dashora/flows/resume-parser.ts (1)
111-111:⚠️ Potential issue | 🟠 Major | ⚡ Quick winMission critical: keep response fields typed as JSON, not strings.
Your mission, should you choose to accept it: remove quote-wrapping around structured placeholders so
strengths,gaps, andquestionsstay arrays/objects per the system-schema contract.Suggested patch
- "outputMapping": "{\n \"strengths\": \"{{LLMNode_139.output.generatedResponse.strengths}}\",\n \"gaps\": \"{{LLMNode_139.output.generatedResponse.gaps}}\",\n \"questions\": \"{{LLMNode_139.output.generatedResponse.questions}}\"\n}" + "outputMapping": "{\n \"strengths\": {{LLMNode_139.output.generatedResponse.strengths}},\n \"gaps\": {{LLMNode_139.output.generatedResponse.gaps}},\n \"questions\": {{LLMNode_139.output.generatedResponse.questions}}\n}"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@submissions/harshul-dashora/flows/resume-parser.ts` at line 111, The outputMapping currently wraps structured placeholders in quotes so strengths, gaps, and questions become strings; update outputMapping to remove the surrounding quotes so the placeholders reference LLMNode_139.output.generatedResponse.* as raw JSON (e.g., strengths: {{LLMNode_139.output.generatedResponse.strengths}}) ensuring the fields remain arrays/objects per the system-schema contract; locate the outputMapping entry containing "LLMNode_139" and adjust strengths, gaps, and questions accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@submissions/harshul-dashora/prompts/resume-parser_llmnode-139_user_1.md`:
- Around line 1-3: The Markdown file's H1 "# Resume Parser Input" lacks a blank
line after it (MD022); insert a single empty line immediately after the H1 so
the file begins with "# Resume Parser Input" followed by a blank line before
"Job Description: {{triggerNode_1.output.jobDescription}}"; update the top of
the document containing the heading string "# Resume Parser Input" to satisfy
markdownlint spacing rules.
---
Duplicate comments:
In `@submissions/harshul-dashora/flows/resume-parser.ts`:
- Line 111: The outputMapping currently wraps structured placeholders in quotes
so strengths, gaps, and questions become strings; update outputMapping to remove
the surrounding quotes so the placeholders reference
LLMNode_139.output.generatedResponse.* as raw JSON (e.g., strengths:
{{LLMNode_139.output.generatedResponse.strengths}}) ensuring the fields remain
arrays/objects per the system-schema contract; locate the outputMapping entry
containing "LLMNode_139" and adjust strengths, gaps, and questions accordingly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: cbc77632-9fc6-444d-acea-783a110005dd
📒 Files selected for processing (3)
submissions/.env.examplesubmissions/harshul-dashora/flows/resume-parser.tssubmissions/harshul-dashora/prompts/resume-parser_llmnode-139_user_1.md
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
submissions/harshul-dashora/prompts/resume-parser_llmnode-139_user_1.md (1)
4-4:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winMission: close out MD047 by restoring one trailing newline at EOF.
Line 4 currently ends the file without the required final newline; markdownlint will keep failing.
Patch
Candidate Resume: {{triggerNode_1.output.resumeText}} +🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@submissions/harshul-dashora/prompts/resume-parser_llmnode-139_user_1.md` at line 4, The file ends without the required final newline; add a single trailing newline at EOF so the last line "Candidate Resume: {{triggerNode_1.output.resumeText}}" (reference the template variable triggerNode_1.output.resumeText) is terminated by one newline character. Ensure only one newline is added (not multiple) and save the file so markdownlint will pass.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@submissions/harshul-dashora/flows/resume-parser.ts`:
- Line 111: The outputMapping is treating LLMNode_139.output.generatedResponse
as a parsed object (accessing .strengths/.gaps/.questions) but LLMNode_139 is a
dynamic text generator so generatedResponse is plain text; update the mapping to
map the whole generatedResponse into one string field (e.g., map to
generatedResponse.output) and parse/validate that JSON downstream, or replace
LLMNode_139 with a schema-enforcing node (e.g., an InstructorLLMNode configured
with a generatedResponse object schema) so strengths/gaps/questions become real
fields; modify the mapping in resume-parser.ts accordingly and ensure downstream
code expects the single-string field or the new typed fields.
---
Duplicate comments:
In `@submissions/harshul-dashora/prompts/resume-parser_llmnode-139_user_1.md`:
- Line 4: The file ends without the required final newline; add a single
trailing newline at EOF so the last line "Candidate Resume:
{{triggerNode_1.output.resumeText}}" (reference the template variable
triggerNode_1.output.resumeText) is terminated by one newline character. Ensure
only one newline is added (not multiple) and save the file so markdownlint will
pass.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: 7aad757e-37b9-4dc4-a516-54d32d940839
📒 Files selected for processing (2)
submissions/harshul-dashora/flows/resume-parser.tssubmissions/harshul-dashora/prompts/resume-parser_llmnode-139_user_1.md
|
All requested CodeRabbit changes have been addressed and the automated checks are now passing successfully. The agent has been deployed and tested end-to-end. Documentation, screenshots, demo video, and exported AgentKit files have been included in the submission. Looking forward to your review. Thank you! |
|
/validate |
|
📡 Running Studio validation — results will appear here shortly. |
|
Looks good! @harshuldashora File: submissions/harshul-dashora/model-configs/resume-parser_llmnode-139_generative-model-name.ts |
|
Thanks for the feedback. I've removed the credential-related metadata from the model configuration and pushed the update. I really enjoyed working on this challenge and learning AgentKit. Thank you for taking the time to review my submission. |
|
/validate |
|
done ,now it is inside kits/ai-interview-preparation-agent. check again
please and if any changes inform me.
…On Fri, 5 Jun 2026 at 14:00, Akshat Virmani ***@***.***> wrote:
*akshatvirmani* left a comment (Lamatic/AgentKit#167)
<#167 (comment)>
Hey @harshuldashora <https://github.com/harshuldashora> , your kit files
are in submissions/harshul-dashora/ but all contributions must be inside
kits// following the flat structure.
Please move everything to kits/ai-interview-preparation-agent/ (or a
similar kebab-case name) and push the updated files.
Reference for the structure:
https://github.com/Lamatic/AgentKit/blob/main/CONTRIBUTING.md#repository-layout
—
Reply to this email directly, view it on GitHub
<#167?email_source=notifications&email_token=BGKSNINZXAU43SE6LAPMIV346KALNA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINRSHE3DEMZXGQYKM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLDGN5XXIZLSL5RWY2LDNM#issuecomment-4629623740>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BGKSNIONZCOOHASNOTNGD6D46KALNAVCNFSM6AAAAACZSMSUNCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DMMRZGYZDGNZUGA>
.
Triage notifications, keep track of coding agent tasks and review pull
requests on the go with GitHub Mobile for iOS
<https://github.com/notifications/mobile/ios/BGKSNIIT44GNH3UVTRNG2A346KALNA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINRSHE3DEMZXGQYKM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJKTGN5XXIZLSL5UW64Y>
and Android
<https://github.com/notifications/mobile/android/BGKSNIK7DXRETLHK5BVDFO346KALNA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTINRSHE3DEMZXGQYKM4TFMFZW63VHNVSW45DJN5XKKZLWMVXHJLTGN5XXIZLSL5QW4ZDSN5UWI>.
Download it today!
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
|
/validate |
|
📡 Running Studio validation — results will appear here shortly. |
Studio Runtime Validation (Phase 2)✅ Studio validation passed. The kit loaded successfully in Lamatic Studio. This PR is ready for final review and merge. |
|
Hello @harshuldashora thanks for the update. There are still some checks failing |
|
Hi, all the requested changes have been done. The missing files ( |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@kits/ai-interview-preparation-agent/apps/package.json`:
- Around line 11-23: The package.json dependencies use ranged versions for react
and react-dom ("^18") which must be fully pinned; update the "dependencies"
block to replace react and react-dom with exact versions (for example "react":
"18.2.0" and "react-dom": "18.2.0") to comply with the kit pinning rule and
ensure reproducible installs.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: 3e69e8a6-6850-42d9-92e6-4ded208f0285
⛔ Files ignored due to path filters (1)
kits/ai-interview-preparation-agent/ss/deployed.pngis excluded by!**/*.png
📒 Files selected for processing (10)
kits/ai-interview-preparation-agent/.gitignorekits/ai-interview-preparation-agent/README.mdkits/ai-interview-preparation-agent/agent.mdkits/ai-interview-preparation-agent/apps/package.jsonkits/ai-interview-preparation-agent/constitutions/default.mdkits/ai-interview-preparation-agent/flows/resume-parser.tskits/ai-interview-preparation-agent/lamatic.config.tskits/ai-interview-preparation-agent/model-configs/resume-parser_llmnode-139_generative-model-name.tskits/ai-interview-preparation-agent/prompts/resume-parser_llmnode-139_system_0.mdkits/ai-interview-preparation-agent/prompts/resume-parser_llmnode-139_user_1.md
💤 Files with no reviewable changes (7)
- kits/ai-interview-preparation-agent/.gitignore
- kits/ai-interview-preparation-agent/agent.md
- kits/ai-interview-preparation-agent/prompts/resume-parser_llmnode-139_user_1.md
- kits/ai-interview-preparation-agent/model-configs/resume-parser_llmnode-139_generative-model-name.ts
- kits/ai-interview-preparation-agent/README.md
- kits/ai-interview-preparation-agent/constitutions/default.md
- kits/ai-interview-preparation-agent/flows/resume-parser.ts
|
/validate |
|
📡 Running Studio validation — results will appear here shortly. |
|
@harshuldashora judging by your video and PR files, this doesn't look like a kit but more of a template isn't it? You can verify the file structure/type from here as well: https://github.com/Lamatic/AgentKit/blob/main/CONTRIBUTING.md#repository-layout |
|
Hey, quick question before I proceed — would converting this to a |
|
Yes template is fine too for merging. Basically there are 3 options kit,template and bundle. As long as the contribution and files are good we are fine. |
|
Thank you for clarifying! I've updated it to a template. All the required files are in place — please review when you get a chance! |
|
/validate |
|
📡 Running Studio validation — results will appear here shortly. |
Contribution Type
General Requirements
File Structure Validation
Validation
Lamatic Validation
Output Validation
NPM / Local Validation
Problem
Candidates often prepare for interviews using generic questions that do not match their resume or job requirements, resulting in inefficient preparation.
Solution
The AI Interview Preparation Agent analyzes a resume and job description to generate:
Demo
Video Walkthrough:
https://drive.google.com/file/d/1Da8nCZi_T6x1yJvCoDAsLesAXbICV1mh/view?usp=sharing
Screenshots
Included in the submission repository.
Security
Files Added
.lamatic/,node_modules/,.env, and.env.localresume-parserstep, and GitHub/deploy linksFlow Overview
Node Types: 3 nodes
resumeTextandjobDescriptionas inputsinterviewPlanHow It Works:
The flow accepts a resume and job description via API trigger → LLM analyzes the candidate's strengths and skill gaps against the job requirements, generating 3–5 strengths, 3–5 gaps, and exactly 5 personalized interview questions with purposes and ideal answers → structured JSON response is returned via API with the complete interview plan.
Edges: Linear data flow connecting trigger → LLM node → response node, with an additional response edge for acknowledgment.