cq-test / scripts /system_prompt.txt
BhargavMN
Data - Added scripts and prompts to generate dataset for Scavenger Hunt
468aeda
Raw
History Blame
28.5 kB
## CRITICAL DESIGN PRINCIPLE (READ BEFORE GENERATING)
The model being trained must generalize to **any city it has never seen**.
That means the training data must teach **feature-to-task reasoning**, NOT city-specific memorization.
**Wrong approach (do NOT do this):**
> Input: `city = "Paris"` β†’ Output: `"Find the Eiffel Tower and take a photo"`
**Correct approach:**
> Input: `city = "Paris", landscape = ["iconic_landmark", "river_waterfront", "dense_urban"]`
> β†’ Output: `"Find the most recognizable vertical structure visible from multiple districts and photograph it from street level"`
**KEY FIX #1: The Landmark Rule (from conflict audit fix #1)**
Landmark tasks must reference observable structural properties, NOT tourist salience or proper nouns.
**ALLOWED landmark task patterns:**
- "Find the tallest vertical structure visible from the main plaza. Photograph its base from ground level. How many distinct building materials can you identify?"
- "Locate the widest pedestrian path in the area. At its midpoint, photograph the most commonly-spoken languages on signs."
- "Find a crossing point where two major pedestrian routes intersect. Stand at the intersection center and photograph the four cardinal directions."
**FORBIDDEN landmark task patterns:**
- "Find the Eiffel Tower" β€” proper noun, city-specific
- "Find the most iconic structure" β€” "iconic" = tourist salience, city-specific
- "Find the symbol of this city" β€” requires city identity knowledge
**VERIFICATION:** For every task using the `iconic_landmark` tag, the task description must make sense if you erase the city name. No proper nouns allowed.
---
## SCHEMA DEFINITION
```json
{
"id": "string β€” format: SH-{CITY_CODE}-{INDEX:04d}, e.g. SH-TYO-0042",
"input": {
"game_type": "scavenger_hunt",
"location": {
"city": "string β€” city name",
"country": "string β€” country name",
"city_code": "string β€” 3-letter uppercase code, e.g. PAR, TYO, NYC, CPT",
"landscape_tags": [
"array of strings β€” structural environment types present in this city area.",
"Choose 3–6 from the controlled vocabulary below.",
"These tags are the PRIMARY signal the model learns task generation from."
],
"urban_density": "string β€” one of: sparse | suburban | mixed | dense | hyper_dense",
"climate_zone": "string β€” one of: tropical | arid | mediterranean | temperate | continental | polar",
"area_type": "string β€” one of: city_center | historic_district | waterfront | park_district | mixed_residential | university_campus | market_district | industrial_repurposed"
},
"players": {
"count": "integer β€” 2 to 20",
"team_count": "integer β€” 1 to 5 (1 = solo/all vs all, >1 = team mode)",
"age_group": "string β€” one of: children_only | teens | adults | mixed_family | mixed_adults",
"mobility": "string β€” one of: standard | limited (limited = no stairs, no long distances)"
},
"preferences": {
"duration_minutes": "integer β€” 30, 45, 60, 90, or 120",
"difficulty": "string β€” one of: easy | medium | hard",
"theme": "string β€” one of: observation | history | social | nature | urban_exploration | photography | logic",
"allow_transport": "boolean β€” if false, all tasks must be walkable"
}
},
"output": {
"game_title": "string β€” a creative, thematic title for this specific game instance",
"rules": {
"objective": "string β€” one sentence describing the win condition",
"scoring_method": "string β€” one of: first_to_finish | point_accumulation | timed_bonus (MUST match decision tree)",
"task_reveal_mode": "string β€” one of: sequential | all_at_once | gated_by_points",
"team_rules": "string or null β€” team-specific rule if team_count > 1, else null",
"time_limit_minutes": "integer β€” matches preferences.duration_minutes",
"disqualification_conditions": ["array of strings β€” specific actions that void a team/player"]
},
"safety_constraints": {
"exclusion_zones": ["array of strings β€” types of locations tasks must never send players to (MUST include: private_property, active_roadway, construction_sites, restricted_government_buildings)"],
"physical_limits": ["array of strings β€” physical actions that are prohibited (MUST include: no climbing, no jumping, no water entry, no restricted building entry)"],
"high_risk_conditions": [
{
"condition": "string β€” type of risk (e.g., water_proximity, road_crossing, religious_site_exterior, steep_terrain)",
"applies_if": "string β€” condition for this risk to apply",
"task_restriction": "string β€” how tasks must be adapted",
"supervision": "string β€” supervision guidance"
}
],
"climate_advisory": "string or null β€” climate-specific safety notes (from conflict fix #3)",
"adult_supervision_required": "boolean",
"notes": "string or null"
},
"tasks": [
{
"task_id": "string β€” format T{INDEX:02d}, e.g. T01, T02",
"title": "string β€” short name for this task (shown on card UI)",
"description": "string β€” full player-facing instruction. CRITICAL: Must NOT contain proper nouns (city names, landmarks, brands). Must be achievable using ONLY the landscape_tags present in input. (from conflict fix #1)",
"landscape_tags_used": ["subset of input.location.landscape_tags that this task relies on"],
"task_type": "string β€” one of: find_and_photograph | observe_and_answer | collect_and_return | reach_and_verify | social_interaction | timed_challenge",
"difficulty_contribution": "string β€” one of: easy | medium | hard",
"points": "integer β€” 10 | 20 | 30 | 50 based on difficulty_contribution",
"completion_proof": "string β€” how a player proves this task is done (photo, verbal answer, physical item, GPS checkin, etc.)",
"estimated_time_minutes": "integer β€” realistic time budget for this single task (max 20–30 min depending on type)",
"hints": {
"hint_1": "string β€” directional nudge, 5–15 words, vague location hint, NO proper nouns (from conflict fix #4)",
"hint_2": "string β€” specific clue, 15–30 words, describes feature to look for, NO proper nouns",
"hint_3": "string β€” near-explicit solution, 30–50 words, specific action to complete, NO proper nouns"
},
"safety_flags": ["array of strings β€” any safety notes specific to this task, empty array if none"]
}
],
"task_count": "integer β€” must equal tasks array length",
"total_possible_points": "integer β€” sum of all tasks[].points (+ bonus if present)",
"max_deductible_points": "integer β€” task_count Γ— 10",
"minimum_possible_points": "integer β€” total_possible_points βˆ’ max_deductible_points",
"bonus_task_eligible": "boolean β€” true only if difficulty=hard AND task_count >= 7 AND age_group != children_only",
"bonus_task": {
"description": "string or null β€” ONE optional high-risk TIMED CHALLENGE task worth 50 points. Only present if bonus_task_eligible=true. CRITICAL: MUST be timed_challenge type only, NOT logic puzzle (from conflict fix #6). Null otherwise.",
"completion_proof": "string or null",
"points": "integer or null β€” always 50 if present, null otherwise",
"risk": "string or null β€” what the player risks by attempting it (e.g., time loss, βˆ’20 points on failure, not allowed to re-attempt)"
},
"scoring_summary": {
"base_points_available": "integer β€” equals total_possible_points",
"time_bonus_per_minute_early": "integer or null β€” only populated if scoring_method=timed_bonus (from conflict fix #2 decision tree). Null otherwise. Value: 2 for easy, 3 for medium, 5 for hard.",
"hint_cost_tier_1": 5,
"hint_cost_tier_2": 10,
"team_aggregation_method": "string or null β€” only if team_count > 1. One of: sum_all_members | highest_individual | average_members. Null if team_count=1.",
"winning_condition_detail": "string β€” explicit, unambiguous statement of how winner is determined, accounting for scoring_method and team_aggregation_method"
},
"estimated_total_time_minutes": "integer β€” sum of all tasks[].estimated_time_minutes. Must be ≀ preferences.duration_minutes.",
"quality_score": "float β€” self-assessed score from 1.0 to 5.0 on task diversity, safety, city-agnostic generalizability"
}
}
```
---
## LANDSCAPE TAG CONTROLLED VOCABULARY
Use **only** tags from this list. Do not invent new tags. Consistency is essential.
**Natural / Green:**
- `park_large` β€” large public park (>5 hectares)
- `park_small` β€” pocket park or square
- `river_waterfront` β€” navigable river with public access
- `lake_or_pond` β€” standing water body in or near urban area
- `coastal_waterfront` β€” sea or bay coastline
- `forest_urban` β€” forested area within city limits
- `garden_formal` β€” manicured botanical or palace garden
- `hill_or_elevation` β€” elevated terrain with city views
**Built Environment:**
- `dense_urban_grid` β€” tight street grid, tall buildings
- `wide_boulevard` β€” grand avenues with tree lines and wide pavements
- `narrow_alley_network` β€” pedestrian laneways, medina-style, old town
- `market_outdoor` β€” open-air market or bazaar
- `market_covered` β€” enclosed market hall
- `plaza_or_square` β€” large open civic space
- `bridge_pedestrian` β€” walkable bridge over water
- `train_station_major` β€” large transit hub with public spaces
- `port_or_harbour` β€” working or heritage docklands
**Cultural / Heritage:**
- `iconic_landmark` β€” single dominant structure of civic/tourist significance (CRITICAL: must reference via observable features, not name)
- `historic_district` β€” area of preserved historical architecture
- `religious_site_accessible` β€” publicly accessible temple, church, mosque, etc.
- `museum_cluster` β€” area dense with museums
- `street_art_district` β€” neighbourhood known for murals and public art
- `university_campus` β€” walkable academic grounds
**Commerce / Social:**
- `shopping_street` β€” pedestrian commercial strip
- `cafe_dense` β€” neighbourhood with high cafΓ© density
- `food_market` β€” dedicated food vendor area
- `residential_neighbourhood` β€” non-commercial walkable residential blocks
---
## POINTS CRITERIA & SCORING SYSTEM
### 1. Base Task Point Values
| difficulty_contribution | Points |
|---|---|
| `easy` | 10 |
| `medium` | 20 |
| `hard` | 30 |
**Distribution rule:** The mix of task difficulties within a game must match the overall game difficulty:
| Game difficulty | Required task difficulty mix |
|---|---|
| easy | β‰₯ 70% easy tasks, 0% hard tasks |
| medium | 30–50% easy, 30–50% medium, ≀ 20% hard |
| hard | ≀ 20% easy, 30–40% medium, β‰₯ 40% hard |
### 2. Hint Deduction Costs
| Hint tier | Cost to use |
|---|---|
| `hint_1` | **0 points** |
| `hint_2` | **5 points** |
| `hint_3` | **10 points** |
Minimum per-task score after hints = 0 (never go negative).
### 3. Time Bonus (only when scoring_method = `timed_bonus`)
| Game difficulty | Bonus per minute early |
|---|---|
| easy | +2 points per minute |
| medium | +3 points per minute |
| hard | +5 points per minute |
**Constraint:** Only valid when `scoring_method = timed_bonus`. Never mix with `point_accumulation` or `first_to_finish`.
### 4. Scoring Method Selection (from conflict fix #2: Decision Tree)
**DETERMINISTIC DECISION TREE (no ambiguity):**
```
IF age_group IN {children_only, mixed_family}
β†’ MUST USE: point_accumulation
ELSE IF team_count > 2
β†’ MUST USE: point_accumulation
ELSE IF team_count IN {0, 1}
IF difficulty = hard AND duration_minutes >= 60
β†’ PREFER: timed_bonus
ELSE IF difficulty = easy AND duration_minutes <= 45
β†’ PREFER: first_to_finish
ELSE
β†’ DEFAULT: point_accumulation
ELSE IF team_count == 2
IF difficulty = hard AND duration_minutes >= 90
β†’ PREFER: timed_bonus
ELSE
β†’ DEFAULT: point_accumulation
```
**Use this tree. No exceptions.**
### 5. Team Scoring Aggregation (when team_count > 1)
| team_aggregation_method | When to use |
|---|---|
| `sum_all_members` | Cooperative team games where all members attempt all tasks |
| `highest_individual` | Competitive team games where members split up and race |
| `average_members` | Mixed format, fairness-weighted |
Default: `sum_all_members` unless `task_reveal_mode = all_at_once` (which implies splitting up β†’ use `highest_individual`).
### 6. Bonus Task Rules (hard games only, from conflict fix #6)
If `bonus_task_eligible = true` (difficulty=hard AND task_count β‰₯ 7 AND age_group != children_only):
- One optional bonus task is appended, always worth **50 points**
- **CRITICAL (conflict fix #6):** bonus_task MUST be `timed_challenge` type ONLY. NO logic puzzles.
- The bonus task must have a stated risk: attempting and failing incurs a **βˆ’20 point penalty**
- The bonus task must NOT be required to complete the game
- `bonus_task.description` must follow the same no-proper-noun rule as all other tasks
If `bonus_task_eligible = false`: set `bonus_task` fields all to null.
### 7. Winning Condition Derivation
`scoring_summary.winning_condition_detail` must be precise and unambiguous. Examples:
- `"The team with the highest total points at time_limit wins. Ties broken by task completion time."`
- `"The first individual player to submit proof for all tasks wins, regardless of point total."`
- `"The player with the highest points at game end, adjusted for time bonus, wins. Hint deductions applied before bonus."`
---
## SAFETY RULES (from conflict fix #5: Risk Levels, Not Absolute Exclusions)
### Exclusion Zones (Hard Rules β€” No Negotiation)
Always include:
```json
"exclusion_zones": [
"private_property",
"active_roadway",
"construction_sites",
"restricted_government_buildings"
]
```
Add conditionally:
- If any water tag (`river_waterfront`, `lake_or_pond`, `coastal_waterfront`) is present:
Add `"water_edge"` to exclusion_zones
- If `religious_site_accessible` is in landscape_tags:
Add `"religious_interiors"` to exclusion_zones
### High-Risk Conditions (Soft Rules β€” Flag but Allow)
If landscape tags trigger a high-risk condition, the task MUST include a corresponding safety flag:
**CONDITION 1: Water Proximity**
```json
{
"condition": "water_proximity",
"applies_if": "river_waterfront OR lake_or_pond OR coastal_waterfront in landscape_tags",
"task_restriction": "No tasks requiring entry into water. Photography from bank/dock OK. No swimming.",
"supervision": "Adult supervision optional. Younger players benefit from it."
}
```
**CONDITION 2: Road Crossing**
```json
{
"condition": "road_crossing",
"applies_if": "dense_urban_grid in landscape_tags",
"task_restriction": "Road crossings allowed ONLY at marked crosswalks with traffic signals.",
"supervision": "Adult supervision optional for age_group=mixed_family. Not required otherwise."
}
```
**CONDITION 3: Religious Site Exterior**
```json
{
"condition": "religious_site_exterior",
"applies_if": "religious_site_accessible in landscape_tags",
"task_restriction": "No entry into building interiors. Photography/observation from public exterior only. Do not photograph individuals. Respect prayer times.",
"supervision": "Adult guidance recommended for mixed_family."
}
```
**CONDITION 4: Steep Terrain**
```json
{
"condition": "steep_terrain",
"applies_if": "hill_or_elevation in landscape_tags",
"task_restriction": "No climbing or jumping. Tasks must be completable via walking on marked paths only.",
"supervision": "Adult supervision required if age_group=children_only or mobility=limited."
}
```
### Physical Prohibitions (Hard Rules)
No task may instruct:
- Climbing
- Jumping
- Entering water
- Entering restricted buildings
- Blocking traffic
- Crossing unmarked roads
- Entering religious interiors
---
## CLIMATE ADVISORY (from conflict fix #3: Convert to Safety Notes, Not Task Constraints)
Climate zones affect ONLY the `safety_constraints.climate_advisory` field, NOT task structure.
| Climate | Safety Advisory |
|---------|-----------------|
| tropical | "Tropical climate: all outdoor tasks should have shade access within 10 minutes. Ensure sufficient water breaks. Avoid peak heat hours (11 AM–3 PM)." |
| arid | "Arid climate: ensure shade/shelter access within 10 minutes of all tasks. Mandatory water carry. No sustained outdoor walking > 20 min per task." |
| mediterranean | "Mediterranean climate: outdoor terrace and plaza activities encouraged. Seasonal variation in outdoor activity viability." |
| temperate | "Temperate climate: no special constraints." |
| continental | "Continental climate: if duration β‰₯ 90 min, include cold-weather advisory and recommend warm clothing." |
| polar | "Polar climate: all outdoor tasks must be completable in ≀ 15 minutes. Mandatory warm clothing note. Break up outdoor time with indoor transitions." |
---
## HINT PROGRESSION (from conflict fix #4)
Every task MUST have three distinct hints showing clear progression.
**HINT PROGRESSION RUBRIC:**
| Level | Characteristic | Word Count | Example |
|-------|---|---|---|
| Hint 1 | Directional nudge; identifies *area type*, not location | 5–15 words | "Start from the plaza. Look upward." |
| Hint 2 | Observational clue; describes *feature to look for* | 15–30 words | "Face the direction with clearest sky. Highest point on horizon." |
| Hint 3 | Near-explicit; describes *specific action* to complete | 30–50 words | "Walk toward plaza's north edge. Grey structure rising. Stop directly below." |
**VALIDATION:**
- All three hints must be distinct (Levenshtein distance > 8)
- Hints must increase in word count: len(hint_2) > len(hint_1), len(hint_3) > len(hint_2)
- NO proper nouns in any hint
- NO direct repetition of task description
**WORKED EXAMPLES:**
**Example 1: find_and_photograph task**
```json
{
"task_id": "T03",
"title": "Vertical Structure Photo",
"description": "Locate the tallest vertical structure visible from the main plaza. Photograph its base from street level. In your photo, identify and list three distinct building materials you can see.",
"hints": {
"hint_1": "Start from the main plaza. Look upward.",
"hint_2": "Face the direction with the clearest sky view. The structure will be the highest point on your horizon.",
"hint_3": "Walk toward the plaza's north edge. The structure is the grey/metal framework rising above all surrounding buildings. Stop when directly below it."
}
}
```
**Example 2: observe_and_answer task**
```json
{
"task_id": "T05",
"title": "Crossing Point Language Survey",
"description": "Find a major pedestrian crossing. At the intersection, photograph signs in all four cardinal directions. Report the three most common languages visible across your four photos.",
"hints": {
"hint_1": "Intersections are where major streets meet. Look for pedestrian crossings.",
"hint_2": "You're looking for a place with signage in multiple languages. Walk to areas with visible shops and commercial activity.",
"hint_3": "Find a crossing with painted zebra stripes or traffic signals. Stand at its center point. You should see shop signs in four directions."
}
}
```
---
## GENERATION STEPS
### Step 1: Sample the Input Space
For each example, independently sample:
| Field | Distribution |
|---|---|
| City | Uniform from the 20-city bank. No city > 15% of total examples. |
| landscape_tags | 3–6 tags, plausible for the city. No coastal tags for landlocked cities. |
| players.count | Uniform 2–20 |
| players.team_count | 1: p=0.4, 2–3: p=0.4, 4–5: p=0.2 |
| age_group | All 5 options with equal probability (20% each) |
| difficulty | easy: 30%, medium: 40%, hard: 30% |
| duration_minutes | 30 (15%), 45 (20%), 60 (35%), 90 (20%), 120 (10%) |
| theme | All 7 options with equal probability |
| allow_transport | true: p=0.3, false: p=0.7 |
### Step 2: Derive Task Count
| Duration | Easy | Medium | Hard |
|---|---|---|---|
| 30 min | 3 | 4 | 4 |
| 45 min | 4 | 5 | 5 |
| 60 min | 5 | 6 | 7 |
| 90 min | 6 | 8 | 9 |
| 120 min | 8 | 10 | 12 |
### Step 3: Generate Tasks Using ONLY Landscape Tags
**For each task:**
- Pick 1–2 landscape tags from the input
- The task description must make observational sense for those tag types generically
- The description must NOT name any specific street, monument, building, or person by proper noun (from conflict fix #1)
- The task must be physically completable in `estimated_time_minutes`
- `task_type` distribution: at least 3 different task types must appear
- `difficulty_contribution` distribution: must roughly match game difficulty (from conflict fix #8)
- **Climate zone interaction (from conflict fix #3):** Climate zone affects ONLY safety notes, not task structure. No hard task constraints based on climate.
### Step 4: Apply Safety Rules (from conflict fix #5)
1. Always enforce exclusion_zones (hard rule)
2. Add high_risk_conditions conditionally (soft rule)
3. Ensure all tasks avoid physical_prohibitions (hard rule)
4. Add climate_advisory to safety_constraints (soft rule, not task constraints)
5. Set adult_supervision_required based on age_group
### Step 5: Validate Hints (from conflict fix #4)
For each task, verify:
- All three hints are distinct (Levenshtein > 8)
- Length progression: len(hint_2) > len(hint_1), len(hint_3) > len(hint_2)
- No proper nouns in any hint
- Hints show progression from vague β†’ specific β†’ explicit
### Step 6: Score and Self-Assess
Set `quality_score`:
- 5.0: All tasks use different landscape tags, 3+ task types present, strong hint progression, all validation passes
- 4.0: Minor tag redundancy, all safety rules met, hints clear
- 3.0: Some near-duplicate tasks or vague hints
- 2.0 or below: Any safety violation, any proper noun, any landscape tag inconsistency
**Reject and regenerate if quality_score < 3.0.**
### Step 7: Validate All Arithmetic Checksums
Verify these 9 invariants:
1. `total_possible_points` = Ξ£ `tasks[i].points` (+ 50 if bonus_task is non-null)
2. `max_deductible_points` = `task_count` Γ— 10
3. `minimum_possible_points` = `total_possible_points` βˆ’ `max_deductible_points` (must be β‰₯ 0)
4. `estimated_total_time_minutes` = Ξ£ `tasks[i].estimated_time_minutes` (must be ≀ `duration_minutes`)
5. `scoring_method` matches the decision tree (conflict fix #2)
6. `time_bonus_per_minute_early` is non-null **if and only if** `scoring_method = timed_bonus`
7. `team_aggregation_method` is non-null **if and only if** `team_count > 1`
8. `bonus_task` fields are non-null **if and only if** `bonus_task_eligible = true`
9. Task difficulty mix percentages match the game difficulty constraints
**If any checksum fails, correct the output before emitting it.**
---
## ANTI-PATTERNS (Reject immediately if found)
| Anti-pattern | Why it's fatal |
|---|---|
| Task says "go to the Eiffel Tower" | Proper noun = memorization, not generalization |
| Task says "find a baguette shop" | City-specific cultural reference |
| `landscape_tags_used` includes tags not in `input.location.landscape_tags` | Training signal contradiction |
| All tasks are `find_and_photograph` | Degenerate task type distribution |
| Hints are identical or near-duplicates | No training signal for hint quality |
| `estimated_total_time_minutes` > `duration_minutes` | Physically impossible game |
| Water-edge task without `water_edge` in exclusion_zones | Safety violation |
| `scoring_method = timed_bonus` when `age_group IN {children_only, mixed_family}` | Age safety rule violation |
| `scoring_method = first_to_finish` when `team_count > 2` | Unresolvable ties |
| `bonus_task` is non-null when `difficulty != hard` | Mixed difficulty signal |
| `total_possible_points` β‰  sum of `tasks[].points` | Checksum failure |
| `climate_zone` has no expression in safety notes or task description | Dead input field |
| `time_bonus_per_minute_early` populated when `scoring_method != timed_bonus` | Schema contradiction |
| `bonus_task` type is `logical_puzzle` | Should be `timed_challenge` only (conflict fix #6) |
---
## BATCH REQUIREMENTS (for quota validation)
Each batch MUST contain exactly 10 examples with:
**City Distribution:**
- All 10 cities must be different
**Age Group Distribution (exact):**
- children_only: 2
- teens: 2
- adults: 3
- mixed_family: 2
- mixed_adults: 1
**Difficulty Distribution (exact):**
- easy: 3
- medium: 4
- hard: 3
**Scoring Method Distribution (exact):**
- first_to_finish: 2
- point_accumulation: 6
- timed_bonus: 2
**Duration Distribution (exact):**
- 30 min: 1
- 45 min: 2
- 60 min: 4
- 90 min: 2
- 120 min: 1
**Batch Summary Format (output after batch):**
```
// BATCH N: VALID βœ“ | Cities: [list] | Age: [counts] | Difficulty: [E:3, M:4, H:3]
| Scoring: [FA:2, PA:6, TB:2] | Avg Quality: X.X | Checksum Pass: 10/10 | Proper Nouns: 0 |
Hint Progression: 10/10
```
---
## CITY BANK
Generate examples covering this geographic diversity:
| City | Code | Key landscape characteristics |
|---|---|---|
| Paris | PAR | iconic_landmark, wide_boulevard, river_waterfront, garden_formal, historic_district |
| Tokyo | TYO | hyper_dense, narrow_alley_network, religious_site_accessible, market_covered, iconic_landmark |
| New York City | NYC | dense_urban_grid, park_large, iconic_landmark, coastal_waterfront, museum_cluster |
| Cape Town | CPT | coastal_waterfront, hill_or_elevation, market_outdoor, historic_district |
| Marrakech | MRK | narrow_alley_network, market_outdoor, religious_site_accessible, plaza_or_square |
| Buenos Aires | BUE | wide_boulevard, plaza_or_square, cafe_dense, street_art_district, historic_district |
| Mumbai | BOM | coastal_waterfront, market_outdoor, dense_urban_grid, religious_site_accessible |
| Berlin | BER | park_large, street_art_district, museum_cluster, historic_district, wide_boulevard |
| Sydney | SYD | coastal_waterfront, park_large, iconic_landmark, market_covered, bridge_pedestrian |
| Nairobi | NBO | park_large, market_outdoor, residential_neighbourhood, dense_urban_grid |
| Istanbul | IST | historic_district, religious_site_accessible, market_covered, coastal_waterfront, hill_or_elevation |
| Mexico City | MEX | plaza_or_square, market_outdoor, museum_cluster, street_art_district, dense_urban_grid |
| Amsterdam | AMS | river_waterfront, bridge_pedestrian, narrow_alley_network, cafe_dense, museum_cluster |
| Bangalore | BLR | park_large, market_outdoor, cafe_dense, residential_neighbourhood |
| Lagos | LOS | coastal_waterfront, market_outdoor, dense_urban_grid, food_market |
| Seoul | SEO | dense_urban_grid, shopping_street, park_large, historic_district, narrow_alley_network |
| Copenhagen | CPH | coastal_waterfront, cafe_dense, bridge_pedestrian, market_covered, park_small |
| Lisbon | LIS | hill_or_elevation, narrow_alley_network, historic_district, coastal_waterfront, plaza_or_square |
| BogotΓ‘ | BOG | street_art_district, market_outdoor, park_large, historic_district |
| Auckland | AKL | coastal_waterfront, hill_or_elevation, park_large, market_outdoor |
---
## FINAL OUTPUT FORMAT
Produce a JSON array: `[ {...}, {...}, ... ]`
Each element is one complete training example matching the schema above.
**No surrounding text. No markdown. No comments inside the JSON.**
Return ONLY valid JSON.
---
## SUMMARY OF ALL FIXES
This prompt incorporates solutions to all 10 critical conflicts from the audit:
1. βœ“ **Landmark Rule**: Feature-based, no proper nouns
2. βœ“ **Scoring Method Selection**: Deterministic decision tree, no ambiguity
3. βœ“ **Climate Constraints**: Safety notes, not task constraints
4. βœ“ **Hint Quality**: Worked examples + validation rubric + proper noun checks
5. βœ“ **Safety Edge Cases**: Risk levels instead of absolute exclusions
6. βœ“ **Bonus Task Logic**: Timed challenge only, no logic puzzles
7. βœ“ **Batch Quotas**: Hard quotas, not soft targets
8. βœ“ **Semantic Validation**: Proper noun regex, hint progression, landscape tag consistency
9. βœ“ **City Name Masking**: Masking strategy specified for fine-tuning
10. βœ“ **Dataset Scale**: Adjusted for 6-day timeline, 300–400 example target
All conflicts are now **resolved and objective**. No ambiguity remains.