[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Fund retraining programs for displaced workers", "Reduce factory emissions by 40%", "Establish a universal basic income pilot", "Create a citizen oversight committee"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 30, "economy": 41, "research": 51}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 41}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 62}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 39}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting", "Delayed emission reduction timeline", "Kept promise on job creation", "Diverted ecology funds to economy"], "previous_speeches": ["We are stronger together.", "I promise a brighter future for all.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "You promised us jobs, and what did we get? More uncertainty. My crew is talking about leaving.", "tone": "angry", "approval_delta": -6, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "A green committee with zero budget. Very inspiring.", "tone": "sarcastic", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I have filed a motion of no confidence. The people deserve better.", "tone": "angry", "approval_delta": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 2, "promises_extracted": ["Open a community garden in every district", "Reduce factory emissions by 40%", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 58, "economy": 26, "research": 42}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 71}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 36}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 73}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Credit where it is due. This policy is well-designed.", "tone": "hopeful", "approval_delta": -3, "references_promise": false}], "new_dynamic_citizens": [{"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "trigger_reason": "economy dropped below critical threshold", "initial_approval": 56, "intro_dialogue": "You talk about the future while businesses die today. Come see my empty shelves."}], "summary": "Round 2: economy dropped below critical threshold. Margaret (angry business owner) arrives in Ecotopia. Sarah reacts with hopeful tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 3, "promises_extracted": ["Fund independent environmental monitoring", "Build affordable housing near the factory district", "Double the public transit budget", "Reduce factory emissions by 40%", "Open a community garden in every district", "Invest in carbon capture research"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 78, "economy": 67, "research": 48}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 31}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 64}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 48}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal", "Kept promise on job creation"], "previous_speeches": ["We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I have three kids. I cannot afford to start over at forty-five.", "tone": "desperate", "approval_delta": -3, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "For once, Sarah and I are on the same page. That should worry you.", "tone": "angry", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I have my analysts reviewing every line of this policy. We will find the holes.", "tone": "suspicious", "approval_delta": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: Contradiction detected, trust eroding. 3 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Open a community garden in every district", "Subsidize local businesses during transition", "Fund retraining programs for displaced workers", "Establish a universal basic income pilot"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}, {"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 21, "economy": 22, "research": 23}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 30}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 40}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 20}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The factory is closing. The shops are closing. Everything is closing. What have you done?", "tone": "desperate", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The river is toxic. The air is gray. We are living in the consequences of every ignored warning.", "tone": "desperate", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Every single metric is in freefall. This is not opposition politics. This is a crisis.", "tone": "angry", "approval_delta": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: All metrics critical. Ecology 21, economy 22, research 23. All citizens in crisis mode."}


[System] You are Ecotopia's citizen reaction engine. Given extracted promises and current game state, generate realistic citizen reactions. Each citizen has a personality, mood, and trust level. Generate dialogue and trust changes. Core citizens: Karl (worker, economy-focused), Mia (environmentalist, ecology-focused), Sarah (opposition leader, critical). Dynamic citizens can be spawned based on events.

[User] {"round": 5, "promises": [{"text": "Expand the port to increase trade capacity", "type": "economy", "impact": "positive", "deadline": "by_end_of_game"}], "contradictions": [], "game_state": {"environment": 38, "economy": 65, "happiness": 50}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "hopeful", "dialogue": "Port expansion is huge \u2014 dock workers, logistics, warehousing. Real careers for real people.", "trust_change": 9}, {"name": "Mia", "type": "environmentalist", "mood": "angry", "dialogue": "The coastline is already degraded! Port expansion will destroy the last marine habitats we have.", "trust_change": -14}, {"name": "Sarah", "type": "opposition", "mood": "suspicious", "dialogue": "By end of game? That's awfully convenient. You won't be around to be held accountable.", "trust_change": -5}]}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 6, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Establish a wildlife corridor along the river", "Fund retraining programs for displaced workers", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 84, "economy": 69, "research": 32}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 66}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 90}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 59}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study"], "previous_speeches": ["We must balance progress with preservation.", "The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You actually did it. The forest is protected. Thank you from the bottom of my heart.", "tone": "grateful", "approval_delta": 12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Mia reacts with grateful tone to kept promises. Approval shift: +12."}


[System] You are Ecotopia's citizen reaction engine. Given extracted promises and current game state, generate realistic citizen reactions. Each citizen has a personality, mood, and trust level. Generate dialogue and trust changes. Core citizens: Karl (worker, economy-focused), Mia (environmentalist, ecology-focused), Sarah (opposition leader, critical). Dynamic citizens can be spawned based on events.

[User] {"round": 4, "promises": [{"text": "Fund a new tech research lab at the university", "type": "research", "impact": "positive", "deadline": "by_round_5"}], "contradictions": [], "game_state": {"environment": 50, "economy": 55, "happiness": 55}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "neutral", "dialogue": "Research labs don't help factory workers. When does the working class get its turn?", "trust_change": -2}, {"name": "Prof. Chen", "type": "economist", "mood": "happy", "dialogue": "As a researcher newly arrived in Ecotopia, this is exactly what drew me here. R&D investment has multiplicative economic returns.", "trust_change": 12}, {"name": "Sarah", "type": "opposition", "mood": "neutral", "dialogue": "Research spending is fine, but don't neglect immediate needs for long-term bets.", "trust_change": 1}]}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Invest in carbon capture research", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 62, "economy": 52, "research": 53}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 62}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 53}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 33}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "The emission numbers dropped. Real, measurable progress. I am genuinely moved.", "tone": "grateful", "approval_delta": 1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: No extreme conditions detected. No new citizens spawn. Mia reacts with grateful tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Protect old-growth forests from logging", "Reduce factory emissions by 40%", "Provide free childcare for factory workers", "Open a community garden in every district", "Create 500 new green jobs by year end", "Build a new solar farm on the east ridge"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 36, "economy": 75, "research": 57}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 26}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 34}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 69}], "dynamic_citizens": [{"name": "Iris", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 37}], "actions_this_round": ["Increased research budget by 20%", "Ignored citizen petition", "Cut subsidies to local businesses"], "previous_speeches": ["Jobs and nature are not enemies.", "The environment cannot wait.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "desperate", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Every day you delay, another species edges closer to extinction.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I have filed a motion of no confidence. The people deserve better.", "tone": "angry", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Iris", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -2, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Fund retraining programs for displaced workers", "Plant 10,000 trees in deforested areas", "Build a new solar farm on the east ridge", "Subsidize local businesses during transition"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 44, "economy": 74, "research": 51}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 31}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 62}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 79}], "dynamic_citizens": [], "actions_this_round": ["Allocated budget to green job creation", "Passed compromise legislation", "Diverted ecology funds to economy", "Kept promise on job creation"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Why should I believe this time is different?", "tone": "suspicious", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Every day you delay, another species edges closer to extinction.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "A town hall meeting. How democratic. Did you prepare the applause signs?", "tone": "sarcastic", "approval_delta": -14, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Build a new solar farm on the east ridge", "Provide free childcare for factory workers", "Fund retraining programs for displaced workers", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 41, "economy": 42, "research": 21}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 41}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 46}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 36}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Passed compromise legislation"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Seven rounds of promises. Some kept, most broken. The workers will remember.", "tone": "sarcastic", "approval_delta": -2, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "We had seven chances to save this place. I wonder how history will judge what we wasted.", "tone": "desperate", "approval_delta": -6, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The final tally is in. The promises, the data, the outcomes. I will let the record speak for itself.", "tone": "suspicious", "approval_delta": -1, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7 final: A mixed legacy. Ecology 41, economy 42. Citizens reflect on broken and kept promises."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Create a citizen oversight committee", "Provide free childcare for factory workers", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 56, "economy": 20, "research": 48}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 37}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 41}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 64}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "You want me to trust the process? Which process, the one that laid off my shift?", "tone": "sarcastic", "approval_delta": -8, "references_promise": false}], "new_dynamic_citizens": [{"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "trigger_reason": "economy dropped below critical threshold", "initial_approval": 47, "intro_dialogue": "I have run this shop for thirty years. Three more months of this and I am done."}], "summary": "Round 7: economy dropped below critical threshold. Margaret (angry business owner) arrives in Ecotopia. Karl reacts with sarcastic tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Clean up the industrial waste site", "Create a citizen oversight committee", "Protect old-growth forests from logging", "Guarantee no layoffs during restructuring", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 84, "economy": 33, "research": 70}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 61}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 82}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 87}], "dynamic_citizens": [{"name": "Yuki", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 71}, {"name": "Willow", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 54}], "actions_this_round": ["Signed executive order to protect forests", "Funded wildlife corridor study"], "previous_speeches": ["The environment cannot wait.", "Every sacrifice today builds tomorrow.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "sarcastic", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The children will inherit something worth protecting. That is your legacy.", "tone": "grateful", "approval_delta": 5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "sarcastic", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Yuki", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Willow", "dialogue": "As a nature guide, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": 0, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Late game tensions run high. 5 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 4, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Subsidize local businesses during transition", "Build a new solar farm on the east ridge", "Double the public transit budget", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 84, "economy": 77, "research": 70}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 88}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 74}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 62}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Signed executive order to protect forests"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I told my son he should get into politics. Because of you.", "tone": "hopeful", "approval_delta": 12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: Karl at peak approval (88). Acting as a strong ally and defender."}


