Last updated: 2026-08-10
A static quality gate applies the same rules forever. A self-learning gate updates its thresholds and criteria based on real reviewer decisions:
agentfabric.dev handles the review layer. Your agent submits proposals with a quality score; the reviewer's decisions build the signal you need to adjust the gate.
# Agent submits output with quality metadata
POST https://rest.agentfabric.dev/v1/reviews
{
"title": "Generated product description — batch 47",
"content": product_description,
"context": {
"quality_score": 0.82,
"model_version": "gpt-4o-2026-08",
"template_used": "product-v3",
"previous_rejections_similar": 2
},
"risk_level": "low"
}
# Retrieve feedback after review decision
GET /v1/reviews/{review_id}/audit
{
"decision": "rejected",
"rejection_reason": "Too generic — missing product-specific differentiator",
"reviewer_note": "Needs mention of the 5-year warranty",
"quality_score_at_time": 0.82
}
Feed these rejection reasons back into your prompt refinement loop or fine-tuning pipeline. The agentfabric.dev audit trail gives you timestamped, reviewer-attributed feedback for every proposal — exactly the signal you need.
As your rejection rate drops, you can progressively loosen the gate:
# agentfabric.dev policy config (via API or dashboard)
{
"policies": [
{
"condition": "context.quality_score >= 0.95",
"action": "auto_approve"
},
{
"condition": "context.quality_score >= 0.85",
"action": "sample_review",
"sample_rate": 0.1
},
{
"condition": "context.quality_score < 0.85",
"action": "require_review"
}
]
}
You can use an LLM to auto-evaluate outputs — but "the model said it was fine" is not a compliance story, and LLM-based gatekeepers can drift without detection. Human review, even sampled, provides: