Contributing to Yojaka AI (Agentic Profile Matching Engine)¶
Thank you for your interest in contributing to Yojaka AI (Agentic Profile Matching Engine)! We welcome contributions that improve agent capabilities, enhance test coverage, optimize RAG retrieval performance, harden security, or refine developer tooling.
๐ Getting Started¶
Prerequisites¶
- Python: 3.10+ (tested on Python 3.11, 3.12, and 3.14)
- Package Manager: Standard
pip(oruvfor high-performance dependency management) - Git: For version control and submitting Pull Requests
- API Keys: At least one supported LLM inference provider:
- Groq (
GROQ_API_KEY) - Google Gemini (
GEMINI_API_KEY) - Sarvam AI (
SARVAM_API_KEY) - OpenAI (
OPENAI_API_KEY)
- Groq (
- Live Search Key (Optional): Tavily AI (
TAVILY_API_KEY) for real-time external web searching and candidate portfolio verification.
๐ ๏ธ Local Environment Setup¶
-
Clone the Repository
-
Create and Activate a Virtual Environment
-
Install Package in Editable Mode with Dev Dependencies
-
Configure Environment Secrets Copy the example environment configuration:
Add your active API credentials to.env:
๐งช Running Tests & Quality Gates¶
Before submitting any code changes, ensure all unit tests pass and code quality checks pass.
-
Run Full Test Suite
-
Run Linter & Formatter Integrity We enforce code formatting via Ruff:
-
Run Static Type Checking (CI Gate)
-
Install Local Pre-Commit Hooks (Recommended)
๐ Running the Pipeline & Web Application Locally¶
Verify full end-to-end functionality locally:
# 1. Generate local mock candidate dataset (34 profiles)
python -m agentic_profile_matching.generate_dataset
# 2. Ingest candidate resumes into ChromaDB & BM25 index
python -m agentic_profile_matching.resume_rag
# 3. Launch interactive Streamlit GUI with live node checkpoints & in-memory resume upload
streamlit run src/agentic_profile_matching/app.py
# 4. Run automated test scenarios suite
python -m agentic_profile_matching.run_scenarios
๐ Architectural Guidelines & Conventions¶
All contributions must strictly comply with the project standards documented in:
- ๐ Engineering Conventions (
docs/CONVENTIONS.md): Core architectural principles, state immutability (ADR-012), stateless credential isolation (ADR-011), structured JSON logging, and diagrams-as-code maintenance protocol. - ๐๏ธ Technical Architecture (
docs/architecture.md): System architecture, cascading screening funnel, component boundaries, and dataflows. - ๐ Architecture Decision Records (
docs/adr/): Formal design records (ADR-001 through ADR-019).
๐ Commit & PR Guidelines¶
-
Conventional Commits Format:
<type>(<scope>): <short summary>feat(ingestion): add in-memory stream resume parsingfix(matching): resolve semantic skill expansion evaluationrefactor(state): enforce copy-on-write immutability in deep screendocs(adr): document zero-disk stream ingestion architecturetest(matcher): add test cases for cloud skill expansion
-
Pre-PR Checklist
-
pytest tests/ -vpasses (all unit and integration tests green). -
ruff check .andruff format --check .pass with 0 warnings. - Version incremented in
pyproject.tomland release notes added toCHANGELOG.md. - Documentation updated in
README.md,ROADMAP.md, oradr/if architectural changes were introduced. - Architecture diagrams updated in
scripts/generate_diagrams.pyand regenerated viapython scripts/generate_diagrams.pyif design/arch/flow changes were introduced. - Documentation site verified cleanly via
mkdocs build --strict.
-
Thank you for helping make Yojaka AI better! ๐