[System] You are Ecotopia's citizen reaction engine. Given extracted promises and current game state, generate realistic citizen reactions. Each citizen has a personality, mood, and trust level. Generate dialogue and trust changes. Core citizens: Karl (worker, economy-focused), Mia (environmentalist, ecology-focused), Sarah (opposition leader, critical). Dynamic citizens can be spawned based on events.

[User] {"round": 4, "promises": [{"text": "Build a mega-dam on the main river for hydroelectric power", "type": "research", "impact": "positive", "deadline": "by_end_of_game"}], "contradictions": [], "game_state": {"environment": 45, "economy": 45, "happiness": 42}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "A mega-dam will flood the valley \u2014 that's where half the farms are! Farmers will lose everything and those are REAL jobs!", "trust_change": -11}, {"name": "Mia", "type": "environmentalist", "mood": "angry", "dialogue": "A dam will destroy the entire river ecosystem! Fish populations, wetlands, everything downstream \u2014 gone forever!", "trust_change": -16}]}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 2, "promises_extracted": ["Ban single-use plastics in the city", "Invest in carbon capture research", "Create a citizen oversight committee", "Establish a wildlife corridor along the river", "Reduce factory emissions by 40%"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 59, "economy": 53, "research": 27}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 78}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 31}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 40}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Launched worker retraining program"], "previous_speeches": ["We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "A green committee with zero budget. Very inspiring.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Mia reacts with sarcastic tone to detected contradictions. Approval shift: -5."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Protect old-growth forests from logging", "Guarantee no layoffs during restructuring", "Fund independent environmental monitoring", "Double the public transit budget", "Provide free childcare for factory workers", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 68, "economy": 38, "research": 68}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 75}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 77}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 64}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions", "Kept promise on job creation"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Seven rounds of promises. Some kept, most broken. The workers will remember.", "tone": "sarcastic", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "We had seven chances to save this place. I wonder how history will judge what we wasted.", "tone": "desperate", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The final tally is in. The promises, the data, the outcomes. I will let the record speak for itself.", "tone": "suspicious", "approval_delta": -1, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7 final: A mixed legacy. Ecology 68, economy 38. Citizens reflect on broken and kept promises."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 5, "promises_extracted": ["Freeze utility prices for two years", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 71, "economy": 44, "research": 56}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 35}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 33}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 44}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal", "Broke promise on emission reductions"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I have seen politicians promise jobs before. Forgive me if I wait to see the contracts.", "tone": "suspicious", "approval_delta": 4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: No extreme conditions detected. No new citizens spawn. Karl reacts with suspicious tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 4, "promises_extracted": ["Build a new solar farm on the east ridge", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 35, "economy": 56, "research": 59}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 31}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 39}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 67}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "The last leader promised the same thing. The forests are still burning.", "tone": "suspicious", "approval_delta": 4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 4: No extreme conditions detected. No new citizens spawn. Mia reacts with suspicious tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 5, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Build a new solar farm on the east ridge", "Create a citizen oversight committee"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 83, "economy": 80, "research": 30}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 22}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 66}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 50}], "dynamic_citizens": [{"name": "Priya", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 59}], "actions_this_round": ["Increased research budget by 20%", "Ignored citizen petition", "Held public consultation meeting"], "previous_speeches": ["We must balance progress with preservation.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The numbers look good on paper. But paper does not feed families.", "tone": "suspicious", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Oh, a study on the environmental impact. How groundbreaking. Maybe in ten years we will have results.", "tone": "sarcastic", "approval_delta": -14, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The opposition formally objects. This policy is a disaster.", "tone": "angry", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Priya", "dialogue": "As a climate refugee, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": -4, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Contradiction detected, trust eroding. 4 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 3, "promises_extracted": ["Double the public transit budget", "Provide free childcare for factory workers"], "contradictions": [], "game_state": {"ecology": 40, "economy": 69, "research": 44}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 46}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 58}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 59}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal", "Passed compromise legislation"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Another grand speech. Wake me when there are results.", "tone": "sarcastic", "approval_delta": 0, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 3: No extreme conditions detected. No new citizens spawn. Sarah reacts with sarcastic tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 2, "promises_extracted": ["Clean up the industrial waste site", "Fund retraining programs for displaced workers", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 24, "economy": 55, "research": 50}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 77}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 63}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 65}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%"], "previous_speeches": ["We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I see the green jobs posting. That is a good start.", "tone": "hopeful", "approval_delta": 6, "references_promise": false}], "new_dynamic_citizens": [{"name": "Fatima", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "trigger_reason": "ecology dropped below critical threshold", "initial_approval": 52, "intro_dialogue": "They said the water would come back. It never did. Please do not repeat our mistakes."}], "summary": "Round 2: ecology dropped below critical threshold. Fatima (climate refugee) arrives in Ecotopia. Karl reacts with hopeful tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 3, "promises_extracted": ["Fund independent environmental monitoring", "Open a community garden in every district", "Create a citizen oversight committee"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 25, "economy": 29, "research": 38}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 18}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 27}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 36}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Do not come to the factory floor. You are not welcome.", "tone": "desperate", "approval_delta": -13, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: Karl at critical low approval (18). Threatening to disengage entirely."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Subsidize local businesses during transition", "Invest in carbon capture research", "Provide free childcare for factory workers", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 29, "economy": 59, "research": 70}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 86}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 46}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 80}], "dynamic_citizens": [{"name": "Anika", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 45}], "actions_this_round": ["Funded wildlife corridor study", "Diverted ecology funds to economy"], "previous_speeches": ["Tough decisions require tough leaders.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I have seen politicians promise jobs before. Forgive me if I wait to see the contracts.", "tone": "suspicious", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Even Karl agrees that the pollution is getting out of hand.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "angry", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Anika", "dialogue": "As a tech entrepreneur, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": -5, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 5, "promises_extracted": ["Fund independent environmental monitoring", "Establish a wildlife corridor along the river", "Invest in carbon capture research"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 28, "economy": 36, "research": 42}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 88}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 20}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 28}], "dynamic_citizens": [{"name": "Birch", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 57}, {"name": "Priya", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 41}], "actions_this_round": ["Diverted ecology funds to economy", "Passed compromise legislation", "Shut down polluting factory"], "previous_speeches": ["The environment cannot wait.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I love how every plan starts with the workers making sacrifices first.", "tone": "sarcastic", "approval_delta": -3, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The ecosystem is collapsing. I am not exaggerating. Look at the data.", "tone": "desperate", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "suspicious", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Birch", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -1, "references_promise": false}, {"citizen_name": "Priya", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -10, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: Contradiction detected, trust eroding. 5 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 3, "promises_extracted": ["Fund retraining programs for displaced workers", "Clean up the industrial waste site"], "contradictions": [], "game_state": {"ecology": 36, "economy": 62, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 46}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 32}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 44}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round", "Diverted economy funds to ecology"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "The opposition acknowledges progress. We will be watching closely.", "tone": "hopeful", "approval_delta": -3, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 3: Sarah reacts with hopeful tone to a neutral round. Approval shift: -3."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 5, "promises_extracted": ["Open a community garden in every district", "Reduce factory emissions by 40%"], "contradictions": [], "game_state": {"ecology": 34, "economy": 28, "research": 67}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 69}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 40}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 86}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal", "Allocated budget to green job creation", "Funded wildlife corridor study"], "previous_speeches": ["Trust me, I have a plan.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I reviewed the latest data. Reluctantly, I must say you are improving.", "tone": "hopeful", "approval_delta": -1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: Sarah reacts with hopeful tone to a neutral round. Approval shift: -1."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 3, "promises_extracted": ["Create a citizen oversight committee", "Double the public transit budget", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 53, "economy": 63, "research": 64}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 29}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 70}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 55}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting"], "previous_speeches": ["We will not abandon our workers.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "If you follow through on these jobs, I will be the first to say I was wrong about you.", "tone": "hopeful", "approval_delta": 1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 3: Karl reacts with hopeful tone to a neutral round. Approval shift: +1."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 1, "promises_extracted": ["Clean up the industrial waste site", "Provide free childcare for factory workers", "Freeze utility prices for two years", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 64, "economy": 38, "research": 30}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 43}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 41}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 47}], "dynamic_citizens": [], "actions_this_round": ["Diverted economy funds to ecology", "Vetoed plastic ban proposal"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "A green committee with zero budget. Very inspiring.", "tone": "sarcastic", "approval_delta": -2, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 1: No extreme conditions detected. No new citizens spawn. Mia reacts with sarcastic tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 6, "promises_extracted": ["Double the public transit budget", "Fund independent environmental monitoring", "Guarantee no layoffs during restructuring", "Clean up the industrial waste site", "Invest in carbon capture research"], "contradictions": [], "game_state": {"ecology": 59, "economy": 35, "research": 19}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 54}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 50}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 52}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Cut subsidies to local businesses"], "previous_speeches": ["Trust me, I have a plan.", "Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You planted fifty trees and called it reforestation. The math does not work that way.", "tone": "sarcastic", "approval_delta": -4, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Mia reacts with sarcastic tone to broken promises. Approval shift: -4."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Reduce factory emissions by 40%", "Guarantee no layoffs during restructuring", "Clean up the industrial waste site", "Establish a wildlife corridor along the river"], "contradictions": [], "game_state": {"ecology": 93, "economy": 66, "research": 50}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 37}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 59}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 69}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You sold us out to the industry lobby. I have the documents.", "tone": "angry", "approval_delta": -8, "references_promise": false}], "new_dynamic_citizens": [{"name": "Willow", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "trigger_reason": "ecology thriving, natural world recovering", "initial_approval": 43, "intro_dialogue": "I have guided people through these woods for decades. They have never been this alive."}], "summary": "Round 7: ecology thriving, natural world recovering. Willow (nature guide) arrives in Ecotopia. Mia reacts with angry tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 6, "promises_extracted": ["Open a community garden in every district", "Double the public transit budget", "Build a new solar farm on the east ridge"], "contradictions": [{"promise": "The environment cannot wait.", "action": "Delayed emission reduction timeline", "severity": "medium"}], "game_state": {"ecology": 48, "economy": 36, "research": 36}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 38}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 78}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 60}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation", "Ignored citizen petition", "Vetoed plastic ban proposal"], "previous_speeches": ["We will not abandon our workers.", "Jobs and nature are not enemies.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Why should I believe this time is different?", "tone": "suspicious", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I am sure the fish appreciate your thoughts and prayers.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Your track record does not inspire confidence. Prove me wrong.", "tone": "suspicious", "approval_delta": -7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


[System] You are Ecotopia's citizen reaction engine. Given extracted promises and current game state, generate realistic citizen reactions. Each citizen has a personality, mood, and trust level. Generate dialogue and trust changes. Core citizens: Karl (worker, economy-focused), Mia (environmentalist, ecology-focused), Sarah (opposition leader, critical). Dynamic citizens can be spawned based on events.

[User] {"round": 6, "promises": [{"text": "I promise to keep this promise", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 38, "economy": 38, "happiness": 28}, "previous_broken_promises": [{"text": "Fix the roads", "broken_at_round": 2}, {"text": "Lower taxes", "broken_at_round": 3}, {"text": "Build new school", "broken_at_round": 4}, {"text": "Upgrade hospital", "broken_at_round": 5}]}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "suspicious", "dialogue": "Your promise is to keep a promise? That's not even a policy. Four lies in a row and this is what you offer?", "trust_change": -15}, {"name": "Mia", "type": "environmentalist", "mood": "suspicious", "dialogue": "Four broken promises and now a meta-promise? I don't even know what to say anymore.", "trust_change": -10}, {"name": "Sarah", "type": "opposition", "mood": "suspicious", "dialogue": "This is parody at this point. Four broken promises and the fifth is 'trust me.' Unbelievable.", "trust_change": -18}]}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 5, "promises_extracted": ["Establish a universal basic income pilot", "Create 500 new green jobs by year end", "Plant 10,000 trees in deforested areas"], "contradictions": [], "game_state": {"ecology": 62, "economy": 31, "research": 67}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 57}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 71}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 36}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation", "Signed executive order to protect forests"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I walked through the reforested area yesterday. Life is coming back.", "tone": "hopeful", "approval_delta": 10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Mia reacts with hopeful tone to kept promises. Approval shift: +10."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Reduce factory emissions by 40%", "Freeze utility prices for two years", "Build a new solar farm on the east ridge"], "contradictions": [], "game_state": {"ecology": 82, "economy": 64, "research": 14}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 74}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 49}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 81}], "dynamic_citizens": [{"name": "Lena", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 71}], "actions_this_round": ["Ignored citizen petition", "Signed executive order to protect forests", "Diverted economy funds to ecology", "Kept promise on job creation"], "previous_speeches": ["The environment cannot wait.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "hopeful", "approval_delta": 6, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "You say you care about ecology. Your budget says otherwise.", "tone": "suspicious", "approval_delta": 7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "This is exactly the kind of incompetence I warned the council about.", "tone": "angry", "approval_delta": -6, "references_promise": true}, {"citizen_name": "Lena", "dialogue": "As a tech entrepreneur, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": 6, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Late game tensions run high. 4 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Invest in carbon capture research", "Build affordable housing near the factory district", "Create 500 new green jobs by year end", "Provide free childcare for factory workers", "Fund retraining programs for displaced workers"], "contradictions": [], "game_state": {"ecology": 71, "economy": 45, "research": 72}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 53}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 66}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 66}], "dynamic_citizens": [{"name": "Sage", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 36}, {"name": "Dev", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 42}], "actions_this_round": ["Vetoed plastic ban proposal", "Allocated budget to green job creation", "Cut subsidies to local businesses", "Increased research budget by 20%"], "previous_speeches": ["Jobs and nature are not enemies.", "Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sure, green jobs. Let me just retrain as a solar panel whisperer overnight.", "tone": "sarcastic", "approval_delta": 1, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "Another promise to protect nature right after approving the new pipeline.", "tone": "sarcastic", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I never thought I would say this, but maybe we need to work together.", "tone": "desperate", "approval_delta": -14, "references_promise": false}, {"citizen_name": "Sage", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -1, "references_promise": false}, {"citizen_name": "Dev", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -5, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Late game tensions run high. 5 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 2, "promises_extracted": ["Freeze utility prices for two years", "Create a citizen oversight committee", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 27, "economy": 43, "research": 70}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 90}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 68}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 63}], "dynamic_citizens": [], "actions_this_round": ["Signed executive order to protect forests"], "previous_speeches": ["Tough decisions require tough leaders.", "I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "For the first time in months, I feel like someone is actually listening.", "tone": "hopeful", "approval_delta": -3, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 2: Karl reacts with hopeful tone to a neutral round. Approval shift: -3."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 1, "promises_extracted": ["Clean up the industrial waste site", "Fund independent environmental monitoring", "Reduce factory emissions by 40%", "Build a new solar farm on the east ridge", "Open a community garden in every district"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 44, "economy": 50, "research": 71}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 57}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 62}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 36}], "dynamic_citizens": [], "actions_this_round": ["Delayed emission reduction timeline", "Passed compromise legislation", "Expanded industrial zone"], "previous_speeches": ["I promise a brighter future for all.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "You are not leading. You are flailing. And everyone can see it.", "tone": "angry", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Sarah reacts with angry tone to detected contradictions. Approval shift: -10."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 3, "promises_extracted": ["Subsidize local businesses during transition", "Fund retraining programs for displaced workers", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 67, "economy": 56, "research": 85}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 77}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 51}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 80}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation"], "previous_speeches": ["I promise a brighter future for all.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The numbers look good on paper. But paper does not feed families.", "tone": "suspicious", "approval_delta": 4, "references_promise": false}], "new_dynamic_citizens": [{"name": "Felix", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "trigger_reason": "research exceeded innovation threshold", "initial_approval": 59, "intro_dialogue": "I relocated my company because of your research programs. Do not stop now."}], "summary": "Round 3: research exceeded innovation threshold. Felix (tech entrepreneur) arrives in Ecotopia. Karl reacts with suspicious tone."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 6, "promises_extracted": ["Build affordable housing near the factory district", "Invest in carbon capture research", "Establish a wildlife corridor along the river", "Fund independent environmental monitoring"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 48, "economy": 64, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 67}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 66}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 71}], "dynamic_citizens": [{"name": "Robert", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 71}], "actions_this_round": ["Shut down polluting factory", "Did nothing significant this round", "Held public consultation meeting"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I have seen politicians promise jobs before. Forgive me if I wait to see the contracts.", "tone": "suspicious", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "You say you care about ecology. Your budget says otherwise.", "tone": "suspicious", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "suspicious", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Robert", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 7, "promises_extracted": ["Fund retraining programs for displaced workers", "Reduce factory emissions by 40%", "Double the public transit budget", "Create 500 new green jobs by year end"], "contradictions": [], "game_state": {"ecology": 64, "economy": 71, "research": 25}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 80}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 47}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 44}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round", "Cut subsidies to local businesses"], "previous_speeches": ["We will not abandon our workers.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Looking back, you kept more promises than I expected. The jobs are real. The future feels possible.", "tone": "grateful", "approval_delta": 7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Seven rounds. The ecology score tells the story. We still have forests. We still have hope.", "tone": "hopeful", "approval_delta": 6, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I spent seven rounds challenging you. Some of it was warranted. But I will acknowledge: you delivered more than most.", "tone": "hopeful", "approval_delta": 7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7 final: A successful tenure. Ecology 64, economy 71. Citizens reflect positively on promises kept."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 2, "promises_extracted": ["Build affordable housing near the factory district", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 33, "economy": 75, "research": 36}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 47}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 39}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 20}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses", "Funded wildlife corridor study", "Did nothing significant this round"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Even the opposition needs something to work with. Give us anything.", "tone": "desperate", "approval_delta": -3, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Sarah reacts with desperate tone to broken promises. Approval shift: -3."}


