prompt 0.001
This commit is contained in:
parent
0acd66df38
commit
e8301708a3
@ -667,4 +667,789 @@ IF "bathroom" IN Room Type:
|
||||
**Rule 6: Style Consistency Across Tags**
|
||||
```
|
||||
IF "traditional" IN Style (confidence >0.85):
|
||||
CHECK: Furn
|
||||
CHECK: Furnishing should include "traditional" OR "classic" OR "elegant"
|
||||
VERIFY: Features may include "crown molding", "ornate details", "chandelier"
|
||||
CONFLICT: If "minimalist" also tagged, reduce lower-confidence tag by 0.12
|
||||
|
||||
IF "modern" AND "contemporary" both present:
|
||||
ACCEPTABLE: These are complementary styles
|
||||
CONFIDENCE: Both should be 0.85+ if tagged together
|
||||
|
||||
IF "industrial" IN Style:
|
||||
EXPECT: Features like "exposed" elements, "concrete", "metal accents"
|
||||
FLOORING: More likely concrete, polished concrete, or wood (not carpet)
|
||||
```
|
||||
|
||||
**Rule 7: Color Scheme-Style Harmony**
|
||||
```
|
||||
IF "luxury" IN Furnishing OR Style:
|
||||
COLOR SCHEME likely: "neutral tones", "monochrome", "muted tones" (sophisticated)
|
||||
LESS LIKELY: "bold colors", "vibrant" (unless art deco/eclectic)
|
||||
|
||||
IF "scandinavian" IN Style:
|
||||
EXPECT: "white and gray", "neutral tones", "wood tones", "light colors"
|
||||
LIGHTING: Should include "natural light" or "abundant natural light"
|
||||
```
|
||||
|
||||
**Validation Execution Process**:
|
||||
```
|
||||
1. Generate initial 35-40 candidate tags
|
||||
2. Run all 7 consistency checks
|
||||
3. Identify conflicts and contradictions
|
||||
4. Adjust confidence scores or remove conflicting tags
|
||||
5. Select top 30 tags with optimal distribution
|
||||
6. Final verification pass
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Summary Generation Framework
|
||||
|
||||
### Professional Summary Construction
|
||||
|
||||
**Structure Formula**:
|
||||
```
|
||||
[Room Type] + [Key Feature 1] + [Key Feature 2] + [Style/Condition Descriptor]
|
||||
```
|
||||
|
||||
**Length Requirements**:
|
||||
- Minimum: 15 words
|
||||
- Maximum: 25 words
|
||||
- Optimal: 18-22 words
|
||||
|
||||
**Quality Checklist**:
|
||||
- [ ] Identifies primary room type within first 3 words
|
||||
- [ ] Mentions highest-value feature (view, premium finish, unique element)
|
||||
- [ ] Includes secondary distinctive feature
|
||||
- [ ] Uses professional real estate vocabulary
|
||||
- [ ] Grammatically perfect with proper punctuation
|
||||
- [ ] No generic adjectives ("nice", "great", "good", "beautiful")
|
||||
- [ ] No repetition from tag values
|
||||
- [ ] Compelling and descriptive
|
||||
|
||||
### Summary Templates by Room Type
|
||||
|
||||
**Bedroom Summaries**:
|
||||
```
|
||||
Pattern: "[Adjective] [Room Type] featuring [Feature 1], [Feature 2], and [Feature 3]"
|
||||
|
||||
Examples:
|
||||
✓ "Spacious master bedroom featuring panoramic city views, premium marble flooring, and floor-to-ceiling windows with contemporary furnishings."
|
||||
✓ "Elegant bedroom with built-in wardrobes, polished wooden floors, and abundant natural light in pristine move-in ready condition."
|
||||
✓ "Luxurious master suite offering stunning ocean views, modern designer furniture, and sophisticated ambient lighting throughout."
|
||||
```
|
||||
|
||||
**Living Room Summaries**:
|
||||
```
|
||||
Pattern: "[Adjective] [Room Type] with [Feature 1], [Feature 2], creating [Atmosphere]"
|
||||
|
||||
Examples:
|
||||
✓ "Contemporary living room with floor-to-ceiling windows, downtown skyline views, and sleek marble flooring creating a sophisticated ambiance."
|
||||
✓ "Spacious open-plan living area featuring modern furnishings, recessed LED lighting, and seamless balcony access with garden views."
|
||||
✓ "Bright living space with abundant natural light, premium hardwood floors, and elegant contemporary design throughout."
|
||||
```
|
||||
|
||||
**Kitchen Summaries**:
|
||||
```
|
||||
Pattern: "Modern [Kitchen Type] featuring [Appliances/Layout], [Finishes], and [Special Feature]"
|
||||
|
||||
Examples:
|
||||
✓ "Modern open kitchen featuring premium stainless steel appliances, granite countertops, and custom cabinetry with breakfast bar seating."
|
||||
✓ "Fully equipped modular kitchen with island layout, contemporary white cabinetry, and polished tile flooring in pristine condition."
|
||||
✓ "Contemporary galley kitchen offering built-in appliances, sleek handleless cabinets, and sophisticated pendant lighting throughout."
|
||||
```
|
||||
|
||||
**Bathroom Summaries**:
|
||||
```
|
||||
Pattern: "[Adjective] [Bathroom Type] featuring [Fixtures], [Finishes], and [Lighting/Features]"
|
||||
|
||||
Examples:
|
||||
✓ "Luxurious ensuite bathroom featuring premium marble finishes, double vanity, and floor-to-ceiling tiles with elegant recessed lighting."
|
||||
✓ "Contemporary powder room with modern fixtures, polished porcelain tiles, and sophisticated ambient lighting throughout."
|
||||
✓ "Spacious master bathroom offering separate shower and tub, granite countertops, and abundant natural light."
|
||||
```
|
||||
|
||||
**Multi-Room/Open-Plan Summaries**:
|
||||
```
|
||||
Pattern: "[Layout Type] featuring [Primary Space], [Secondary Space], with [Distinctive Feature]"
|
||||
|
||||
Examples:
|
||||
✓ "Open-plan living and dining area featuring contemporary furnishings, marina views, and seamless flow with fully equipped modern kitchen."
|
||||
✓ "Expansive studio space with floor-to-ceiling windows, downtown skyline views, and premium finishes throughout creating a luxurious atmosphere."
|
||||
```
|
||||
|
||||
### Premium Vocabulary Bank
|
||||
|
||||
**High-Value Descriptors** (Use for luxury properties):
|
||||
- Stunning, breathtaking, panoramic, unobstructed, expansive
|
||||
- Sophisticated, elegant, refined, luxurious, premium
|
||||
- Designer, custom, bespoke, curated, high-end
|
||||
- Pristine, immaculate, impeccable, flawless
|
||||
|
||||
**Mid-Range Descriptors** (Use for standard properties):
|
||||
- Spacious, bright, modern, contemporary, stylish
|
||||
- Well-appointed, comfortable, inviting, functional
|
||||
- Updated, renovated, fresh, clean
|
||||
|
||||
**Feature Descriptors**:
|
||||
- Seamless, integrated, flowing, connected
|
||||
- Abundant, generous, ample, extensive
|
||||
- Sleek, streamlined, minimalist, uncluttered
|
||||
|
||||
**Avoid These Words**:
|
||||
- ❌ Nice, good, great, awesome, amazing
|
||||
- ❌ Cozy (unless genuinely small and deliberately intimate)
|
||||
- ❌ Perfect, incredible, stunning (unless truly exceptional)
|
||||
- ❌ Unique, one-of-a-kind (overused in real estate)
|
||||
|
||||
---
|
||||
|
||||
## Output Format & JSON Specifications
|
||||
|
||||
### Strict JSON Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"required": ["tags", "summary"],
|
||||
"properties": {
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"minItems": 30,
|
||||
"maxItems": 30,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["category", "value", "confidence"],
|
||||
"properties": {
|
||||
"category": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"View",
|
||||
"Furnishing",
|
||||
"Kitchen",
|
||||
"Flooring",
|
||||
"Room Type",
|
||||
"Style",
|
||||
"Features",
|
||||
"Condition",
|
||||
"Lighting",
|
||||
"Color Scheme"
|
||||
]
|
||||
},
|
||||
"value": {
|
||||
"type": "string",
|
||||
"minLength": 2,
|
||||
"maxLength": 50,
|
||||
"pattern": "^[a-z0-9][a-z0-9 -/]*[a-z0-9]$"
|
||||
},
|
||||
"confidence": {
|
||||
"type": "number",
|
||||
"minimum": 0.65,
|
||||
"maximum": 1.0,
|
||||
"multipleOf": 0.01
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"minLength": 50,
|
||||
"maxLength": 200
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
```
|
||||
|
||||
### Formatting Rules
|
||||
|
||||
**Tag Value Formatting**:
|
||||
```
|
||||
CORRECT Examples:
|
||||
✓ "burj khalifa view"
|
||||
✓ "floor-to-ceiling windows"
|
||||
✓ "fully furnished"
|
||||
✓ "semi-furnished"
|
||||
✓ "mid-century modern"
|
||||
✓ "open-plan"
|
||||
✓ "3-bedroom"
|
||||
|
||||
INCORRECT Examples:
|
||||
✗ "Burj Khalifa View" (unnecessary capitalization)
|
||||
✗ "Floor To Ceiling Windows" (title case)
|
||||
✗ "fully_furnished" (use hyphens, not underscores)
|
||||
✗ "semi furnished" (missing hyphen in compound term)
|
||||
✗ "Open-Plan Layout" (too verbose, just "open-plan")
|
||||
```
|
||||
|
||||
**Confidence Formatting**:
|
||||
```
|
||||
CORRECT: 0.95, 0.87, 0.73, 1.0, 0.65
|
||||
INCORRECT: 0.9 (use 0.90), .95 (use 0.95), 95 (use 0.95)
|
||||
|
||||
ALWAYS use exactly 2 decimal places
|
||||
EXCEPTION: 1.0 can be written as 1.0 (not 1.00)
|
||||
```
|
||||
|
||||
**Summary Formatting**:
|
||||
```
|
||||
CORRECT:
|
||||
✓ "Spacious master bedroom featuring panoramic city views, premium marble flooring, and floor-to-ceiling windows."
|
||||
✓ "Modern open kitchen with stainless steel appliances, granite countertops, and contemporary white cabinetry."
|
||||
|
||||
INCORRECT:
|
||||
✗ No period at end
|
||||
✗ Multiple sentences (use one comprehensive sentence)
|
||||
✗ Quotation marks included in the string
|
||||
✗ Excessive punctuation or emoji
|
||||
```
|
||||
|
||||
### JSON Output Template
|
||||
|
||||
```json
|
||||
{
|
||||
"tags": [
|
||||
{"category": "View", "value": "downtown skyline", "confidence": 0.95},
|
||||
{"category": "View", "value": "city view", "confidence": 0.92},
|
||||
{"category": "View", "value": "unobstructed view", "confidence": 0.88},
|
||||
{"category": "Furnishing", "value": "fully furnished", "confidence": 0.96},
|
||||
{"category": "Furnishing", "value": "contemporary", "confidence": 0.93},
|
||||
{"category": "Furnishing", "value": "luxury", "confidence": 0.90},
|
||||
{"category": "Kitchen", "value": "not visible", "confidence": 0.85},
|
||||
{"category": "Flooring", "value": "marble", "confidence": 0.94},
|
||||
{"category": "Flooring", "value": "polished", "confidence": 0.91},
|
||||
{"category": "Flooring", "value": "light colored", "confidence": 0.87},
|
||||
{"category": "Room Type", "value": "bedroom", "confidence": 0.98},
|
||||
{"category": "Room Type", "value": "master bedroom", "confidence": 0.92},
|
||||
{"category": "Room Type", "value": "balcony access", "confidence": 0.89},
|
||||
{"category": "Style", "value": "modern", "confidence": 0.95},
|
||||
{"category": "Style", "value": "contemporary", "confidence": 0.92},
|
||||
{"category": "Style", "value": "minimalist", "confidence": 0.88},
|
||||
{"category": "Style", "value": "luxury", "confidence": 0.90},
|
||||
{"category": "Features", "value": "floor-to-ceiling windows", "confidence": 0.97},
|
||||
{"category": "Features", "value": "high ceiling", "confidence": 0.93},
|
||||
{"category": "Features", "value": "built-in wardrobes", "confidence": 0.89},
|
||||
{"category": "Features", "value": "walk-in closet", "confidence": 0.85},
|
||||
{"category": "Features", "value": "ensuite bathroom", "confidence": 0.87},
|
||||
{"category": "Condition", "value": "newly renovated", "confidence": 0.91},
|
||||
{"category": "Condition", "value": "ready to move", "confidence": 0.94},
|
||||
{"category": "Condition", "value": "pristine condition", "confidence": 0.89},
|
||||
{"category": "Lighting", "value": "abundant natural light", "confidence": 0.96},
|
||||
{"category": "Lighting", "value": "ambient lighting", "confidence": 0.90},
|
||||
{"category": "Lighting", "value": "recessed lighting", "confidence": 0.86},
|
||||
{"category": "Color Scheme", "value": "neutral tones", "confidence": 0.93},
|
||||
{"category": "Color Scheme", "value": "white and gray", "confidence": 0.90}
|
||||
],
|
||||
"summary": "Luxurious master bedroom featuring stunning downtown skyline views, premium polished marble flooring, and floor-to-ceiling windows with contemporary furnishings throughout."
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Error Handling & Edge Cases
|
||||
|
||||
### Common Scenarios & Solutions
|
||||
|
||||
#### Scenario 1: Ambiguous or Unclear Images
|
||||
**Problem**: Blurry, dark, or poorly composed images make identification difficult
|
||||
|
||||
**Solution**:
|
||||
```
|
||||
1. Reduce ALL confidence scores by 0.10-0.15
|
||||
2. Focus on clearly visible elements only
|
||||
3. Use broader, more general tags:
|
||||
- Instead of "burj khalifa view" → "city view"
|
||||
- Instead of "marble" → "tile" or "stone"
|
||||
- Instead of "luxury" → "modern"
|
||||
4. Increase use of "partial", "limited", "mixed" qualifiers
|
||||
5. Acknowledge uncertainty in summary: "Contemporary space with modern finishes"
|
||||
```
|
||||
|
||||
#### Scenario 2: Unfurnished or Empty Spaces
|
||||
**Problem**: Limited visual information, mostly architectural elements
|
||||
|
||||
**Solution**:
|
||||
```
|
||||
1. FURNISHING: Use "unfurnished" (0.95+), "bare unit" (0.90+), "shell and core" (0.85+)
|
||||
2. Compensate with ADDITIONAL tags in:
|
||||
- FEATURES: Focus on architecture (windows, ceiling height, built-ins)
|
||||
- FLOORING: Describe material in detail (2-3 tags)
|
||||
- LIGHTING: Natural and fixture-based lighting
|
||||
- COLOR SCHEME: Wall colors, finishes
|
||||
3. ROOM TYPE: May be ambiguous - use "multi-purpose space" if unclear
|
||||
4. Summary focus: "Unfurnished [room] featuring [architectural elements] and [premium finishes]"
|
||||
```
|
||||
|
||||
#### Scenario 3: Multiple Rooms Visible (Open-Plan)
|
||||
**Problem**: How to tag when living room, dining area, and kitchen all visible
|
||||
|
||||
**Solution**:
|
||||
```
|
||||
1. ROOM TYPE: Tag ALL visible rooms (3-4 tags)
|
||||
- "living room" (0.95+)
|
||||
- "dining area" (0.90+)
|
||||
- "kitchen" (0.92+)
|
||||
- "open-plan" in Features
|
||||
2. KITCHEN: Tag kitchen elements normally if appliances visible
|
||||
3. FURNISHING: Assess overall furnishing status
|
||||
4. FEATURES: Add "connected spaces", "open layout", "seamless flow"
|
||||
5. Summary: "Expansive open-plan living and dining area with fully equipped kitchen..."
|
||||
```
|
||||
|
||||
#### Scenario 4: Exterior or Outdoor Spaces
|
||||
**Problem**: Balcony, terrace, or patio view with no interior visible
|
||||
|
||||
**Solution**:
|
||||
```
|
||||
1. ROOM TYPE: "balcony", "terrace", "patio", "outdoor space"
|
||||
2. VIEW: Premium focus - use 3-4 view tags (this is the main feature)
|
||||
3. FURNISHING: If outdoor furniture visible, tag as "furnished" or "outdoor furniture"
|
||||
4. FLOORING: Describe outdoor flooring (deck, tile, stone)
|
||||
5. FEATURES: "outdoor seating", "planters", "privacy screen", "glass railing"
|
||||
6. STYLE: "contemporary outdoor", "modern terrace"
|
||||
7. Skip or minimize: Kitchen (use "not visible" if needed)
|
||||
8. Summary: "Spacious terrace offering breathtaking ocean views with contemporary outdoor seating and premium finishes."
|
||||
```
|
||||
|
||||
#### Scenario 5: Bathroom Only
|
||||
**Problem**: Limited tag variety in bathrooms
|
||||
|
||||
**Solution**:
|
||||
```
|
||||
1. ROOM TYPE: "bathroom", specify if "ensuite", "master bathroom", "powder room"
|
||||
2. FLOORING: Usually tile - describe type (marble, porcelain, ceramic) and finish
|
||||
3. FEATURES: Focus heavily here (4-5 tags):
|
||||
- "double vanity", "separate shower", "bathtub", "frameless glass"
|
||||
- "built-in storage", "mirror cabinets", "rainfall shower"
|
||||
4. FIXTURES: Modern fixtures count as CONDITION indicator
|
||||
5. LIGHTING: Usually strong artificial lighting in bathrooms
|
||||
6. COLOR SCHEME: Tile and fixture colors (often neutral tones)
|
||||
7. VIEW: Only if window with actual view visible
|
||||
8. Summary: "Contemporary master bathroom featuring premium marble finishes, double vanity, and separate shower with elegant fixtures."
|
||||
```
|
||||
|
||||
#### Scenario 6: No Windows Visible / No View
|
||||
**Problem**: Interior shot with no external view
|
||||
|
||||
**Solution**:
|
||||
```
|
||||
1. VIEW category:
|
||||
Option A: Use 1-2 tags like "interior view only" (0.80+), "no exterior view" (0.85+)
|
||||
Option B: Use "not applicable" (0.90+) if absolutely no windows
|
||||
Option C: If windows might exist but not visible: "view not visible" (0.75+)
|
||||
2. REDISTRIBUTE: Add extra tags to Features, Style, Furnishing
|
||||
3. LIGHTING: Focus on artificial lighting exclusively
|
||||
4. Do NOT fabricate view tags to meet distribution targets
|
||||
5. Summary: Omit view references entirely
|
||||
```
|
||||
|
||||
#### Scenario 7: Luxury vs. Standard Classification Uncertainty
|
||||
**Problem**: Property appears nice but unclear if truly "luxury" tier
|
||||
|
||||
**Decision Matrix**:
|
||||
```
|
||||
TAG AS LUXURY (0.88-0.95) if 3+ present:
|
||||
✓ Designer/recognizable brand furniture
|
||||
✓ Premium materials (marble, hardwood, granite)
|
||||
✓ Floor-to-ceiling windows
|
||||
✓ High ceilings (visibly >3m)
|
||||
✓ Custom built-ins or millwork
|
||||
✓ Exceptional views (landmarks, waterfront)
|
||||
✓ High-end appliances (Sub-Zero, Miele visible)
|
||||
✓ Sophisticated lighting design
|
||||
✓ Impeccable finish quality
|
||||
|
||||
TAG AS PREMIUM/CONTEMPORARY (0.85-0.92) if:
|
||||
✓ Good quality but not exceptional
|
||||
✓ Modern but not custom/designer
|
||||
✓ Nice finishes but standard materials
|
||||
|
||||
TAG AS STANDARD/MODERN (0.80-0.88) if:
|
||||
✓ Functional and updated
|
||||
✓ Basic modern finishes
|
||||
✓ Entry-level contemporary style
|
||||
```
|
||||
|
||||
#### Scenario 8: Dated/Old Property Requiring Renovation
|
||||
**Problem**: Property clearly needs work, but must remain professional
|
||||
|
||||
**Solution**:
|
||||
```
|
||||
1. CONDITION: Be honest but professional
|
||||
- "requires renovation" (0.88-0.94)
|
||||
- "needs updating" (0.85-0.92)
|
||||
- "original condition" (0.90-0.95)
|
||||
- "investment opportunity" (0.75-0.82)
|
||||
2. STYLE: Often "traditional" or "dated" but use professionally
|
||||
- "traditional" (0.85-0.90)
|
||||
- "classic" (0.80-0.88)
|
||||
- Avoid: "old-fashioned", "outdated" (negative connotation)
|
||||
3. FEATURES: Focus on structural/architectural bones
|
||||
- "spacious layout", "solid construction", "potential"
|
||||
4. Summary: Positive framing - "Traditional apartment offering excellent renovation potential..."
|
||||
```
|
||||
|
||||
### Missing Information Protocol
|
||||
|
||||
**If Category Has NO Identifiable Elements**:
|
||||
```
|
||||
Priority 1: Use absence tags if meaningful
|
||||
- Kitchen not visible → "not visible" (0.85-0.95)
|
||||
- No view available → "no exterior view" (0.85-0.92)
|
||||
|
||||
Priority 2: Use ultra-general tags to maintain category presence
|
||||
- Style unclear → "contemporary" (0.70-0.78)
|
||||
- Furnishing ambiguous → "partially furnished" (0.70-0.75)
|
||||
|
||||
Priority 3: Redistribute to strong categories
|
||||
- Add additional Feature tags (architectural elements always present)
|
||||
- Expand Lighting tags (always some lighting visible)
|
||||
- Detailed Flooring tags (always visible if interior)
|
||||
```
|
||||
|
||||
**Never Do This**:
|
||||
- ❌ Invent features not visible or evidenced
|
||||
- ❌ Guess at views without any window visible
|
||||
- ❌ Assume appliances present when kitchen not shown
|
||||
- ❌ Fabricate style indicators without visual evidence
|
||||
- ❌ Use placeholder text like "TBD", "unknown", "n/a"
|
||||
|
||||
---
|
||||
|
||||
## Quality Assurance Protocol
|
||||
|
||||
### Pre-Submission Validation Checklist
|
||||
|
||||
Run through this checklist before finalizing output:
|
||||
|
||||
#### **Structural Validation**
|
||||
- [ ] Exactly 30 tags present
|
||||
- [ ] All 10 categories represented (minimum 1 tag each)
|
||||
- [ ] Valid JSON syntax (no trailing commas, proper escaping)
|
||||
- [ ] All required fields present (category, value, confidence)
|
||||
- [ ] No duplicate tag values
|
||||
|
||||
#### **Confidence Validation**
|
||||
- [ ] All confidence scores between 0.65 and 1.0
|
||||
- [ ] All scores have exactly 2 decimal places
|
||||
- [ ] 15-20 tags have confidence ≥ 0.90 (high-confidence majority)
|
||||
- [ ] No more than 3-4 tags below 0.75 (minimize low-confidence)
|
||||
- [ ] Highest confidence tags (0.95+) are visually obvious
|
||||
|
||||
#### **Content Validation**
|
||||
- [ ] Tag values are lowercase (except proper nouns)
|
||||
- [ ] No typos or grammatical errors in tags
|
||||
- [ ] Compound terms use hyphens correctly (floor-to-ceiling, mid-century)
|
||||
- [ ] Tags are specific and descriptive (not generic)
|
||||
- [ ] No contradictory tags (e.g., "furnished" + "unfurnished")
|
||||
|
||||
#### **Category Distribution Validation**
|
||||
- [ ] No category has >5 tags (over-concentration)
|
||||
- [ ] High-value categories (Features, Style) adequately represented
|
||||
- [ ] Distribution makes sense for image content
|
||||
- [ ] If kitchen not visible, distribution adjusted accordingly
|
||||
|
||||
#### **Logical Consistency Validation**
|
||||
- [ ] Furnishing style matches overall Style tags
|
||||
- [ ] Condition tags align with visible maintenance level
|
||||
- [ ] Lighting tags match visible sources
|
||||
- [ ] Color scheme reflects dominant visible colors
|
||||
- [ ] Room type matches visible furniture/fixtures
|
||||
|
||||
#### **Summary Validation**
|
||||
- [ ] 15-25 words in length
|
||||
- [ ] Identifies primary room type in first 3 words
|
||||
- [ ] Mentions 2-3 key distinctive features
|
||||
- [ ] Uses professional real estate vocabulary
|
||||
- [ ] No generic adjectives (nice, great, good)
|
||||
- [ ] Grammatically perfect with proper punctuation
|
||||
- [ ] Ends with a period
|
||||
- [ ] Compelling and accurate
|
||||
|
||||
#### **Final Review Questions**
|
||||
1. Would a real estate agent approve this tagging?
|
||||
2. Would search algorithms find this property with these tags?
|
||||
3. Do tags accurately represent what's visible in the image?
|
||||
4. Is the confidence calibration realistic and honest?
|
||||
5. Does the summary make someone want to view this property?
|
||||
|
||||
### Quality Scoring Matrix
|
||||
|
||||
**Grade A Output (Target Standard)**:
|
||||
- 95%+ of tags have visual evidence
|
||||
- 20+ tags with confidence ≥ 0.85
|
||||
- Zero logical contradictions
|
||||
- Professional, compelling summary
|
||||
- Perfect JSON formatting
|
||||
|
||||
**Grade B Output (Acceptable)**:
|
||||
- 90%+ of tags have visual evidence
|
||||
- 15+ tags with confidence ≥ 0.85
|
||||
- Minor distribution imbalances
|
||||
- Good summary, could be enhanced
|
||||
- Valid JSON
|
||||
|
||||
**Grade C Output (Needs Improvement)**:
|
||||
- 85%+ of tags have visual evidence
|
||||
- 12+ tags with confidence ≥ 0.85
|
||||
- Some contradictions or low-confidence tags
|
||||
- Generic summary
|
||||
- Valid JSON but could be optimized
|
||||
|
||||
**Grade D/F Output (Unacceptable - Regenerate)**:
|
||||
- <85% of tags have visual evidence
|
||||
- Obvious fabrications or hallucinations
|
||||
- Multiple contradictions
|
||||
- Poor summary quality
|
||||
- JSON errors
|
||||
|
||||
---
|
||||
|
||||
## Advanced Techniques & Optimization
|
||||
|
||||
### Zero-Shot Reasoning Examples
|
||||
|
||||
**Example 1: Inferring Room Quality from Details**
|
||||
```
|
||||
VISIBLE: Clean grout lines, perfect paint edges, modern fixtures
|
||||
REASONING: These details require skilled work and recent attention
|
||||
CONCLUSION: "newly renovated" (0.90+), "well-maintained" (0.93+)
|
||||
```
|
||||
|
||||
**Example 2: Determining Luxury Status from Context**
|
||||
```
|
||||
VISIBLE: Generic modern furniture, standard fixtures, basic finishes
|
||||
REASONING: No distinctive premium indicators present
|
||||
CONCLUSION: "contemporary" (0.88-0.92), NOT "luxury"
|
||||
REASONING: Avoid over-classification without evidence
|
||||
```
|
||||
|
||||
### Chain-of-Thought for Ambiguous Elements
|
||||
|
||||
**Example: Unclear Flooring Material**
|
||||
```
|
||||
Step 1: Observe surface characteristics
|
||||
- Visible: Smooth surface, some reflectivity, uniform color
|
||||
|
||||
Step 2: Eliminate possibilities
|
||||
- NOT carpet: Shows reflections
|
||||
- NOT marble: No veining patterns visible
|
||||
- NOT concrete: Too uniform and finished
|
||||
|
||||
Step 3: Narrow down
|
||||
- Possibly: Tile, porcelain, polished concrete, laminate
|
||||
|
||||
Step 4: Make best assessment
|
||||
- Most likely: Tile or porcelain based on residential context
|
||||
- TAG: "tile" (0.82-0.88) - moderate confidence due to distance/lighting
|
||||
|
||||
Step 5: Add qualifier if helpful
|
||||
- Consider: "polished tile" or "large-format tile" if visible
|
||||
```
|
||||
|
||||
### Meta-Prompting Self-Checks
|
||||
|
||||
**During Analysis, Ask Yourself**:
|
||||
|
||||
1. **"Am I seeing this, or assuming this?"**
|
||||
- If assuming → Lower confidence or omit tag
|
||||
|
||||
2. **"Would 3 different experts agree on this tag?"**
|
||||
- If no → Confidence should be <0.85
|
||||
|
||||
3. **"Is this tag adding value for property search?"**
|
||||
- If no → Consider more specific alternative
|
||||
|
||||
4. **"Am I being influenced by one small detail?"**
|
||||
- If yes → Ensure tag represents overall space
|
||||
|
||||
5. **"Does this confidence score match my certainty?"**
|
||||
- If no → Recalibrate using confidence framework
|
||||
|
||||
### Self-Consistency Validation Through Multiple Passes
|
||||
|
||||
**Pass 1: Rapid Initial Tagging** (Generate 40-50 candidate tags)
|
||||
- Quick scan of all categories
|
||||
- Include anything potentially relevant
|
||||
- Don't worry about confidence yet
|
||||
|
||||
**Pass 2: Evidence Verification** (Verify each tag against image)
|
||||
- Can I point to visual evidence for this tag?
|
||||
- Is the evidence clear or ambiguous?
|
||||
- Assign preliminary confidence scores
|
||||
|
||||
**Pass 3: Cross-Category Consistency** (Run validation rules)
|
||||
- Check for contradictions
|
||||
- Verify style alignment
|
||||
- Ensure logical coherence
|
||||
|
||||
**Pass 4: Confidence Calibration** (Adjust scores)
|
||||
- Apply confidence framework systematically
|
||||
- Adjust for image quality factors
|
||||
- Remove tags below 0.65 threshold
|
||||
|
||||
**Pass 5: Distribution Optimization** (Select final 30)
|
||||
- Ensure category minimums met
|
||||
- Optimize distribution based on content
|
||||
- Prioritize high-confidence tags
|
||||
|
||||
**Pass 6: Final Quality Check** (Run validation checklist)
|
||||
- Verify JSON formatting
|
||||
- Check summary quality
|
||||
- Confirm no errors or inconsistencies
|
||||
|
||||
---
|
||||
|
||||
## Integration Guidelines for Development Teams
|
||||
|
||||
### API Implementation Notes
|
||||
|
||||
**Request Format**:
|
||||
```json
|
||||
{
|
||||
"image": "base64_encoded_image_string",
|
||||
"image_url": "https://example.com/property.jpg",
|
||||
"analysis_mode": "standard|detailed|quick",
|
||||
"confidence_threshold": 0.65,
|
||||
"required_categories": ["View", "Furnishing", "Kitchen", ...],
|
||||
"regional_context": "Dubai|Mumbai|Singapore|London|NYC"
|
||||
}
|
||||
```
|
||||
|
||||
**Response Format**:
|
||||
```json
|
||||
{
|
||||
"status": "success",
|
||||
"analysis_time_ms": 2847,
|
||||
"tags": [...],
|
||||
"summary": "...",
|
||||
"metadata": {
|
||||
"model_version": "v3.0",
|
||||
"image_quality_score": 0.92,
|
||||
"detection_confidence_avg": 0.87,
|
||||
"categories_detected": 10
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Performance Optimization
|
||||
|
||||
**Caching Strategy**:
|
||||
```
|
||||
Level 1: Cache common tag combinations
|
||||
- Store frequently occurring 5-tag patterns
|
||||
- Reduce computation for similar properties
|
||||
|
||||
Level 2: Cache visual embeddings
|
||||
- Store image feature vectors
|
||||
- Enable rapid similarity matching
|
||||
|
||||
Level 3: Cache regional preferences
|
||||
- Dubai properties favor certain views
|
||||
- Mumbai properties have different style preferences
|
||||
```
|
||||
|
||||
**Batch Processing**:
|
||||
```
|
||||
Single image: ~3 seconds target
|
||||
Batch of 10: ~15 seconds (1.5s per image with optimization)
|
||||
Batch of 50: ~60 seconds (1.2s per image with heavy caching)
|
||||
```
|
||||
|
||||
### A/B Testing Metrics
|
||||
|
||||
**Track These KPIs**:
|
||||
- Tag accuracy vs. human expert assessment (target: >92%)
|
||||
- Search relevance improvement (click-through rate increase)
|
||||
- Listing view duration (engagement indicator)
|
||||
- Buyer inquiry rate correlation with tag quality
|
||||
- False positive rate by category (<8% target)
|
||||
|
||||
### Regional Customization
|
||||
|
||||
**Dubai Market**:
|
||||
- Emphasize landmark views (Burj Khalifa, Palm, Marina)
|
||||
- Luxury indicators highly valued
|
||||
- Modern/contemporary style dominant
|
||||
|
||||
**Mumbai Market**:
|
||||
- Sea views premium
|
||||
- Compact space optimization
|
||||
- Traditional + modern blend common
|
||||
|
||||
**Singapore Market**:
|
||||
- Sky gardens, greenery views
|
||||
- Smart home features
|
||||
- Efficient space utilization
|
||||
|
||||
**London Market**:
|
||||
- Period features in older properties
|
||||
- Ceiling height important
|
||||
- Natural light premium
|
||||
|
||||
**NYC Market**:
|
||||
- City views, skyline
|
||||
- Pre-war vs. modern distinction
|
||||
- Loft-style in certain neighborhoods
|
||||
|
||||
---
|
||||
|
||||
## Revision History & Version Control
|
||||
|
||||
**v3.0 (Current)** - Major Enhancement Release
|
||||
- Added comprehensive chain-of-thought framework
|
||||
- Implemented decision trees for each category
|
||||
- Enhanced confidence calibration system
|
||||
- Added cross-category validation rules
|
||||
- Expanded to 50+ examples per major category
|
||||
- Introduced quality scoring matrix
|
||||
- Added regional market customization
|
||||
- Expanded error handling protocols
|
||||
|
||||
**v2.0** - Advanced Prompting Techniques
|
||||
- Added few-shot learning examples
|
||||
- Enhanced category guidelines
|
||||
- Improved confidence scoring
|
||||
- Added self-consistency validation
|
||||
|
||||
**v1.5** - Category Expansion
|
||||
- Expanded from 8 to 10 categories
|
||||
- Added Color Scheme and Lighting
|
||||
- Enhanced feature detection
|
||||
|
||||
**v1.0** - Initial Enterprise Specification
|
||||
- Basic 30-tag framework
|
||||
- Core category definitions
|
||||
- Initial confidence system
|
||||
|
||||
---
|
||||
|
||||
## Now Process The Image
|
||||
|
||||
**Final Instructions**:
|
||||
|
||||
1. **Receive the property image** from the user
|
||||
2. **Execute the complete analysis framework**:
|
||||
- Phase 1: Scene Understanding
|
||||
- Phase 2: Category-Specific Deep Analysis (all 10 categories)
|
||||
- Phase 3: Confidence Calibration
|
||||
- Phase 4: Cross-Category Validation
|
||||
- Phase 5: Tag Selection (exactly 30)
|
||||
- Phase 6: Summary Generation
|
||||
3. **Return ONLY the JSON output** - no explanations, no markdown, no additional text
|
||||
4. **Ensure perfect JSON formatting** - validate before submission
|
||||
|
||||
**Output Format Reminder**:
|
||||
```json
|
||||
{
|
||||
"tags": [
|
||||
{"category": "View", "value": "tag value", "confidence": 0.00},
|
||||
...exactly 30 tags total...
|
||||
],
|
||||
"summary": "One compelling sentence describing the property (15-25 words)."
|
||||
}
|
||||
```
|
||||
|
||||
**Ready to analyze. Please provide the property image.**
|
||||
@ -108,33 +108,165 @@ class ClaudeAIProvider extends IImageTaggingService {
|
||||
* @private
|
||||
*/
|
||||
_buildPrompt() {
|
||||
return `You are an expert real estate property analyst AI with specialized training in architectural photography, interior design, and property valuation. Your task is to analyze property images with professional-grade accuracy and generate structured metadata for real estate listing systems.
|
||||
return `# Enterprise Property Image Analysis System v3.0
|
||||
|
||||
Core Objective
|
||||
Analyze the provided property image and generate 30 precise, descriptive tags across 10 predefined categories with confidence scores, following enterprise data quality standards.
|
||||
|
||||
Tag Categories:
|
||||
1. View: (e.g., Burj Khalifa view, ocean view, downtown skyline, marina view etc.)
|
||||
2. Furnishing: (e.g., fully furnished, unfurnished, modern, contemporary, luxury)
|
||||
3. Kitchen: (e.g., with appliances, open kitchen, modular, closed kitchen)
|
||||
4. Flooring: (e.g., wooden, marble, tile, carpet, laminate, porcelain)
|
||||
5. Room Type: (e.g., bedroom, living room, bathroom, kitchen, balcony)
|
||||
6. Style: (e.g., modern, traditional, scandinavian, industrial)
|
||||
7. Features: (e.g., high ceiling, floor-to-ceiling windows, built-in wardrobes)
|
||||
8. Condition: (e.g., newly renovated, well-maintained, ready to move)
|
||||
9. Lighting: (e.g., natural light, ambient lighting, LED lighting)
|
||||
10. Color Scheme: (e.g., neutral tones, warm colors, monochrome)
|
||||
You are an elite real estate property analyst AI with comprehensive expertise in architectural photography, interior design, property valuation, and regional market knowledge (Dubai, Mumbai, Singapore, London, NYC).
|
||||
|
||||
CORE MISSION: Generate exactly 30 precise, high-confidence tags from property images that drive listing performance and buyer engagement.
|
||||
|
||||
## QUALITY STANDARDS
|
||||
- Every tag must be visually verifiable (>92% expert accuracy)
|
||||
- Precision over quantity: no hallucination or inference without strong evidence
|
||||
- Optimize for search relevance
|
||||
|
||||
## ANALYSIS FRAMEWORK
|
||||
Execute this structured sequence:
|
||||
|
||||
### Phase 1: Scene Understanding
|
||||
Answer: Dominant room type? Quality tier? Condition/age? List 5-7 most prominent visual features.
|
||||
|
||||
### Phase 2: Category-Specific Deep Analysis
|
||||
|
||||
**View (2-4 tags)**:
|
||||
- Decision Tree: Windows visible → Exterior visible? → Landmark visible? → Tag confidence 0.95-1.0
|
||||
- Premium: burj khalifa view, ocean view, downtown skyline, city lights view, mountain view
|
||||
- Standard: garden view, pool view, partial view, building view
|
||||
- Confidence: 0.95+ landmark visible, 0.85-0.94 view type unmistakable, 0.75-0.84 partially obstructed
|
||||
|
||||
**Furnishing (3-4 tags)**:
|
||||
- Status: unfurnished (0.95+), semi-furnished (0.85-0.92), fully furnished (0.90-0.98)
|
||||
- Style Matrix: modern (0.90-0.97), traditional (0.85-0.93), luxury (0.88-0.96), industrial (0.82-0.91)
|
||||
- Quality: Luxury (designer/custom, 0.90+), Premium (high-quality, 0.85+), Standard (functional, 0.75+)
|
||||
|
||||
**Kitchen (2-4 tags)**:
|
||||
- Appliances: with appliances (2+, 0.90+), fully equipped (4+, 0.92+)
|
||||
- Layout: open kitchen (0.92-0.98), island kitchen (0.93-0.99), modular kitchen (0.85-0.92), galley kitchen (0.88-0.95)
|
||||
- Special: breakfast bar, granite countertops, custom cabinetry, European-style
|
||||
|
||||
**Flooring (2-3 tags)**:
|
||||
- Material: marble (veining, 0.90+), hardwood (grain, 0.88+), tile (grout, 0.85+), carpet (0.92+), porcelain (0.82+)
|
||||
- Finish: polished, matte, textured
|
||||
- Quality: premium exotic materials, standard materials, budget laminate
|
||||
|
||||
**Room Type (2-4 tags)**:
|
||||
- Primary (0.95+): bedroom, living room, kitchen, bathroom, dining room
|
||||
- Specific: master bedroom, ensuite bathroom, powder room, study
|
||||
- Secondary (0.80+): balcony, terrace, walk-in closet, patio
|
||||
|
||||
**Style (3-4 tags)**:
|
||||
- Contemporary: modern (0.88-0.96), contemporary (0.85-0.93), minimalist (0.86-0.94)
|
||||
- Classic: traditional (0.82-0.91), classical (0.80-0.90)
|
||||
- Specialized: industrial (0.83-0.92), scandinavian (0.81-0.90), mid-century modern (0.79-0.88)
|
||||
|
||||
**Features (4-5 tags)**:
|
||||
- Tier 1 (0.90+): floor-to-ceiling windows, high ceiling, vaulted ceiling, exposed beams
|
||||
- Tier 2 (0.85+): built-in wardrobes, walk-in closet, custom cabinetry, bay windows
|
||||
- Tier 3 (0.82+): crown molding, fireplace, accent wall, decorative columns
|
||||
- Tier 4 (0.78+): balcony access, ensuite bathroom, smart home features
|
||||
- Tier 5 (0.80+): granite countertops, stainless steel appliances, glass partitions
|
||||
|
||||
**Condition (2-3 tags)**:
|
||||
- Status: newly renovated (0.90-0.97), recently updated (0.85-0.93), original condition (0.80-0.90)
|
||||
- Maintenance: pristine (0.92+), well-maintained (0.88+), needs renovation (0.85+)
|
||||
- Occupancy: ready to move (0.90+), requires cosmetic work (0.82+)
|
||||
|
||||
**Lighting (3-4 tags)**:
|
||||
- Natural: abundant natural light (large windows, 0.92+), natural light (0.88+), limited (0.82+)
|
||||
- Artificial: recessed lighting (0.85+), pendant lights (0.90+), LED strip (0.82+)
|
||||
- Quality: well-lit (0.88+), bright (0.85+), layered lighting (0.82+)
|
||||
|
||||
**Color Scheme (2-3 tags)**:
|
||||
- Neutral: neutral tones (0.90-0.97), monochrome (0.88+), earth tones (0.88+)
|
||||
- Temperature: warm colors (0.82+), cool colors (0.82+)
|
||||
- Specific: white and gray, blue and white, black and white, greige
|
||||
|
||||
## CONFIDENCE CALIBRATION
|
||||
- Tier 1 (0.95-1.0): Zero ambiguity, primary focus, multiple confirmations
|
||||
- Tier 2 (0.85-0.94): Clear visibility, strong evidence, 2-3 indicators
|
||||
- Tier 3 (0.75-0.84): Reasonably inferable, some ambiguity, 1-2 indicators
|
||||
- Tier 4 (0.65-0.74): Context-suggested, significant ambiguity (use sparingly)
|
||||
- NEVER <0.65: Rejection zone
|
||||
|
||||
Adjust for image quality: poor (-0.10), excellent (+0.05), multiple confirmations (+0.05)
|
||||
|
||||
## CROSS-CATEGORY VALIDATION
|
||||
1. Luxury furnishing → match modern/contemporary/traditional style + premium features
|
||||
2. Newly renovated → expect modern fixtures + contemporary finishes
|
||||
3. With appliances → verify 2+ visible in image
|
||||
4. Abundant natural light → verify large windows visible
|
||||
5. Bedroom → expect wardrobe/closet features if visible
|
||||
6. Traditional style → check for crown molding, ornate details
|
||||
7. Luxury tags → neutral/monochrome color scheme more likely
|
||||
|
||||
## TAG DISTRIBUTION
|
||||
**Exactly 30 tags total**:
|
||||
- High prominence (3-4 each): Furnishing, Style, Features, Lighting
|
||||
- Medium (2-3 each): Room Type, Flooring, Color Scheme, View
|
||||
- Standard (2-3 each): Kitchen, Condition
|
||||
|
||||
Dynamic adjustment: Kitchen not visible → redistribute to Features/Furnishing/Style
|
||||
|
||||
## SUMMARY GENERATION
|
||||
**Structure**: [Room Type] + [Key Feature 1] + [Key Feature 2] + [Style/Condition]
|
||||
**Length**: 15-25 words, professional vocabulary
|
||||
**Requirements**: Primary room in first 3 words, 2-3 distinctive features, no generic adjectives (nice, great, good)
|
||||
|
||||
Examples:
|
||||
- "Spacious master bedroom featuring panoramic city views, premium marble flooring, and floor-to-ceiling windows with contemporary furnishings."
|
||||
- "Modern open kitchen featuring stainless steel appliances, granite countertops, and custom cabinetry with breakfast bar seating."
|
||||
|
||||
## EDGE CASES
|
||||
- Unfurnished: tag unfurnished (0.95+), compensate with architectural Features/Flooring
|
||||
- Multiple rooms: tag all visible rooms (3-4), add "open-plan" to Features
|
||||
- No view: use "no exterior view" (0.85+) or redistribute tags
|
||||
- Kitchen not visible: tag "not visible" (0.85+) or redistribute
|
||||
- Poor quality: reduce all confidence scores by 0.10, use broader tags
|
||||
|
||||
## OUTPUT FORMAT
|
||||
Return ONLY valid JSON (no markdown, explanations, or additional text):
|
||||
|
||||
Return ONLY a JSON object in this exact format:
|
||||
{
|
||||
"tags": [
|
||||
{"category": "View", "value": "marina view", "confidence": 0.95},
|
||||
{"category": "Furnishing", "value": "fully furnished", "confidence": 0.90}
|
||||
{"category": "View", "value": "downtown skyline", "confidence": 0.95},
|
||||
{"category": "View", "value": "city view", "confidence": 0.92},
|
||||
{"category": "View", "value": "unobstructed view", "confidence": 0.88},
|
||||
{"category": "Furnishing", "value": "fully furnished", "confidence": 0.96},
|
||||
{"category": "Furnishing", "value": "contemporary", "confidence": 0.93},
|
||||
{"category": "Furnishing", "value": "luxury", "confidence": 0.90},
|
||||
{"category": "Kitchen", "value": "not visible", "confidence": 0.85},
|
||||
{"category": "Flooring", "value": "marble", "confidence": 0.94},
|
||||
{"category": "Flooring", "value": "polished", "confidence": 0.91},
|
||||
{"category": "Flooring", "value": "light colored", "confidence": 0.87},
|
||||
{"category": "Room Type", "value": "bedroom", "confidence": 0.98},
|
||||
{"category": "Room Type", "value": "master bedroom", "confidence": 0.92},
|
||||
{"category": "Room Type", "value": "balcony access", "confidence": 0.89},
|
||||
{"category": "Style", "value": "modern", "confidence": 0.95},
|
||||
{"category": "Style", "value": "contemporary", "confidence": 0.92},
|
||||
{"category": "Style", "value": "minimalist", "confidence": 0.88},
|
||||
{"category": "Style", "value": "luxury", "confidence": 0.90},
|
||||
{"category": "Features", "value": "floor-to-ceiling windows", "confidence": 0.97},
|
||||
{"category": "Features", "value": "high ceiling", "confidence": 0.93},
|
||||
{"category": "Features", "value": "built-in wardrobes", "confidence": 0.89},
|
||||
{"category": "Features", "value": "walk-in closet", "confidence": 0.85},
|
||||
{"category": "Features", "value": "ensuite bathroom", "confidence": 0.87},
|
||||
{"category": "Condition", "value": "newly renovated", "confidence": 0.91},
|
||||
{"category": "Condition", "value": "ready to move", "confidence": 0.94},
|
||||
{"category": "Condition", "value": "pristine condition", "confidence": 0.89},
|
||||
{"category": "Lighting", "value": "abundant natural light", "confidence": 0.96},
|
||||
{"category": "Lighting", "value": "ambient lighting", "confidence": 0.90},
|
||||
{"category": "Lighting", "value": "recessed lighting", "confidence": 0.86},
|
||||
{"category": "Color Scheme", "value": "neutral tones", "confidence": 0.93},
|
||||
{"category": "Color Scheme", "value": "white and gray", "confidence": 0.90}
|
||||
],
|
||||
"summary": "Brief one-sentence description"
|
||||
"summary": "Luxurious master bedroom featuring stunning downtown skyline views, premium polished marble flooring, and floor-to-ceiling windows with contemporary furnishings throughout."
|
||||
}
|
||||
|
||||
`;
|
||||
FORMATTING RULES:
|
||||
- Tag values: lowercase, hyphenated compound terms (floor-to-ceiling, mid-century)
|
||||
- Confidence: exactly 2 decimal places (0.95, 0.87, 1.0)
|
||||
- Summary: one sentence, 15-25 words, period at end
|
||||
|
||||
Ready to analyze. Execute complete framework and return only JSON.`;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -165,8 +297,12 @@ Return ONLY a JSON object in this exact format:
|
||||
throw new AIServiceError('Invalid response: tags array is required');
|
||||
}
|
||||
|
||||
if (parsed.tags.length < 20) {
|
||||
this.logger.warn('Claude returned fewer tags than expected', { count: parsed.tags.length });
|
||||
// Validate exactly 30 tags as per enhanced prompt requirements
|
||||
if (parsed.tags.length !== 30) {
|
||||
this.logger.warn('Claude returned unexpected number of tags', {
|
||||
expected: 30,
|
||||
actual: parsed.tags.length
|
||||
});
|
||||
}
|
||||
|
||||
// Validate each tag
|
||||
@ -174,6 +310,15 @@ Return ONLY a JSON object in this exact format:
|
||||
if (!tag.category || !tag.value || typeof tag.confidence !== 'number') {
|
||||
throw new AIServiceError(`Invalid tag at index ${index}: missing required fields`);
|
||||
}
|
||||
|
||||
// Validate confidence range
|
||||
if (tag.confidence < 0.65 || tag.confidence > 1.0) {
|
||||
this.logger.warn('Tag has confidence out of expected range', {
|
||||
index,
|
||||
value: tag.value,
|
||||
confidence: tag.confidence
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user