COS-DSN-002
Design Submission & Internal Review Gate
Purpose
After a designer submits work, it passes through an internal review before reaching the customer. Today Anmol reviews everything. This spec encodes his review logic as automated checks so standard jobs go to RM/Anupam, and Anmol only sees high-value or flagged exceptions.
Key note: Reviewer sees the original WhatsApp/email message alongside the AI brief and submitted design — not just the formatted summary.
Actors
| Actor | Type | Role |
|---|---|---|
| AI Review Engine | System | Runs automated checks immediately on submission |
| RM | Internal | Reviews Coral submissions against checklist |
| Anupam | Internal | Reviews CAD submissions |
| Anmol | Internal | Reviews only: high-value, flagged, or revision-loop jobs |
Trigger
Job state = COREL_SUBMITTED or CAD_SUBMITTED
Full Flow
1. Submission received
2. AI Review Engine runs all automated checks (see below)
3. Compute result:
PASS → route to RM (Coral) or Anupam (CAD) for checklist review
FAIL → route directly to Anmol with flagged reasons
WARN → route to RM/Anupam with warnings visible
4. Reviewer opens job review screen:
→ Original customer message (raw WhatsApp text + images)
→ AI parsed brief
→ Submitted design (render / CAD preview)
→ AI auto-check results per item
→ Review checklist — must tick every item
→ Pricing auto-calculation already shown
5. Reviewer completes checklist + adds notes
6. Decision:
APPROVE → state = CAD_INTERNAL_QC | next state
→ goes to pricing → then to client
SEND BACK → state = COREL_QUEUED | CAD_QUEUED
→ revision note sent to designer
→ revision count++
7. If value > threshold OR revision_count >= 3 → auto-escalate to Anmol
AI Auto-Checks
| Check | Logic | Result |
|---|---|---|
| Weight in budget range | gold cost vs brief.budget_usd | WARN if >15% over, FAIL if >30% |
| Diamonds in budget range | diamond cost at client rate vs remaining budget | WARN / FAIL |
| CAD file valid | .3dm parseable, not corrupted | FAIL |
| Render present | Render image uploaded with CAD | FAIL |
| Weight report present | PDF or text included | WARN |
| Ring size present | sub_category=ring AND no size in brief | WARN |
| Revision count | revision_count >= 3 | FLAG to Anmol |
Review Checklist
Coral
- Layout matches reference / description
- Font appropriate for customer (if text/nameplate)
- Diamond coverage fits stated setting
- Approx carat weight reasonable for budget
- No missing elements (bail, clasp, chain attachment)
- Customer recurring instructions followed
CAD (above plus)
- Gold weight within ±15% of budget estimate
- Diamond carat within ±15% of budget estimate
- Ring/bracelet size matches brief
- Wall thickness adequate (AI check passed)
- Prong structure fits stone size
- Finding type matches brief
- Internal finish noted (e.g. polished inside band)
Escalation to Anmol
| Trigger | Reason |
|---|---|
| AI check = FAIL on weight/diamond | Risk of wrong pricing on high-value piece |
| value_estimate > $15,000 | High-value threshold |
| revision_count >= 3 | Revision loop — needs senior review |
| Reviewer explicitly escalates | "Send to Anmol" option on review screen |
| New customer (first 3 orders) | Build trust before delegating |
Revision Flow
Reviewer must select reason(s) when sending back:
- Weight too high / too low
- Diamond coverage incorrect
- Wrong font / style
- Missing element
- Dimension mismatch
- Customer instruction not followed
- Other (free text required)
Designer gets notification with specific reasons. Job appears at top of their queue (revision jobs priority-boosted).
Business Rules
| Rule | Detail |
|---|---|
| Checklist mandatory | Cannot approve without ticking every item |
| Revision reason mandatory | Cannot send back without selecting at least one |
| Anmol sees L2+ only | Standard passing jobs never appear in his queue |
| SLA for review | 4h. Escalate to Anupam (CAD) or team lead after 4h. |
| Spec lock on approval | Once approved here, spec frozen until client approves. |
API Endpoints
GET /queues/internal-review?reviewer_id=:id
GET /jobs/:job_id/review-pack
Returns: design files, brief, original message, AI checks, customer history, pricing estimate
POST /jobs/:job_id/review-decision
Body: { decision, checklist, notes, revision_reasons? }
GET /jobs/:job_id/revisions
Out of Scope
| Item | Handled in |
|---|---|
| Client approval | COS-APR-001 |
| Pricing computation | COS-PRC-001 |
| CAD manufacturability deep-check | COS-AIE-001 |