Complete S02 application package drafting loop
This commit is contained in:
+52
-64
@@ -2,52 +2,9 @@
|
||||
|
||||
This file is the explicit capability and coverage contract for the project.
|
||||
|
||||
Use it to track what is actively in scope, what has been validated by completed work, what is intentionally deferred, and what is explicitly out of scope.
|
||||
|
||||
Guidelines:
|
||||
- Keep requirements capability-oriented, not a giant feature wishlist.
|
||||
- Requirements should be atomic, testable, and stated in plain language.
|
||||
- Every **Active** requirement should be mapped to a slice, deferred, blocked with reason, or moved out of scope.
|
||||
- Each requirement should have one accountable primary owner and may have supporting slices.
|
||||
- Research may suggest requirements, but research does not silently make them binding.
|
||||
- Validation means the requirement was actually proven by completed work and verification, not just discussed.
|
||||
|
||||
## Active
|
||||
|
||||
### R001 — External job import starts the workflow
|
||||
- Class: primary-user-loop
|
||||
- Status: active
|
||||
- Description: The user finds a job outside the app, imports it into the app, and starts the application workflow from that imported role.
|
||||
- Why it matters: The product is not a job board replacement; the import step is the real start of the user loop.
|
||||
- Source: user
|
||||
- Primary owning slice: M001/S01
|
||||
- Supporting slices: M001/S05
|
||||
- Validation: mapped
|
||||
- Notes: This is a hard product-shape requirement, not a convenience feature.
|
||||
|
||||
### R002 — Gmail import feels smart enough to trust
|
||||
- Class: integration
|
||||
- Status: active
|
||||
- Description: Gmail connection, message retrieval, and message/thread import must help the user pull real correspondence into the right job with materially less manual cleanup.
|
||||
- Why it matters: Gmail import is one of the two clearest current weaknesses and a major trust surface for daily use.
|
||||
- Source: user
|
||||
- Primary owning slice: M001/S01
|
||||
- Supporting slices: M001/S03, M001/S05
|
||||
- Validation: mapped
|
||||
- Notes: Matching quality and import clarity matter more than merely exposing the API surface.
|
||||
|
||||
### R003 — AI application drafts are materially useful
|
||||
- Class: differentiator
|
||||
- Status: active
|
||||
- Description: Tailored CV and cover-letter drafts must feel specific, credible, and good enough that the user wants to start from them.
|
||||
- Why it matters: Draft generation exists already, but the milestone bar is actual usefulness rather than feature presence.
|
||||
- Source: user
|
||||
- Primary owning slice: M001/S02
|
||||
- Supporting slices: M001/S05
|
||||
- Validation: mapped
|
||||
- Notes: “A really good AI draft” is an explicit milestone success bar from the discussion.
|
||||
|
||||
### R004 — Follow-up and reply drafts use real context
|
||||
### R004 — The app must generate follow-up and reply drafts from the imported job, saved application material, and correspondence context tied to that job.
|
||||
- Class: primary-user-loop
|
||||
- Status: active
|
||||
- Description: The app must generate follow-up and reply drafts from the imported job, saved application material, and correspondence context tied to that job.
|
||||
@@ -58,7 +15,7 @@ Guidelines:
|
||||
- Validation: mapped
|
||||
- Notes: The user stays in control of sending; the app provides strong drafts only.
|
||||
|
||||
### R005 — Job table is the primary daily control surface
|
||||
### R005 — The first page should give the user a clear overview of jobs, status, readiness, and what needs attention.
|
||||
- Class: continuity
|
||||
- Status: active
|
||||
- Description: The first page should give the user a clear overview of jobs, status, readiness, and what needs attention.
|
||||
@@ -69,7 +26,7 @@ Guidelines:
|
||||
- Validation: mapped
|
||||
- Notes: This should feel like “scan the field” before drilling into one job.
|
||||
|
||||
### R006 — Follow-up/dashboard surfaces the right urgency
|
||||
### R006 — The dashboard and follow-up surfaces must clearly show next actions, neglected threads, and jobs that need attention now.
|
||||
- Class: continuity
|
||||
- Status: active
|
||||
- Description: The dashboard and follow-up surfaces must clearly show next actions, neglected threads, and jobs that need attention now.
|
||||
@@ -80,7 +37,7 @@ Guidelines:
|
||||
- Validation: mapped
|
||||
- Notes: The follow-up/dashboard view is the second navigation priority after the table.
|
||||
|
||||
### R007 — Individual job workspace supports focused execution
|
||||
### R007 — Each job needs a workspace where the user can update status, review/import correspondence, edit drafts, and prepare follow-ups.
|
||||
- Class: core-capability
|
||||
- Status: active
|
||||
- Description: Each job needs a workspace where the user can update status, review/import correspondence, edit drafts, and prepare follow-ups.
|
||||
@@ -91,7 +48,7 @@ Guidelines:
|
||||
- Validation: mapped
|
||||
- Notes: This is where the product should feel connected instead of scattered.
|
||||
|
||||
### R008 — Outbound actions remain manual and user-controlled
|
||||
### R008 — The app may draft application, reply, and follow-up content, but it must not auto-send emails or auto-apply to jobs.
|
||||
- Class: constraint
|
||||
- Status: active
|
||||
- Description: The app may draft application, reply, and follow-up content, but it must not auto-send emails or auto-apply to jobs.
|
||||
@@ -102,7 +59,7 @@ Guidelines:
|
||||
- Validation: mapped
|
||||
- Notes: This is a durable trust constraint across all milestones.
|
||||
|
||||
### R009 — Product is designed for an individual, not a team workflow
|
||||
### R009 — Core UX, data model emphasis, and roadmap decisions should optimize for one person managing their own search.
|
||||
- Class: constraint
|
||||
- Status: active
|
||||
- Description: Core UX, data model emphasis, and roadmap decisions should optimize for one person managing their own search.
|
||||
@@ -113,7 +70,7 @@ Guidelines:
|
||||
- Validation: mapped
|
||||
- Notes: Shared/team workflows are not the current product target.
|
||||
|
||||
### R010 — Tracking continuity survives manual and imported updates
|
||||
### R010 — The app must preserve a coherent history across manual status changes, imported Gmail correspondence, reminders, and follow-up work.
|
||||
- Class: continuity
|
||||
- Status: active
|
||||
- Description: The app must preserve a coherent history across manual status changes, imported Gmail correspondence, reminders, and follow-up work.
|
||||
@@ -126,11 +83,42 @@ Guidelines:
|
||||
|
||||
## Validated
|
||||
|
||||
None yet.
|
||||
### R001 — The user finds a job outside the app, imports it into the app, and starts the application workflow from that imported role.
|
||||
- Class: primary-user-loop
|
||||
- Status: validated
|
||||
- Description: The user finds a job outside the app, imports it into the app, and starts the application workflow from that imported role.
|
||||
- Why it matters: The product is not a job board replacement; the import step is the real start of the user loop.
|
||||
- Source: user
|
||||
- Primary owning slice: M001/S01
|
||||
- Supporting slices: M001/S05
|
||||
- Validation: S01 completed with a job-scoped Gmail import loop wired into the job workspace: backend `GET /api/gmail/job-candidates` uses the owned job as context, imports target that job directly, and focused UI verification passed in `job-tracker-ui/src/correspondence-gmail-import.test.tsx`.
|
||||
- Notes: Validation is contract/UI-level plus workspace integration. Live user UAT of the broader milestone loop still remains for later slices.
|
||||
|
||||
### R002 — Gmail connection, message retrieval, and message/thread import must help the user pull real correspondence into the right job with materially less manual cleanup.
|
||||
- Class: integration
|
||||
- Status: validated
|
||||
- Description: Gmail connection, message retrieval, and message/thread import must help the user pull real correspondence into the right job with materially less manual cleanup.
|
||||
- Why it matters: Gmail import is one of the two clearest current weaknesses and a major trust surface for daily use.
|
||||
- Source: user
|
||||
- Primary owning slice: M001/S01
|
||||
- Supporting slices: M001/S03, M001/S05
|
||||
- Validation: S01 completed with backend-ranked job-aware Gmail candidates, explicit imported/skipped import payloads, persisted thread/sender/recipient metadata, and focused verification across isolated `GmailControllerTests` plus `CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/correspondence-gmail-import.test.tsx`.
|
||||
- Notes: The broader JobTrackerApi.Tests project still has unrelated compile drift, so Gmail backend coverage was isolated instead of run through the full test project. Live Gmail UAT is still needed to judge trust on a real inbox.
|
||||
|
||||
### R003 — Tailored CV and cover-letter drafts must feel specific, credible, and good enough that the user wants to start from them.
|
||||
- Class: differentiator
|
||||
- Status: validated
|
||||
- Description: Tailored CV and cover-letter drafts must feel specific, credible, and good enough that the user wants to start from them.
|
||||
- Why it matters: Draft generation exists already, but the milestone bar is actual usefulness rather than feature presence.
|
||||
- Source: user
|
||||
- Primary owning slice: M001/S02
|
||||
- Supporting slices: M001/S05
|
||||
- Validation: Validated by M001/S02: backend application-package generation now uses recruiter/job/profile/attachment/imported-correspondence context, focused backend tests pass in an isolated harness, and the Tailored CV workspace test proves generation, editing, save, and saved-state redisplay behavior.
|
||||
- Notes: S02 proved the application-package drafts are materially more specific and persist as job-tied working material. Broader end-to-end live-loop revalidation still remains in M001/S05.
|
||||
|
||||
## Deferred
|
||||
|
||||
### R011 — Stronger tracking control-center analytics
|
||||
### R011 — The app should later expand overview analytics, saved views, and clearer strategy readouts beyond the core daily loop.
|
||||
- Class: operability
|
||||
- Status: deferred
|
||||
- Description: The app should later expand overview analytics, saved views, and clearer strategy readouts beyond the core daily loop.
|
||||
@@ -141,7 +129,7 @@ None yet.
|
||||
- Validation: unmapped
|
||||
- Notes: Deferred because Gmail import and draft quality are higher-value first fixes.
|
||||
|
||||
### R012 — Broader inbox-aware assistance beyond initial Gmail improvements
|
||||
### R012 — The product may later add richer message understanding, smarter thread handling, and broader inbox-aware assistance after the first Gmail milestone.
|
||||
- Class: integration
|
||||
- Status: deferred
|
||||
- Description: The product may later add richer message understanding, smarter thread handling, and broader inbox-aware assistance after the first Gmail milestone.
|
||||
@@ -152,7 +140,7 @@ None yet.
|
||||
- Validation: unmapped
|
||||
- Notes: This is the natural next step after M001 proves the core Gmail path.
|
||||
|
||||
### R013 — Richer AI coaching beyond the application/follow-up core
|
||||
### R013 — The app may later add broader strategic coaching and more advanced guidance beyond application package and follow-up/reply drafting.
|
||||
- Class: differentiator
|
||||
- Status: deferred
|
||||
- Description: The app may later add broader strategic coaching and more advanced guidance beyond application package and follow-up/reply drafting.
|
||||
@@ -165,7 +153,7 @@ None yet.
|
||||
|
||||
## Out of Scope
|
||||
|
||||
### R014 — Auto-apply to jobs
|
||||
### R014 — The app will not automatically submit applications to external job sites.
|
||||
- Class: anti-feature
|
||||
- Status: out-of-scope
|
||||
- Description: The app will not automatically submit applications to external job sites.
|
||||
@@ -176,7 +164,7 @@ None yet.
|
||||
- Validation: n/a
|
||||
- Notes: The app starts after discovery/import, not at job search submission.
|
||||
|
||||
### R015 — Auto-send outbound email or messages
|
||||
### R015 — The app will not send replies, follow-ups, or other communication autonomously.
|
||||
- Class: anti-feature
|
||||
- Status: out-of-scope
|
||||
- Description: The app will not send replies, follow-ups, or other communication autonomously.
|
||||
@@ -187,7 +175,7 @@ None yet.
|
||||
- Validation: n/a
|
||||
- Notes: Drafting is allowed; autonomous sending is not.
|
||||
|
||||
### R016 — Recruiter CRM or team collaboration workflows
|
||||
### R016 — The product will not optimize for shared pipelines, recruiter operations, or multi-user coaching workflows right now.
|
||||
- Class: out-of-scope
|
||||
- Status: out-of-scope
|
||||
- Description: The product will not optimize for shared pipelines, recruiter operations, or multi-user coaching workflows right now.
|
||||
@@ -198,7 +186,7 @@ None yet.
|
||||
- Validation: n/a
|
||||
- Notes: Multi-user admin surfaces may exist technically, but they are not the roadmap center.
|
||||
|
||||
### R017 — In-app job discovery replacing job boards
|
||||
### R017 — The app will not try to replace external job boards as the main discovery surface.
|
||||
- Class: out-of-scope
|
||||
- Status: out-of-scope
|
||||
- Description: The app will not try to replace external job boards as the main discovery surface.
|
||||
@@ -213,9 +201,9 @@ None yet.
|
||||
|
||||
| ID | Class | Status | Primary owner | Supporting | Proof |
|
||||
|---|---|---|---|---|---|
|
||||
| R001 | primary-user-loop | active | M001/S01 | M001/S05 | mapped |
|
||||
| R002 | integration | active | M001/S01 | M001/S03, M001/S05 | mapped |
|
||||
| R003 | differentiator | active | M001/S02 | M001/S05 | mapped |
|
||||
| R001 | primary-user-loop | validated | M001/S01 | M001/S05 | S01 completed with a job-scoped Gmail import loop wired into the job workspace: backend `GET /api/gmail/job-candidates` uses the owned job as context, imports target that job directly, and focused UI verification passed in `job-tracker-ui/src/correspondence-gmail-import.test.tsx`. |
|
||||
| R002 | integration | validated | M001/S01 | M001/S03, M001/S05 | S01 completed with backend-ranked job-aware Gmail candidates, explicit imported/skipped import payloads, persisted thread/sender/recipient metadata, and focused verification across isolated `GmailControllerTests` plus `CI=true npm --prefix job-tracker-ui test -- --watch=false --runTestsByPath src/correspondence-gmail-import.test.tsx`. |
|
||||
| R003 | differentiator | validated | M001/S02 | M001/S05 | Validated by M001/S02: backend application-package generation now uses recruiter/job/profile/attachment/imported-correspondence context, focused backend tests pass in an isolated harness, and the Tailored CV workspace test proves generation, editing, save, and saved-state redisplay behavior. |
|
||||
| R004 | primary-user-loop | active | M001/S03 | M001/S01, M001/S02, M001/S05 | mapped |
|
||||
| R005 | continuity | active | M001/S04 | M001/S05 | mapped |
|
||||
| R006 | continuity | active | M001/S04 | M001/S05 | mapped |
|
||||
@@ -233,7 +221,7 @@ None yet.
|
||||
|
||||
## Coverage Summary
|
||||
|
||||
- Active requirements: 10
|
||||
- Mapped to slices: 10
|
||||
- Validated: 0
|
||||
- Active requirements: 7
|
||||
- Mapped to slices: 7
|
||||
- Validated: 3 (R001, R002, R003)
|
||||
- Unmapped active requirements: 0
|
||||
|
||||
Reference in New Issue
Block a user