-
Notifications
You must be signed in to change notification settings - Fork 0
feat(02-02): scout agent — YC-OSS fetcher, weighted lead scorer, dedup #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
coder-ishan
wants to merge
11
commits into
main
Choose a base branch
from
feature/phase-02-plan-02-scout
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
99a3d79
feat(02-01): add Phase 2 Pydantic output schemas (central contracts f…
coder-ishan 313ed79
feat(02-01): resume parser and profile extraction agent
coder-ishan 7733e68
feat(02-02): add YC-OSS data fetcher and weighted scoring formula
coder-ishan 27e4f62
feat(02-02): rewrite scout agent — yc-oss API, dedup, status persistence
coder-ishan 543ca62
feat(02-02): implement Scout agent with fetch/score/dedup/persist pip…
coder-ishan f767a9c
feat(02-05): Writer agent Phase 2 — factory pattern + deps injection
coder-ishan 6ee548c
wip: 02-core-pipeline paused at plan 5/7
coder-ishan 2ce0f8f
fix(02-02): register scout_run in AGENT_REGISTRY, update Phase 1 test…
coder-ishan afc912f
resolve circular dependency
coder-ishan aed3859
uv lock
coder-ishan d1181c8
fix(02-02): address Copilot PR #7 review comments
coder-ishan File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
60 changes: 60 additions & 0 deletions
60
.planning/phases/02-core-pipeline-scout-through-writer/.continue-here.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| --- | ||
| phase: 02-core-pipeline-scout-through-writer | ||
| task: 5 | ||
| total_tasks: 7 | ||
| status: in_progress | ||
| last_updated: 2026-02-26T10:41:11.427Z | ||
| --- | ||
|
|
||
| <current_state> | ||
| Phase 2, plan 02-05 complete. Branch `feature/phase-02-plan-02-scout`, PR #7 open at https://github.com/coder-ishan/Ingot/pull/7. | ||
| Plans 02-01 (schemas + profile agent) and 02-05 (writer agent) are done. Plans 02-02, 02-03, 02-04, 02-06, 02-07 are NOT done — their summaries don't exist. | ||
| </current_state> | ||
|
|
||
| <completed_work> | ||
|
|
||
| - Plan 02-01: `src/ingot/models/schemas.py` — all 6 Pydantic output schemas (UserProfile, IntelBriefPhase1, IntelBriefFull, MatchResult, MCQAnswers, EmailDraft). Committed in a prior session. | ||
| - Plan 02-05: `src/ingot/agents/writer.py` — full Phase 2 rewrite. Two agent factories (create_mcq_agent, create_writer_agent), MCQ optional flow, tone routing (hr/cto/ceo/default), CAN-SPAM footer builder, run_writer() with Email+FollowUp SQLite persistence. | ||
| - README: Added "Agent architecture" section documenting deps-injection pattern and factory pattern. | ||
| - STATE.md updated to reflect 02-05 complete. | ||
| - All committed and pushed to `feature/phase-02-plan-02-scout`. | ||
|
|
||
| Key decision made this session: **factory functions over module-level singletons** for agents, so Orchestrator injects model string from ConfigManager at runtime. Also: **deps injection over @agent.tool** for data the Orchestrator pre-loads (IntelBriefFull, MatchResult, UserProfile) — no extra LLM round-trips. | ||
|
|
||
| </completed_work> | ||
|
|
||
| <remaining_work> | ||
|
|
||
| - Plan 02-02: (wave 1) — check plan file for what it builds | ||
| - Plan 02-03: (wave 2, checkpoint/autonomous=false) — check plan file | ||
| - Plan 02-04: (wave 2) — check plan file | ||
| - Plan 02-06: (wave 4, checkpoint/autonomous=false) — Orchestrator runtime wiring; will call create_writer_agent(config.agents["writer"].model) and create_mcq_agent(config.agents["writer"].model) using factory pattern established in 02-05 | ||
| - Plan 02-07: (wave 5) — Scout agent | ||
|
|
||
| Note: 02-02 and 02-03/04 were skipped this session (user targeted plan-05 directly). They still need execution before phase verification. | ||
|
|
||
| </remaining_work> | ||
|
|
||
| <decisions_made> | ||
|
|
||
| - Agent factories over module-level singletons: `create_mcq_agent(model)` / `create_writer_agent(model)` accept model string at call time from ConfigManager. This is the pattern Orchestrator (02-06) should use for ALL agents. | ||
| - Deps injection over tool calls: `WriterDeps` carries pre-loaded data. `@agent.tool` is reserved for dynamic lookups (web search, unknown DB rows). This decision documented in README. | ||
| - `defer_model_check=True` on all PydanticAI agents — codebase convention, allows import without API key set. | ||
| - Phase 1 `WriterAgent` class + `register_agent()` pattern was intentionally replaced (it was a stub). The new writer does NOT use `ingot.agents.base.AgentDeps` or `ingot.agents.registry`. | ||
|
|
||
| </decisions_made> | ||
|
|
||
| <blockers> | ||
|
|
||
| - Plans 02-02, 02-03, 02-04 not yet executed — 02-06 (Orchestrator) depends on 02-03 and 02-04. If you execute 02-06 next, those dependencies may cause issues. | ||
| - Context was at 81% when pausing — start fresh session for remaining plans. | ||
|
|
||
| </blockers> | ||
|
|
||
| <context> | ||
| The phase is building the core pipeline: Scout → Research → Matcher → Writer → Orchestrator. We've done schemas (02-01) and Writer (02-05). The natural next targets are the remaining wave 1 plan (02-02) and then wave 2 (02-03, 02-04) before tackling the Orchestrator (02-06) which wires everything together. The factory pattern established in writer.py should be applied consistently to all other agents in this phase. | ||
| </context> | ||
|
|
||
| <next_action> | ||
| Start with: `/gsd:execute-phase 2 plan-02` — execute plan 02-02 (wave 1, the remaining unstarted plan alongside 02-01). Then proceed through 02-03, 02-04 in order before tackling 02-06 (Orchestrator). Check each plan file first to understand what it builds. | ||
| </next_action> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
beautifulsoup4 and lxml are added as hard dependencies but are not referenced anywhere in src/. If they are not needed for this PR, consider removing them to reduce install size and supply-chain surface area.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lxmlis apython-docxtransitive dependency (used internally for XML parsing).beautifulsoup4is pre-declared for the Scout scraping fallback planned in 02-07 — added an inline comment in pyproject.toml to make this explicit.