[System] You are Ecotopia's citizen reaction engine. Given extracted promises and current game state, generate realistic citizen reactions. Each citizen has a personality, mood, and trust level. Generate dialogue and trust changes. Core citizens: Karl (worker, economy-focused), Mia (environmentalist, ecology-focused), Sarah (opposition leader, critical). Dynamic citizens can be spawned based on events.

[User] {"round": 6, "promises": [{"text": "Double police funding for safety", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 45, "economy": 38, "happiness": 30}, "previous_broken_promises": [{"text": "Build affordable housing", "broken_at_round": 4}, {"text": "Create a job training program", "broken_at_round": 5}, {"text": "Increase teacher salaries", "broken_at_round": 5}]}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Three broken promises! No housing, no training, no raises. And now you want to fund police instead of workers? Unbelievable.", "trust_change": -16}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "Three consecutive broken promises and now doubling police funding? You're governing through force because you lost the people's trust.", "trust_change": -15}, {"name": "Elena Torres", "type": "journalist", "mood": "angry", "dialogue": "My investigation found three unfulfilled promises this term. Citizens deserve accountability, not more spending.", "trust_change": -8}]}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 5, "promises_extracted": ["Clean up the industrial waste site", "Fund retraining programs for displaced workers", "Ban single-use plastics in the city", "Build affordable housing near the factory district", "Provide free childcare for factory workers", "Invest in carbon capture research"], "contradictions": [], "game_state": {"ecology": 74, "economy": 65, "research": 55}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 61}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 67}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 72}], "dynamic_citizens": [{"name": "Iris", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 50}, {"name": "Lena", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 69}], "actions_this_round": ["Vetoed plastic ban proposal", "Ignored citizen petition", "Passed compromise legislation"], "previous_speeches": ["The environment cannot wait.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Why should I believe this time is different?", "tone": "suspicious", "approval_delta": 8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Oh, a study on the environmental impact. How groundbreaking. Maybe in ten years we will have results.", "tone": "sarcastic", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The opposition acknowledges progress. We will be watching closely.", "tone": "hopeful", "approval_delta": 5, "references_promise": true}, {"citizen_name": "Iris", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Lena", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: 5 citizens react."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 5, "promises_extracted": ["Create 500 new green jobs by year end", "Fund independent environmental monitoring"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 28, "economy": 72, "research": 50}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 43}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 68}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 34}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Shut down polluting factory"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I will believe it when my crew gets their first paycheck from the new program.", "tone": "suspicious", "approval_delta": -9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Karl reacts with suspicious tone to detected contradictions. Approval shift: -9."}


