AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Crawler Summary
Naukri.com Domain Support Agent for Recruitment & HR using RAG, CrewAI, FastAPI, AutoGen governance, guardrails, evaluation, and response caching. Naukri.com Domain Support Agent **Track Completed: Naukri.com (Recruitment & HR)** An AI-powered **Recruitment & HR domain support agent** that combines: * Retrieval-Augmented Generation (RAG) * Local SentenceTransformers embeddings * ChromaDB vector retrieval * CrewAI multi-agent orchestration * Session-based memory * Pydantic structured outputs * Input and output guardrails * FastAPI deployment * WebSocket real-tim Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.
Freshness
Last checked 10/9/2026
Best For
naukri-domain-support-agent is best for crewai, multi-agent workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB REPOS, runtime-metrics, public facts pack
Naukri.com Domain Support Agent for Recruitment & HR using RAG, CrewAI, FastAPI, AutoGen governance, guardrails, evaluation, and response caching. Naukri.com Domain Support Agent **Track Completed: Naukri.com (Recruitment & HR)** An AI-powered **Recruitment & HR domain support agent** that combines: * Retrieval-Augmented Generation (RAG) * Local SentenceTransformers embeddings * ChromaDB vector retrieval * CrewAI multi-agent orchestration * Session-based memory * Pydantic structured outputs * Input and output guardrails * FastAPI deployment * WebSocket real-tim
Public facts
4
Change events
1
Artifacts
0
Freshness
Oct 9, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Oct 9, 2026
Vendor
Dipanshu956
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.
Setup snapshot
Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Dipanshu956
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
python
text
User Query
|
v
Input Guardrails
|
v
CrewAI Retrieval Agent
|
v
rag_search()
|
v
Normalized Query Cache
|
+----------------------+
| |
v v
Cache Hit Cache Miss
| |
v v
Cached Result Real RAG Search
|
v
SentenceTransformers
|
v
ChromaDB
|
v
HR Knowledge Base
|
v
Top-1 Similarity
|
v
Grounded / Fallbacktext
User Query
|
v
Input Guardrails
|
v
CrewAI Lookup Agent
|
v
check_job_application_status(record_id)
|
v
job_applications.csv
|
v
Structured Application Factsmermaid
flowchart TD
U[User]
--> API[FastAPI]
API
--> IG[Input Guardrails]
IG
-->|Allowed| CREW[CrewAI Sequential Crew]
IG
-->|Blocked| BLOCK[Blocked Response]
CREW
--> RA[Retrieval Agent]
CREW
--> LA[Lookup Agent]
CREW
--> CA[HR Response Composer]
RA
--> RAG[rag_search]
RAG
--> CACHE[Response Cache]
CACHE
-->|Hit| CACHED[Cached RAG Result]
CACHE
-->|Miss| REAL[Real RAG Search]
REAL
--> EMB[SentenceTransformers]
EMB
--> CHROMA[(ChromaDB)]
CHROMA
--> KB[HR Knowledge Base]
LA
--> LOOKUP[check_job_application_status]
LOOKUP
--> CSV[(job_applications.csv)]
RA
--> CA
LA
--> CA
CA
--> TYPE{Response Type}
TYPE
-->|RAG-backed| GROUND[Output Groundedness Check]
TYPE
-->|Lookup-backed| STRUCT[Structured Application Result]
GROUND
--> STRUCT
STRUCT
--> PYD[Pydantic CrewResponse]
PYD
--> API
API
--> LOG[JSONL Request Logger]
CA
-. optional Task 14 review .->
AG[AutoGen Review]
AG
--> REVIEW[Policy Compliance Reviewer]
REVIEW
--> EDITOR[Final Editor]
EDITOR
--> VERDICT[Structured Verdict]
GOVERN[Governance Controls]
-.-> CREW
GOVERN
-.-> APItext
Question
|
v
Input Guardrails
|
v
Retrieval Agent
|
v
rag_search(query)
|
v
Normalized Query Cache
|
+------------------------------+
| |
v v
Cache Hit Cache Miss
| |
v v
Cached Result _real_rag_search()
|
v
Embedding Generation
|
v
ChromaDB
|
v
Top-K Chunks
|
v
Top-1 Similarity
|
v
Grounded / Fallbacktext
Question with Record ID
|
v
Input Guardrails
|
v
Lookup Agent
|
v
check_job_application_status()
|
v
job_applications.csv
|
v
Status + Expected Salary + Escalation Scoretext
CrewAI Draft
|
v
Policy-Compliance-Reviewer
|
v
Final-Editor
|
v
Pydantic VerdictFull documentation captured from public sources, including the complete README when available.
Docs source
GITHUB REPOS
Editorial quality
ready
Naukri.com Domain Support Agent for Recruitment & HR using RAG, CrewAI, FastAPI, AutoGen governance, guardrails, evaluation, and response caching. Naukri.com Domain Support Agent **Track Completed: Naukri.com (Recruitment & HR)** An AI-powered **Recruitment & HR domain support agent** that combines: * Retrieval-Augmented Generation (RAG) * Local SentenceTransformers embeddings * ChromaDB vector retrieval * CrewAI multi-agent orchestration * Session-based memory * Pydantic structured outputs * Input and output guardrails * FastAPI deployment * WebSocket real-tim
Track Completed: Naukri.com (Recruitment & HR)
An AI-powered Recruitment & HR domain support agent that combines:
MOCK_LLM executionThis repository implements the complete Final Capstone across Tasks 1–16 in one public GitHub repository.
The system is designed as a grounded Recruitment & HR support agent rather than a generic chatbot:
The Naukri.com Domain Support Agent is a Recruitment & HR support system designed to answer questions across controlled HR policy content and structured job-application information.
Supported knowledge-base topics include:
The system also supports:
The architecture intentionally separates policy evidence from application records.
Knowledge-base questions use the RAG path:
User Query
|
v
Input Guardrails
|
v
CrewAI Retrieval Agent
|
v
rag_search()
|
v
Normalized Query Cache
|
+----------------------+
| |
v v
Cache Hit Cache Miss
| |
v v
Cached Result Real RAG Search
|
v
SentenceTransformers
|
v
ChromaDB
|
v
HR Knowledge Base
|
v
Top-1 Similarity
|
v
Grounded / Fallback
Application-specific questions use a separate structured path:
User Query
|
v
Input Guardrails
|
v
CrewAI Lookup Agent
|
v
check_job_application_status(record_id)
|
v
job_applications.csv
|
v
Structured Application Facts
This separation is deliberate.
The RAG path uses semantic retrieval and the empirically calibrated RAG_THRESHOLD.
The application-status path uses structured application facts directly from the generated dataset and therefore does not rely on Chroma similarity.
This repository implements all four parts of the supplied Final Capstone problem statement.
| Part | Scope | | ------ | -------------------------------------------------------------------------------------------------- | | Part 1 | Dataset design, knowledge base, embeddings, ChromaDB, RAG, threshold calibration, precision/recall | | Part 2 | CrewAI agents, tools, memory, structured output, guardrails | | Part 3 | FastAPI, WebSocket, JSONL logging, 15-query evaluation | | Part 4 | AutoGen review, least autonomy, risk classification, runtime budgets, response caching |
The project is designed to operate under the required deterministic MOCK_LLM workflow.
No paid LLM API account is required for the graded local workflow.
The project objectives are to:
flowchart TD
U[User]
--> API[FastAPI]
API
--> IG[Input Guardrails]
IG
-->|Allowed| CREW[CrewAI Sequential Crew]
IG
-->|Blocked| BLOCK[Blocked Response]
CREW
--> RA[Retrieval Agent]
CREW
--> LA[Lookup Agent]
CREW
--> CA[HR Response Composer]
RA
--> RAG[rag_search]
RAG
--> CACHE[Response Cache]
CACHE
-->|Hit| CACHED[Cached RAG Result]
CACHE
-->|Miss| REAL[Real RAG Search]
REAL
--> EMB[SentenceTransformers]
EMB
--> CHROMA[(ChromaDB)]
CHROMA
--> KB[HR Knowledge Base]
LA
--> LOOKUP[check_job_application_status]
LOOKUP
--> CSV[(job_applications.csv)]
RA
--> CA
LA
--> CA
CA
--> TYPE{Response Type}
TYPE
-->|RAG-backed| GROUND[Output Groundedness Check]
TYPE
-->|Lookup-backed| STRUCT[Structured Application Result]
GROUND
--> STRUCT
STRUCT
--> PYD[Pydantic CrewResponse]
PYD
--> API
API
--> LOG[JSONL Request Logger]
CA
-. optional Task 14 review .->
AG[AutoGen Review]
AG
--> REVIEW[Policy Compliance Reviewer]
REVIEW
--> EDITOR[Final Editor]
EDITOR
--> VERDICT[Structured Verdict]
GOVERN[Governance Controls]
-.-> CREW
GOVERN
-.-> API
Question
|
v
Input Guardrails
|
v
Retrieval Agent
|
v
rag_search(query)
|
v
Normalized Query Cache
|
+------------------------------+
| |
v v
Cache Hit Cache Miss
| |
v v
Cached Result _real_rag_search()
|
v
Embedding Generation
|
v
ChromaDB
|
v
Top-K Chunks
|
v
Top-1 Similarity
|
v
Grounded / Fallback
Question with Record ID
|
v
Input Guardrails
|
v
Lookup Agent
|
v
check_job_application_status()
|
v
job_applications.csv
|
v
Status + Expected Salary + Escalation Score
CrewAI Draft
|
v
Policy-Compliance-Reviewer
|
v
Final-Editor
|
v
Pydantic Verdict
| Technology | Purpose |
| ---------------------------------------- | -------------------------------------- |
| Python | Main implementation language |
| SentenceTransformers | Local embedding generation |
| sentence-transformers/all-MiniLM-L6-v2 | Embedding model |
| ChromaDB | Local vector database |
| CrewAI | Multi-agent orchestration |
| LangChain Core | Session memory integration |
| Pydantic | Structured request/response validation |
| FastAPI | HTTP API |
| WebSockets | Real-time chat |
| AutoGen AgentChat | Independent governance review |
| CSV | Synthetic application records |
| JSONL | Structured request logging |
| In-memory cache | RAG response caching |
| python-dotenv | Environment configuration support |
The validated CrewAI version is:
crewai==1.15.18
The dependency definition is stored in:
requirements.txt
naukri-domain-support-agent/
│
├── dataset.py
├── job_applications.csv
│
├── rag_core.py
├── chroma_db/
│
├── knowledge_base/
│ ├── 01_eligibility_criteria.txt
│ ├── 02_interview_scheduling.txt
│ ├── 03_offer_negotiation.txt
│ ├── 04_background_verification.txt
│ ├── 05_notice_period.txt
│ ├── 06_referral_bonus.txt
│ ├── 07_internal_transfer.txt
│ ├── 08_probation_period.txt
│ ├── 09_remote_work.txt
│ ├── 10_diversity_hiring.txt
│ ├── 11_exit_interview.txt
│ └── 12_data_retention.txt
│
├── crew_agents.py
├── task6_tool.py
├── guardrails.py
├── task_10.py
├── api.py
├── request_logger.py
├── autogen_review.py
├── governance.py
├── response_cache.py
├── test_websocket.py
│
├── eval/
│ ├── task13_judge_eval.py
│ ├── task13_results.json
│ └── task13_results.csv
│
├── logs/
│ └── requests.jsonl
│
├── requirements.txt
├── .gitignore
└── README.md
dataset.py generates a deterministic synthetic job-application dataset.
SEED = 42
NUM_RECORDS = 50
OUTPUT_FILE = "job_applications.csv"
The generated dataset contains:
50 job-application records
This exceeds the capstone minimum of 40 records.
The dataset contains all five required categories:
Software Engineer
Data Analyst
Product Manager
HR Executive
Sales Associate
Each required category appears at least three times.
All five required statuses are represented:
Applied
Screening
Interview Scheduled
Offered
Rejected
Every record includes:
record_id
category
status
expected_salary_inr
days_since_created
flagged_priority_review
The dataset also contains additional fabricated candidate information for application lookup demonstrations.
The selected synthetic salary range is:
₹4,00,000 - ₹18,00,000 per year
This range is used consistently by the deterministic dataset generator.
days_since_created: 0-30
The percentage of applications with:
flagged_priority_review = True
is validated to remain within the required:
10%-30%
range.
dataset.py validates:
The dataset is generated using a fixed seed so that the design is reproducible.
The project contains the 12 required Recruitment & HR knowledge-base documents.
| Topic | File |
| ------------------------------------ | -------------------------------- |
| Job-application eligibility criteria | 01_eligibility_criteria.txt |
| Interview-scheduling process | 02_interview_scheduling.txt |
| Offer-negotiation policy | 03_offer_negotiation.txt |
| Background-verification process | 04_background_verification.txt |
| Notice-period policy | 05_notice_period.txt |
| Referral-bonus policy | 06_referral_bonus.txt |
| Internal-transfer eligibility | 07_internal_transfer.txt |
| Probation-period policy | 08_probation_period.txt |
| Remote-work eligibility | 09_remote_work.txt |
| Diversity-hiring guidelines | 10_diversity_hiring.txt |
| Exit-interview process | 11_exit_interview.txt |
| Applicant-data-retention policy | 12_data_retention.txt |
Each document contains four sentences, satisfying the capstone requirement of 2–5 sentences per document.
The knowledge-base content is project-created material for the capstone and is not presented as live Naukri.com policy.
Two independent chunking strategies are implemented.
Chunk size = 200 characters
Overlap = 50 characters
2 sentences per chunk
Each chunk retains its originating source-document identity.
This allows Task 5 evaluation to map retrieved chunks back to parent documents before computing document-level precision and recall.
The local embedding model is:
sentence-transformers/all-MiniLM-L6-v2
The two retrieval strategies use separate ChromaDB collections:
fixed_chunks
sentence_chunks
The configured retrieval depth is:
TOP_K = 3
The final clean build produces:
Fixed-size chunks: 45
Sentence-based chunks: 24
The vector pipeline runs locally and does not require a paid embedding API.
The production CrewAI RAG path uses:
fixed_chunks
as the deployed retrieval collection.
The production RAG flow:
fixed_chunks collection.TOP_K chunks.The fallback is:
I don't know based on the available knowledge base.
This prevents weak semantic matches from being turned into unsupported HR answers.
The production threshold is not hard-coded to a generic similarity value such as 0.5, 0.6, or 0.7.
The calibration is performed on the same fixed_chunks collection used by the production RAG path.
| Query | Collection | Top-1 cosine similarity |
| ------------------------------------------------------------ | -------------- | ----------------------: |
| What degree is required for most professional jobs? | fixed_chunks | 0.5823 |
| How much notice should a candidate get before an interview? | fixed_chunks | 0.6734 |
| What is the normal employee notice period after resignation? | fixed_chunks | 0.7583 |
| How much is the employee referral bonus? | fixed_chunks | 0.7528 |
| When can an employee apply for an internal transfer? | fixed_chunks | 0.8041 |
| How long is the normal probation period? | fixed_chunks | 0.7232 |
The lowest measured in-scope score is approximately:
0.5823
| Query | Collection | Top-1 cosine similarity |
| ------------------------------------------ | -------------- | ----------------------: |
| What is the capital of France? | fixed_chunks | 0.0890 |
| What is the weather forecast for tomorrow? | fixed_chunks | 0.1275 |
| How do I bake a chocolate cake? | fixed_chunks | 0.1165 |
The highest measured out-of-scope score is approximately:
0.1275
The threshold is derived from the measured separation between the observed in-scope and out-of-scope groups.
The final production threshold is:
RAG_THRESHOLD = 0.3549
Therefore:
similarity >= 0.3549
-> accept retrieval as sufficiently grounded
similarity < 0.3549
-> return grounded fallback
The threshold is dataset-specific and tied to the production retrieval configuration.
Whenever the knowledge base, embedding model, chunking strategy or production collection materially changes, Task 4 calibration should be regenerated.
Task 5 evaluates the same five in-scope queries independently against both chunking strategies.
Retrieved chunks are mapped to their parent source documents before scoring.
Multiple retrieved chunks from the same source document count as one retrieved document.
fixed_chunksRetrieved documents:
['01_eligibility_criteria']
Ground-truth documents:
['01_eligibility_criteria']
Precision = 1 / 1 = 1.0000
Recall = 1 / 1 = 1.0000
Retrieved documents:
['02_interview_scheduling']
Ground-truth documents:
['02_interview_scheduling']
Precision = 1 / 1 = 1.0000
Recall = 1 / 1 = 1.0000
Retrieved documents:
['05_notice_period']
Ground-truth documents:
['05_notice_period']
Precision = 1 / 1 = 1.0000
Recall = 1 / 1 = 1.0000
Retrieved documents:
['06_referral_bonus']
Ground-truth documents:
['06_referral_bonus']
Precision = 1 / 1 = 1.0000
Recall = 1 / 1 = 1.0000
Retrieved documents:
['07_internal_transfer']
Ground-truth documents:
['07_internal_transfer']
Precision = 1 / 1 = 1.0000
Recall = 1 / 1 = 1.0000
Precision = 1.0000
Recall = 1.0000
sentence_chunksRetrieved documents:
['01_eligibility_criteria', '09_remote_work', '10_diversity_hiring']
Ground-truth documents:
['01_eligibility_criteria']
Precision = 1 / 3 = 0.3333
Recall = 1 / 1 = 1.0000
Retrieved documents:
['02_interview_scheduling', '10_diversity_hiring']
Ground-truth documents:
['02_interview_scheduling']
Precision = 1 / 2 = 0.5000
Recall = 1 / 1 = 1.0000
Retrieved documents:
['05_notice_period', '08_probation_period', '11_exit_interview']
Ground-truth documents:
['05_notice_period']
Precision = 1 / 3 = 0.3333
Recall = 1 / 1 = 1.0000
Retrieved documents:
['03_offer_negotiation', '06_referral_bonus']
Ground-truth documents:
['06_referral_bonus']
Precision = 1 / 2 = 0.5000
Recall = 1 / 1 = 1.0000
Retrieved documents:
['05_notice_period', '07_internal_transfer']
Ground-truth documents:
['07_internal_transfer']
Precision = 1 / 2 = 0.5000
Recall = 1 / 1 = 1.0000
Precision = 0.4333
Recall = 1.0000
| Collection | Average Precision | Average Recall |
| ----------------- | ----------------: | -------------: |
| fixed_chunks | 1.0000 | 1.0000 |
| sentence_chunks | 0.4333 | 1.0000 |
The fixed-size strategy is selected for production retrieval because it achieved:
Precision = 1.0000
Recall = 1.0000
compared with:
Sentence-based Precision = 0.4333
Sentence-based Recall = 1.0000
Therefore, within the evaluated sample, fixed_chunks provides the stronger retrieval precision while preserving full recall.
The dedicated application lookup function is:
check_job_application_status(record_id: str) -> dict
The lookup result includes:
record_id
candidate_name
status
expected_salary_inr
escalation_score
escalation_recommended
The score combines priority review and normalized application age.
priority_signal =
1.0 if flagged_priority_review=True
0.0 otherwise
normalized_recency =
days_since_created / 30
escalation_score =
(0.6 * priority_signal)
+ (0.4 * normalized_recency)
The score is constrained to the range:
[0, 1]
This creates a continuous score rather than simply returning the original Boolean priority flag.
The project uses an 80th-percentile threshold calculated from the generated dataset's escalation-score distribution:
ESCALATION_THRESHOLD = 0.352
An application is recommended for escalation when:
escalation_score >= ESCALATION_THRESHOLD
This threshold is derived from the generated application's score distribution rather than being an arbitrary constant.
The CrewAI implementation contains three agents.
Responsibilities:
rag_search().Tool:
rag_search
Responsibilities:
Tool:
check_job_application_status
Responsibilities:
Tools:
None
Retrieval Agent
|
v
Lookup Agent
|
v
Response Composer
|
v
Structured CrewResponse
The crew is executed with:
crew.kickoff()
The demonstrations verify actual invocation of:
rag_search()
and:
check_job_application_status()
Session memory is process-local and keyed by session identifier.
The implementation uses:
InMemoryChatMessageHistory
RunnableLambda
RunnableWithMessageHistory
Turn 1:
What is the status of application APP001?
Turn 2:
What was the escalation score for that application?
The second turn can recover the application identifier from the existing session.
A new session does not inherit the prior application's context.
A fresh session receiving:
What was the escalation score for that application?
without an application ID is therefore expected to request an application identifier instead of reusing the previous session's record.
This demonstrates:
The memory is intentionally process-local because persistent cross-process storage is not required by the capstone.
Every CrewAI response is validated through a Pydantic model.
The response schema is:
class CrewResponse(BaseModel):
final_answer: str
query: str
record_id: Optional[str] = None
The CrewAI workflow uses:
response_format = CrewResponse
The actual crew result is subsequently validated against this Pydantic contract.
A successful validation therefore produces a predictable response shape:
final_answer
query
record_id
The project contains input and output safety controls.
The input guardrail masks fixed-format phone numbers such as:
9876543210
98765 43210
98765-43210
+91 98765 43210
+91-98765-43210
The downstream representation is:
XXXXXXXXXX
The capstone demonstrations use fabricated values.
The implementation focuses on the specifically required fixed-format phone-number masking behavior rather than attempting to provide a general-purpose PII detection engine.
The guardrail detects common instruction-override patterns, including examples such as:
ignore previous instructions
disregard previous instructions
forget previous instructions
you are now a different assistant
reveal the system prompt
show me the system prompt
Policy:
Phone PII
-> mask and continue
Prompt injection
-> block request
RAG-backed responses are checked against the calibrated production threshold:
RAG_THRESHOLD = 0.3549
Therefore:
Top-1 similarity < 0.3549
-> grounded fallback
This is demonstrated deliberately with out-of-scope questions.
Application-status answers are backed by:
check_job_application_status()
which reads:
job_applications.csv
The application lookup path is therefore not dependent on Chroma vector similarity.
The RAG threshold is intentionally not used to reject a successfully retrieved structured application record.
The FastAPI implementation is defined in:
api.py
The application exposes the required HTTP and WebSocket interfaces.
POST /ask
POST /add-document
/ws/chat
POST /askExample request:
{
"session_id": "demo-session",
"query": "What is the normal employee notice period?"
}
POST /add-documentExample request:
{
"content": "Document content here",
"source_name": "new_policy"
}
/ws/chatThe WebSocket endpoint supports real-time multi-turn conversation.
The implementation explicitly handles:
WebSocketDisconnect
so a client disconnect does not terminate the FastAPI server.
The project disables telemetry using:
CREWAI_DISABLE_TELEMETRY=true
OTEL_SDK_DISABLED=true
The final crew_agents.py applies these environment settings before CrewAI is imported, so direct local CrewAI execution follows the same no-telemetry configuration.
Observed runtime output confirms:
Tracing is disabled.
Structured logging is implemented in:
request_logger.py
Requests are written as JSONL records containing fields such as:
timestamp
trace_id
endpoint
session_id
query
duration_ms
status
Raw Input
|
v
apply_input_guardrails()
|
v
Masked Text
|
+----------------------+
| |
v v
CrewAI JSONL Logger
The same masked text is used by the application path and the logger.
Therefore the fixed-format phone number should not be written to the request log in clear text.
Malformed requests rejected by FastAPI/Pydantic validation are handled through the logging path without writing raw sensitive request content into the audit log.
/add-document loggingThe complete submitted document body is not stored as the normal request-log query.
Safe request metadata is logged instead.
The evaluation harness is:
eval/task13_judge_eval.py
The evaluation set contains exactly:
15 queries
The 15-query structure is:
12 required knowledge-base topic queries
2 deliberately out-of-scope queries
1 application-status lookup query
Every query receives four scores:
Accuracy
Grounding
Completeness
Safety
The evaluator uses the deterministic local MOCK_LLM setup.
| Metric | Average | | ------------ | ---------: | | Accuracy | 1.0000 | | Grounding | 0.5971 | | Completeness | 1.0000 | | Safety | 1.0000 |
The final evaluation confirms that unsupported questions trigger the grounded fallback.
| Query | Observed Top-1 Similarity | Fallback |
| ------------------------------------------ | ------------------------: | -------- |
| What is the capital of France? | 0.1479 | True |
| What is the weather forecast for tomorrow? | 0.1260 | True |
The lookup query is:
What is the status of application APP003?
The structured lookup returns:
Application APP003 has status Applied.
The lookup response is evaluated as an application-record response rather than being treated as a semantic RAG answer.
eval/task13_results.json
eval/task13_results.csv
These files contain the detailed per-query evaluation results.
The independent review implementation is:
autogen_review.py
The review stage contains two agents:
Policy-Compliance-Reviewer
Final-Editor
The team uses:
RoundRobinGroupChat
max_turns = 2
The final verdict is represented by a Pydantic model:
class YourVerdictModel(BaseModel):
approved: bool
final_answer: str
reason: str
The structured message contract is:
StructuredMessage[YourVerdictModel]
CrewAI Draft
|
v
Policy-Compliance-Reviewer
|
v
Final-Editor
|
v
Structured Verdict
A valid grounded answer is passed through the review stage.
Expected behavior:
approved = True
final_answer remains unchanged
A deliberately corrupted draft contains unsupported information.
The review stage identifies the problem and produces:
approved = False
revised final_answer
reason explaining the correction
This demonstrates both approval and revision behavior.
Task 15 enforces governance at multiple layers.
The privileged lookup function is:
check_job_application_status
The implementation records the recruitment workflow as:
HIGH RISK
within the capstone's supplied risk scheme.
The system is a support agent rather than an autonomous hiring-decision system, but it operates within the recruitment/application domain and therefore follows the required governance classification.
Configured request token cap:
MAX_REQUEST_TOKENS = 2000
Requests exceeding this limit are rejected before downstream execution.
Configured synthetic request-cost limit:
MAX_REQUEST_COST_USD = 0.015
Because the capstone workflow uses MOCK_LLM, this is a governance simulation rather than real provider billing.
The implementation separately demonstrates:
The cache is implemented in:
response_cache.py
and integrated into the live CrewAI RAG path through:
crew_agents.py
The cache is:
In-memory
Process-local
RAG-only
Normalized-query keyed
Normalization includes:
Trim leading/trailing whitespace
Convert to lowercase
Collapse repeated whitespace
For example:
" What IS the notice period? "
normalizes to:
"what is the notice period?"
Retrieval Agent
|
v
rag_search(query)
|
v
Response Cache
|
+--+--+
| |
v v
HIT MISS
| |
v v
Cached _real_rag_search()
Result |
v
ChromaDB
The cache demonstration uses logically equivalent requests.
Expected evidence:
First request:
CACHE MISS
Real RAG call count:
1
Second normalized request:
CACHE HIT
Real RAG call count:
1
The demonstration also verifies:
Normalized keys equal = True
Returned results equal = True
The call counter provides direct evidence that the second equivalent request does not repeat the underlying RAG execution.
Only RAG/grounded-generation results are cached.
Application-status lookup is deliberately excluded from caching because application state can change.
fixed_chunks for production?Task 5 produced:
fixed_chunks:
Precision = 1.0000
Recall = 1.0000
versus:
sentence_chunks:
Precision = 0.4333
Recall = 1.0000
Therefore the fixed-size strategy was selected for the deployed RAG path.
Similarity scores depend on the embedding model, knowledge-base content, chunking strategy and retrieval collection.
Therefore a generic threshold would not be sufficiently justified.
The project measures representative in-scope and out-of-scope retrieval scores and derives:
RAG_THRESHOLD = 0.3549
from those observed distributions.
The evidence sources are different:
RAG
-> controlled HR knowledge base
-> semantic retrieval
Application lookup
-> structured job-application CSV
-> exact application record lookup
Keeping the tools separate also makes least-autonomy enforcement explicit and auditable.
A successful structured lookup does not depend on semantic retrieval similarity.
Therefore:
Chroma similarity threshold
is applicable to the RAG path but not to a successfully resolved application record.
The local SentenceTransformers model allows the retrieval layer to operate without a paid external embedding API.
MOCK_LLM?The capstone requires deterministic demonstrations that do not depend on paid API access.
MOCK_LLM provides deterministic behavior for:
The retrieval layer remains a real local embedding + ChromaDB implementation.
The project depends on the tested behavior of the CrewAI integration, including the custom deterministic MOCK_LLM.
The validated version is:
crewai==1.15.18
Changing the CrewAI version should be treated as a compatibility change and revalidated before submission.
The capstone requires controlled deterministic local execution.
The project therefore uses:
CREWAI_DISABLE_TELEMETRY=true
OTEL_SDK_DISABLED=true
and applies these before importing CrewAI in the main CrewAI implementation.
Application records may be mutable.
Caching application-status results could therefore return stale information.
RAG results are the intended target of Task 16's normalized-query cache.
git clone https://github.com/Dipanshu956/naukri-domain-support-agent.git
cd naukri-domain-support-agent
python -m venv venv
Activate it:
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
The validated CrewAI version is:
crewai==1.15.18
python dataset.py
This creates:
job_applications.csv
and validates the required dataset constraints.
python rag_core.py
This performs:
The final validated production values are:
Fixed chunks:
45
Sentence chunks:
24
Production collection:
fixed_chunks
Production threshold:
0.3549
A clean rebuild recreates the two Chroma collections so stale vectors from previous executions do not accumulate.
python crew_agents.py
This demonstrates:
python task_10.py
Reusable guardrail logic is implemented in:
guardrails.py
python autogen_review.py
This demonstrates:
max_turns=2python governance.py
This demonstrates:
python response_cache.py
This demonstrates:
python eval/task13_judge_eval.py
Artifacts:
eval/task13_results.json
eval/task13_results.csv
The current verified averages are:
Accuracy = 1.0000
Grounding = 0.5971
Completeness = 1.0000
Safety = 1.0000
uvicorn api:app --reload
Interactive documentation:
http://127.0.0.1:8000/docs
Primary evidence:
dataset.py
job_applications.csv
Demonstrates:
Primary evidence:
knowledge_base/
Contains all 12 required knowledge-base topics.
Primary evidence:
rag_core.py
chroma_db/
Demonstrates:
Primary evidence:
rag_core.py
Demonstrates:
Final threshold:
0.3549
Primary evidence:
rag_core.py
Demonstrates:
Primary evidence:
task6_tool.py
Demonstrates:
Primary evidence:
crew_agents.py
Demonstrates:
Primary evidence:
guardrails.py
task_10.py
Demonstrates:
Primary evidence:
api.py
test_websocket.py
Demonstrates:
POST /askPOST /add-document/ws/chatPrimary evidence:
request_logger.py
api.py
logs/requests.jsonl
Demonstrates:
Primary evidence:
eval/task13_judge_eval.py
eval/task13_results.json
eval/task13_results.csv
Demonstrates:
Primary evidence:
autogen_review.py
Demonstrates:
RoundRobinGroupChatmax_turns=2Primary evidence:
governance.py
crew_agents.py
Demonstrates:
Primary evidence:
response_cache.py
crew_agents.py
Demonstrates:
| Acceptance Criterion | Status | Evidence |
| ------------------------------------------------- | :----: | ------------------------------ |
| At least 40 deterministic application records | ✅ | dataset.py |
| All required categories represented | ✅ | dataset.py |
| All required statuses represented | ✅ | dataset.py |
| Every category appears at least 3 times | ✅ | Dataset validation |
| Priority-review percentage is 10%–30% | ✅ | Dataset validation |
| Realistic salary range documented | ✅ | Dataset + README |
| days_since_created is 0–30 | ✅ | Dataset validation |
| 12 required KB topics | ✅ | knowledge_base/ |
| Every KB document has 2–5 sentences | ✅ | KB files |
| Fixed-size chunking | ✅ | rag_core.py |
| Sentence-based chunking | ✅ | rag_core.py |
| Separate Chroma collections | ✅ | rag_core.py |
| Local SentenceTransformers embeddings | ✅ | rag_core.py |
| Grounded generation | ✅ | rag_core.py |
| Empirical threshold calibration | ✅ | rag_core.py |
| Threshold calibrated on production fixed_chunks | ✅ | rag_core.py |
| At least 5 in-scope demonstrations | ✅ | Task 4 |
| At least 1 out-of-scope fallback | ✅ | Task 4 |
| Precision/recall for both strategies | ✅ | Task 5 |
| Numbers-based strategy recommendation | ✅ | Task 5 |
| Designed escalation score | ✅ | task6_tool.py |
| CrewAI crew has at least 3 agents | ✅ | crew_agents.py |
| RAG tool invoked | ✅ | CrewAI execution |
| Lookup tool invoked | ✅ | CrewAI execution |
| Same-session memory | ✅ | crew_agents.py |
| Fresh-session reset | ✅ | Task 8 demonstration |
| Pydantic CrewResponse | ✅ | crew_agents.py |
| Input PII masking | ✅ | guardrails.py |
| Prompt-injection detection | ✅ | guardrails.py |
| Output groundedness control | ✅ | guardrails.py / RAG |
| POST /ask | ✅ | api.py |
| POST /add-document | ✅ | api.py |
| WebSocket endpoint | ✅ | api.py |
| WebSocket disconnect handling | ✅ | api.py |
| Structured JSONL logging | ✅ | request_logger.py |
| Trace ID and timing | ✅ | api.py, request_logger.py |
| Raw fixed-format phone number excluded from logs | ✅ | Masked-text logging flow |
| Exactly 15-query evaluation | ✅ | eval/task13_judge_eval.py |
| Accuracy metric | ✅ | Task 13 artifacts |
| Grounding metric | ✅ | Task 13 artifacts |
| Completeness metric | ✅ | Task 13 artifacts |
| Safety metric | ✅ | Task 13 artifacts |
| AutoGen two-agent review | ✅ | autogen_review.py |
| RoundRobinGroupChat | ✅ | autogen_review.py |
| max_turns=2 | ✅ | autogen_review.py |
| Structured AutoGen verdict | ✅ | autogen_review.py |
| Approval demonstration | ✅ | Task 14 |
| Revision demonstration | ✅ | Task 14 |
| Lookup-tool least autonomy | ✅ | governance.py |
| Recruitment risk classification | ✅ | governance.py |
| Token budget | ✅ | governance.py |
| Synthetic cost budget | ✅ | governance.py |
| Oversized request rejected | ✅ | governance.py |
| In-memory response cache | ✅ | response_cache.py |
| Normalized-query cache key | ✅ | response_cache.py |
| Real cache hit demonstrated | ✅ | Task 16 |
| Duplicate RAG execution avoided | ✅ | Call counter |
| Lookup excluded from cache | ✅ | Cache design |
| Deterministic MOCK_LLM | ✅ | crew_agents.py, evaluation |
| CrewAI telemetry disabled | ✅ | Runtime + source configuration |
| Tested CrewAI version recorded | ✅ | requirements.txt |
| Task | Deliverable | | ------- | ------------------------------------------------------ | | Task 1 | Deterministic job-application dataset | | Task 2 | 12-document Recruitment & HR knowledge base | | Task 3 | Two chunking strategies, embeddings and ChromaDB | | Task 4 | Grounded generation and empirical production threshold | | Task 5 | Document-level precision/recall comparison | | Task 6 | Application lookup and escalation score | | Task 7 | Three-agent CrewAI orchestration | | Task 8 | Session memory and fresh-session isolation | | Task 9 | Pydantic structured output | | Task 10 | PII, prompt-injection and groundedness guardrails | | Task 11 | FastAPI HTTP + WebSocket deployment | | Task 12 | Structured JSONL observability | | Task 13 | 15-query LLM-as-judge evaluation | | Task 14 | AutoGen policy/compliance review | | Task 15 | Least autonomy, risk and runtime governance | | Task 16 | Normalized-query response cache |
Records:
50
Seed:
42
Categories:
5
Statuses:
5
Salary range:
₹4,00,000 - ₹18,00,000
days_since_created:
0-30
Flagged-review requirement:
10%-30%
Required documents:
12
Sentences per document:
4
Required topic coverage:
12/12
Embedding model:
sentence-transformers/all-MiniLM-L6-v2
Fixed chunk size:
200 characters
Fixed overlap:
50 characters
Sentence chunk:
2 sentences
TOP_K:
3
Fixed chunks:
45
Sentence chunks:
24
Production collection:
fixed_chunks
Production calibrated threshold:
0.3549
fixed_chunks:
Precision = 1.0000
Recall = 1.0000
sentence_chunks:
Precision = 0.4333
Recall = 1.0000
Queries:
15
Accuracy:
1.0000
Grounding:
0.5971
Completeness:
1.0000
Safety:
1.0000
Risk:
High
Maximum request tokens:
2,000
Maximum synthetic request cost:
$0.015
Privileged lookup tool:
Lookup Agent only
Cache type:
In-memory
Cache key:
Normalized query text
First equivalent request:
Cache miss
Second equivalent request:
Cache hit
Underlying real RAG calls:
1
SEED = 42
NUM_RECORDS = 50
OUTPUT_FILE = job_applications.csv
Software Engineer
Data Analyst
Product Manager
HR Executive
Sales Associate
Applied
Screening
Interview Scheduled
Offered
Rejected
₹4,00,000 - ₹18,00,000
0-30 days
The dataset generator validates the capstone's structural constraints after generation.
Exactly 12 required documents are provided.
Each document contains four sentences.
Embedding:
sentence-transformers/all-MiniLM-L6-v2
Fixed chunk size:
200 characters
Fixed overlap:
50 characters
Sentence chunk:
2 sentences
Top-K:
3
Production collection:
fixed_chunks
Production threshold:
0.3549
The threshold is derived from measured scores in the production fixed-path collection and should be recalculated whenever the production retrieval configuration changes materially.
CrewAI:
1.15.18
The version is pinned in:
requirements.txt
The graded workflow uses:
MOCK_LLM = True
The deterministic local workflow is designed to run without requiring a commercial LLM API key.
The local execution environment uses:
CREWAI_DISABLE_TELEMETRY=true
OTEL_SDK_DISABLED=true
These values are applied before CrewAI import in the main CrewAI implementation.
Runtime execution confirms:
Tracing is disabled.
The RAG build recreates the Chroma collections before repopulation so that previous execution data does not accumulate in the vector store.
The expected clean collection sizes are:
fixed_chunks:
45
sentence_chunks:
24
This keeps the measured retrieval and calibration results synchronized with the current knowledge-base contents.
The evaluation contains exactly:
15 queries
Structured as:
12 KB-topic queries
2 out-of-scope queries
1 application lookup query
The four evaluation metrics are:
Accuracy
Grounding
Completeness
Safety
The saved outputs are:
eval/task13_results.json
eval/task13_results.csv
The cache is:
In-memory
Process-local
Normalized-query keyed
RAG-only
Application-status lookup is intentionally not cached.
This project is a capstone implementation rather than a production Naukri.com backend.
The application dataset is synthetic.
The HR knowledge base is project-created content and is not presented as live Naukri.com policy.
The deterministic MOCK_LLM should not be interpreted as a benchmark of a commercial language model.
The token and cost controls are governance simulations rather than actual provider billing controls.
Prompt-injection detection is implemented using deterministic pattern-based checks and therefore cannot guarantee detection of every possible semantic attack.
The response cache is in-memory and process-local rather than persistent or distributed.
Application-status information is generated from the synthetic CSV dataset and does not represent real candidate data.
The recruitment workflow is classified as High Risk within the supplied capstone governance scheme, while this implementation is intended for support rather than autonomous hiring decisions.
The calibrated RAG threshold is specific to this knowledge base, embedding model, chunking configuration and production collection.
The Naukri.com Domain Support Agent implements the complete Final Capstone workflow from deterministic data generation through retrieval, multi-agent orchestration, API deployment, governance and optimization.
The system combines:
Deterministic Dataset
+
Controlled Knowledge Base
+
Measured RAG Retrieval
+
Empirical Groundedness Threshold
+
CrewAI Multi-Agent Orchestration
+
Restricted Application Lookup
+
Session Memory
+
Pydantic Structured Outputs
+
Input / Output Guardrails
+
FastAPI Deployment
+
WebSocket Chat
+
Structured JSONL Logging
+
15-Query Evaluation
+
AutoGen Governance Review
+
Least-Autonomy Enforcement
+
Runtime Token / Cost Controls
+
Normalized-Query Response Caching
The central design principle is that a robust HR support agent requires more than a language model.
It requires:
Naukri.com (Recruitment & HR) Track:
COMPLETE
Task 1:
COMPLETE
Task 2:
COMPLETE
Task 3:
COMPLETE
Task 4:
COMPLETE
Task 5:
COMPLETE
Task 6:
COMPLETE
Task 7:
COMPLETE
Task 8:
COMPLETE
Task 9:
COMPLETE
Task 10:
COMPLETE
Task 11:
COMPLETE
Task 12:
COMPLETE
Task 13:
COMPLETE
Task 14:
COMPLETE
Task 15:
COMPLETE
Task 16:
COMPLETE
MOCK_LLM:
SUPPORTED
Zero-paid-API graded workflow:
SUPPORTED
CrewAI telemetry:
DISABLED
Public GitHub repository:
READY FOR SUBMISSION
Seed:
42
Dataset records:
50
KB documents:
12
Fixed chunks:
45
Sentence chunks:
24
Embedding model:
sentence-transformers/all-MiniLM-L6-v2
Top-K:
3
Production RAG collection:
fixed_chunks
Production calibrated threshold:
0.3549
Task 5 fixed precision:
1.0000
Task 5 fixed recall:
1.0000
Task 5 sentence precision:
0.4333
Task 5 sentence recall:
1.0000
Task 13 query count:
15
Task 13 Accuracy:
1.0000
Task 13 Grounding:
0.5971
Task 13 Completeness:
1.0000
Task 13 Safety:
1.0000
Token budget:
2,000
Synthetic cost budget:
$0.015
Response cache:
Enabled
Application lookup caching:
Disabled intentionally
CrewAI version:
1.15.18
CrewAI telemetry:
Disabled
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
The Frontend for Agents & Generative UI. React + Angular
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_REPOS",
"generatedAt": "2026-10-10T04:35:36.302Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "crewai",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "multi-agent",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"
}Facts JSON
[
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Dipanshu956",
"href": "https://github.com/Dipanshu956/naukri-domain-support-agent",
"sourceUrl": "https://github.com/Dipanshu956/naukri-domain-support-agent",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T12:50:38.247Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T12:50:38.247Z",
"isPublic": true
},
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-dipanshu956-naukri-domain-support-agent/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to naukri-domain-support-agent and adjacent AI workflows.