Files
matchmaking-v2/research/docs/DECOMMISSION_PLAN.md
raulgupta 89ca9ad647 Initial commit: matchmaking-v2 on-demand multi-board job-search agent
On-demand Scout service (replaces the nightly aggregator):
- FastAPI agent-mesh service; card name "matchmaking-service" (HTTP /a2a/tasks
  + Redis-stream worker matching the sibling-service pattern)
- run_search: parallel multi-board sweep (Naukri/blackfalcondata + Foundit +
  LinkedIn), city-filtered at the board, cheapest-per-result first
- per-board adapters + normalizers -> ScoutJob with rich read-only details and
  offsite apply links; recall mode + MVQ guard
- result cache for dev replay ($0); per-board cost knobs; retry-on-5xx
- research/: engine design, board cost economics, India-actor shortlist, POC
2026-06-18 19:22:03 +05:30

2.7 KiB

Old Matchmaking — Decommission & Slot-In Plan

How matchmaking-v2 (Scout) replaces the dead matchmaking service. Companion to ENGINE_DESIGN.md. Status (2026-06-16): planned, local teardown not yet executed.

Current state (verified live 2026-06-16)

The old matchmaking runs identically in both local (growqr-demo) and prod (EC2):

Component Local Prod (EC2 3.109.159.139)
matchmaking-api :8006 → 8000, up :8006 → 8000, up 4d
matchmaking-worker up up 4d
matchmaking-ingestion-worker up up 4d
matchmaking-postgres (own DB, NOT RDS) :5439, vol matchmaking-pgdata :5439, vol matchmaking-pgdata

Containers are running but the service is functionally dead (ingestion chain broke 2026-05-27; 986,770 stale score rows for 21 users). :8011 is free in both. AWS reachable: CLI as iam::189924572890:user/rahul; SSH ec2-user@3.109.159.139 (key ~/.ssh/growqr-key.pem).

Locked decisions

  1. Reuse port :8006 (the old matchmaking's slot) — NOT a new :8011. This overrides ENGINE_DESIGN.md §1's "12th agent on :8011". Rationale: in-place swap — v2 inherits the existing api.growqr.ai/matchmaking/* nginx route + the frontend's existing matchmaking wiring, so the Scout UI works with minimal rewiring.
  2. Drop the old corpus DB. v2 is on-demand, no corpus (ENGINE_DESIGN.md §1) — so matchmaking-postgres + its matchmaking-pgdata volume are discarded. The data is stale/worthless (design doc verdict). Irreversible — confirm before deleting the volume.
  3. WS-agent via orchestrator. v2 reuses :8006, registers in orchestrator AGENT_URLS, and the frontend reaches it through useAgentSession (WS) — matching the mesh pattern (like course-service :8010). The old /matchmaking/* nginx HTTP route stays vestigial or is removed later.

Sequence

A. Local — immediate (on go-ahead):

  • docker compose stop + rm the 4 matchmaking containers (api, worker, ingestion-worker, postgres).
  • Drop the matchmaking-pgdata volume (decision #2). Frees :8006 + :5439 for v2 dev.
  • Comment/remove the matchmaking services from the local compose; v2 takes :8006.

B. Prod — later (after v2 validated):

  • Stop the 4 prod matchmaking containers; remove from docker-compose.prod.yml.
  • Deploy v2 on :8006; add to orchestrator AGENT_URLS; keep/retire the nginx /matchmaking/* route.
  • Periodic docker builder/image prune (per aws-deployment.md) after the swap.

Rollback

Local teardown is reversible except the dropped volume. Keep the old matchmaking repo + compose definition until v2 is validated in prod, so prod can be restored by re-adding the service block.