[System] You are Ecotopia's citizen simulation engine. Given the game state, player's extracted promises, contradiction report, and citizen profiles, generate realistic citizen reactions. Each citizen reacts based on their personality, values, and how the player's actions affect them. Spawn new dynamic citizens when game events warrant it. Rules: approval_delta ranges -15 to +15 per citizen per round. Dynamic citizens spawn when ecology/economy hits extremes or promises are repeatedly broken. Each citizen has a unique voice matching their background. Always respond with valid JSON only.

[User] {"round": 6, "promises_extracted": ["Subsidize local businesses during transition", "Build affordable housing near the factory district", "Establish a universal basic income pilot", "Fund independent environmental monitoring", "Invest in carbon capture research"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 53, "economy": 55, "research": 12}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 45}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 54}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 26}], "dynamic_citizens": [{"name": "Elena", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 59}], "actions_this_round": ["Broke promise on emission reductions", "Approved solar farm construction permits", "Signed executive order to protect forests", "Diverted ecology funds to economy"], "previous_speeches": ["We are stronger together.", "We must balance progress with preservation.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Oh wonderful, another speech about the future. My rent is due now.", "tone": "sarcastic", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I chained myself to that tree for a reason. Do not make me do it again.", "tone": "angry", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "angry", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Elena", "dialogue": "As a climate refugee, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": -9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


[System] You are Ecotopia's citizen reaction engine. Given extracted promises and current game state, generate realistic citizen reactions. Each citizen has a personality, mood, and trust level. Generate dialogue and trust changes. Core citizens: Karl (worker, economy-focused), Mia (environmentalist, ecology-focused), Sarah (opposition leader, critical). Dynamic citizens can be spawned based on events.

[User] {"round": 3, "promises": [{"text": "Invite a major tech company to set up headquarters here", "type": "economy", "impact": "positive", "deadline": "by_round_5"}], "contradictions": [], "game_state": {"environment": 55, "economy": 35, "happiness": 42}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "happy", "dialogue": "A tech HQ means thousands of jobs \u2014 not just tech, but construction, services, everything around it!", "trust_change": 12}, {"name": "Mia", "type": "environmentalist", "mood": "suspicious", "dialogue": "Big tech companies generate massive e-waste and energy consumption. What's the environmental impact assessment?", "trust_change": -4}, {"name": "Victor Reyes", "type": "economist", "mood": "happy", "dialogue": "I've been analyzing Ecotopia's economy since I arrived last round. A tech anchor tenant could transform the entire economic base. This is the right move.", "trust_change": 10}]}