Skip to content

Latest commit

 

History

History
144 lines (99 loc) · 6.82 KB

File metadata and controls

144 lines (99 loc) · 6.82 KB

Career Suite — Agent layer demo

Client-safe visual walkthrough of the agent/automation boundaries (PRs #114–#118). All captures use demo/sandbox data only — no real names, emails, tokens, secrets, provider raw payloads, DevTools panels, or sensitive IDs.

Architecture: ARCHITECTURE.md · Index: README.md · Asset checklist + PII review: assets/README.md

The Career panels are feature-flagged and off by default. They render in the dashboard only after the explicit provider-consent checkbox is checked. Each panel produces proposals and structured content for manual review — no tool runs, no mutation, no persistence.


How to reproduce locally

pnpm install
pnpm --filter @devflow/career-core build
pnpm --filter @devflow/career-sync build
pnpm --filter applyflow dev          # http://localhost:3010/dashboard
  1. Open /dashboardCarregar demo (loads ~20 fictitious applications).
  2. Check the explicit provider-consent checkbox to reveal the Career panels.
  3. Interact with each panel below — every action stays in-memory and review-required.

1. Career Chat (LibreChat adapter — PR #116)

Structured chat messages are converted into deterministic career agent requests. No tool runs and no application/message/profile/provider/external system is changed without policy validation and human approval.

Completed workspace

A chat message (action + free text) is normalized into an orchestration request and returns a client-safe agent response with tool proposals — each one ready_for_review, never executed.

Career Chat — completed workspace with agent response and tool proposals

Tool proposals

Proposals expose toolName, status, and risk only. The Proposal review card shows a read-only input preview and the human gate: Approve once, Cancel, Copy structured response.

Career Chat — tool proposals and proposal review gate

Blocked by feature flag

When the adapter is disabled, the request is blocked deterministically: the trace records chat_request_receivedhuman_review_required: Adapter is disabled by feature flag. Deny by default, with a stable, client-safe explanation.

Career Chat — blocked by disabled feature flag with execution trace

Mobile

Responsive layout with no overflow; the same read-only / in-memory / manual-review guarantees (Read-only, Ephemeral, No automatic changes) are visible on small viewports.

Career Chat — mobile responsive layout


2. Career AI Draft (controlled LLM — PR #117)

The LLM produces structured content inside a known schema for an agent/task the server already resolved. It does not choose intent, agent, capabilities, tools, risk, approval, or execution mode. Default provider is the deterministic mock (no network, no cost).

Capture
Completed draft (structured output + trace) Career AI Draft — completed
Tablet Career AI Draft — tablet
Mobile Career AI Draft — mobile

The output is client-safe content for review and copy only — it carries no executable tool calls and is never auto-applied.


3. Approved Automation Review (approved automation — PR #118)

Runs exactly one allowlisted, non-destructive tool, and only after an explicit, request-scoped approval. No auto-apply, no send, no submit, no scheduling, no background execution, no persistence. Prohibited actions are not even rendered.

Capture
Completed run (proposal → approval → single execution → trace) Approved Automation Review — completed
Tablet Approved Automation Review — tablet
Mobile Approved Automation Review — mobile

The panel surfaces the server-derived proposal, the single_execution approval, the provider badge, and the execution trace. Status flags confirm the guarantees (e.g. scheduled false, persisted false, executed-externally false). A new run always requires a new approval.


4. Specialist agents via Career Chat (PR #123)

The Career Chat Workspace exposes three new deterministic actions — Analisar currículo (analyze_resume), Verificar compatibilidade ATS (analyze_ats_compatibility), and Planejar estratégia de carreira (plan_career_strategy). Selecting one reveals review-only specialist inputs (resume bullets/skills, job requirements, or target roles + availability).

Each request returns a deterministic result rendered in-place:

  • Resume — structure score (0–100), strengths, weaknesses, risks, recommendations.
  • ATS — bounded compatibility score (0–100), matched/missing keywords, structure risks. The score is computed by a documented rubric, never by the LLM.
  • Career strategy — positioning, ≤ 3 priority roles, ≤ 3 skill priorities, 30/60/90-day plan, risks.

Every result shows the selected agent, the score when applicable, evidence, risks, recommendations, and a non-executable review proposal (career.prepare_*_review + career.export_review_payload). No tool runs, no /career-tools/invoke call, no mutation, no persistence — reviewRequired: true, safeForClient: true, hasToken: false, persisted: false, toolExecutionOccurred: false.

Reproduce: load the demo, consent, pick a specialist action, fill the review-only inputs, send. The optional controlled LLM draft (mock by default) only explains the deterministic result.


What the demo proves

  • Deterministic-first — same input → same plan/proposal across chat, LLM, and automation.
  • Server-authoritative — the client never sets tool, capability, risk, plan, or approval.
  • Human-in-the-loop — every panel is review-required; automation needs an explicit approval.
  • No auto-apply / no silent persistence — outputs are proposals/content; nothing is saved.
  • Temporary approvals — request-scoped, revocable, never remembered.
  • LLM without authority — structured content only, no decisions, mock by default.
  • Automation without permanent autonomy — one tool run, then stop; no schedule/background.

Capture notes

  • Viewport desktop 1024–1440 wide; tablet/mobile per panel.
  • PNG · Chromium headless (Playwright) · demo data only.
  • Manual PII review per assets/README.md: no tokens, secrets, personal data, DevTools, or sensitive IDs in any committed capture.