# Wire All 4 Microservice Agents Into Chat
Wires all 4 microservice-backed agents into the chat so the LLM can call real services and return session URLs.
---
## Changes
### New
* `src/routes/chat.ts`
* Added a direct HTTP chat endpoint.
* When the LLM calls:
* `start_interview_session`
* `analyze_resume`
* `start_roleplay_session`
* `compute_qscore`
* The route executes real service probes and returns live session URLs.
---
### Fixed
* `src/index.ts`
* Rivet proxy now forwards requests to the engine at `localhost:6420`
instead of using `registry.handler()`.
* Prevents the:
```txt
Runtime already started as runner
```
conflict.
* `src/actors/user-actor.ts`
* `receiveMessage()` now returns:
```ts
{
reply,
sessions: []
}
```
* Includes per-module session URLs in responses.
* `docker-compose.yml`
* Fixed:
* Gitea health check port
* Port mapping
* `A2A_ALLOWED_KEY` default value
* `src/config.ts`
* Added:
```ts
resumeServiceUrl
```
* Configured to use port `8002`.
---
### Rewritten
* `prompts/system.txt`
* Reworked into a conversational step-by-step flow.
* Added explicit rule:
> CALL THE TOOL IMMEDIATELY
---
### Updated
* `agents/*.md` (6 files)
* Updated:
* Domain descriptions
* Trigger phrases
* Agent boundaries
---
## Verified
| Agent | Service | Result |
| ------------- | ------------------------ | --------------------------- |
| Resume (Mira) | `resume-builder:8002` | Real analysis |
| Sara | `interview-service:8007` | Real Gemini session + URL |
| Emily | `roleplay-service:8008` | Real roleplay session + URL |
| Quinn | `qscore-service:8000` | Real Q-Score (~84) |
---
## Outcome
The chat system can now:
* Trigger real backend agent services directly from LLM tool calls
* Return live session URLs
* Maintain structured multi-agent responses
* Avoid Rivet runtime conflicts
* Support end-to-end conversational workflows across all 4 agents
Reviewed-on: puter/growqr-backend#3
Co-authored-by: NinjasPyajamas <divyansh242805@gmail.com>
Co-committed-by: NinjasPyajamas <divyansh242805@gmail.com>
32 lines
1.7 KiB
Markdown
32 lines
1.7 KiB
Markdown
---
|
|
id: qscore
|
|
name: Quinn
|
|
role: Q-Score Agent
|
|
service: qscore-service
|
|
tools:
|
|
- compute_qscore
|
|
- ingest_signals
|
|
---
|
|
|
|
## Domain
|
|
Quinn is the **Q-Score Agent**. She computes and explains the user's Q-Score — a readiness score based on resume strength, interview readiness, role alignment, engagement, skills, and goal clarity. She tracks growth over time.
|
|
|
|
## When to use this agent (trigger phrases)
|
|
Use `ingest_signals` + `compute_qscore` when the user:
|
|
- Wants their readiness score: "what's my q-score", "how ready am I", "readiness score", "calculate my score", "check my progress"
|
|
- Completed a resume update and wants to see impact: "I updated my resume, check my score", "after optimizing resume"
|
|
- Completed interview practice and wants assessment: "after interview practice", "how did practice affect my score"
|
|
- Completed roleplay and wants evaluation: "after roleplay", "roleplay feedback score"
|
|
- Wants overall career health check: "career readiness", "job readiness", "how prepared am I", "am I ready to apply"
|
|
- Wants to track growth: "score trend", "progress tracking", "improvement over time", "how much have I improved"
|
|
- Mentions metrics: "quantify my readiness", "measure my growth", "score me", "rate my profile"
|
|
|
|
## What Quinn NEVER does
|
|
- Interview practice → Sara
|
|
- Roleplay scenarios → Emily
|
|
- Resume editing → Resume Agent
|
|
- Job searching → Job Search Agent
|
|
|
|
## How it works
|
|
Ingests signals (resume.uploaded, resume.ats_compatibility, engagement.features_used, goals.goal_clarity) via `POST /v1/signals/ingest`, then computes Q-Score via `POST /v1/qscore/compute`. Returns score from 0-100 with breakdown across 5 pillars. If formula store unavailable, returns an estimated score from signal averages rather than failing.
|