Skip to main content

1) Ingestion Workflow

Primary async job-backed flow:
  1. POST /api/ingest or POST /api/ingest/upload
  2. Receive job_id
  3. Monitor with GET /api/ingest/{job_id} or WS /api/ingest/ws/{job_id}
  4. Wait for terminal state: completed or failed
Direct URL path:
  • POST /api/ingest/url executes immediately and returns payload-level status.
  • Use force: true on POST /api/ingest/url for explicit reprocessing and relevance-override ingestion when needed.
Manual caption override (articles/LinkedIn):
  • Both /api/ingest and /api/ingest/url accept optional manual_caption, manual_title, manual_description fields.
  • When manual_caption is provided, Firecrawl is bypassed and the provided text is used directly.
Signal policy (read-only):
  • GET /api/ingest/policy returns the current relevance gate criteria, threshold, model, career goal context, and accept/reject stats.
  • Rendered at /signal-policy in the frontend.
Screenshot upload:
  • POST /api/ingest/screenshots with source_url + image files (multipart). Fire-and-forget, can be called at any point.
  • Screenshots are copied to extracted projects automatically.

2) Chat Workflow

Request/response mode:
  1. POST /api/chat
  2. For multi-turn conversations, the query rewriter resolves follow-ups into standalone queries using conversation history (rewrite-retrieve-read pattern)
  3. System routes request (clear_meta, ambiguous, general, content, web_search, skill)
  4. Response returns answer + provenance fields
Streaming mode:
  1. POST /api/chat/stream
  2. Query rewriting applies the same way as request/response mode
  3. Consume SSE event sequence
  4. Finish on one terminal event: done or error
See Chat Internals for rewrite behavior and guardrails.

3) Career Recommendation Workflow

  1. Fetch overview and scoring context:
    • GET /api/career/overview
    • GET /api/career/taxonomy
    • GET /api/career/taxonomy/inventory
    • GET /api/career/composites
    • GET /api/career/patterns
    • Composite scores expose:
      • readiness_pct for coverage-driven activation/ranking
      • confidence_pct for evidence depth
      • score_pct as backward-compatible readiness alias
  2. Request recommendations:
    • GET /api/career/recommend/jobs
  3. Send user signals:
    • POST /api/career/recommend/jobs/impressions
    • POST /api/career/recommend/jobs/feedback
    • POST /api/career/recommend/jobs/feedback/batch
  4. Inspect feedback aggregates:
    • GET /api/career/recommend/jobs/feedback/stats

4) Services/Operator Workflow

Use services-backed APIs for runtime control and quality visibility:
  • Health: GET /health, GET /health?deep=true
  • Provider/runtime: GET /api/stats/providers, GET /api/stats/slo
  • Cost/usage: GET /api/stats/costs
  • Eval runs: GET /api/evals/runs, GET /api/evals/runs/{run_id}, GET /api/evals/compare

5) LinkedIn Network Execution Workflow

  1. Run LinkedIn audit and scoring in /linkedin-network.
  2. Persist an audit snapshot:
    • POST /api/network-ops/linkedin/snapshots
  3. Generate and execute a weekly plan in /startup-challenge.
  4. Monitor week-over-week KPI movement:
    • GET /api/network-ops/linkedin/summary