[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": ["Guarantee no layoffs during restructuring", "Plant 10,000 trees in deforested areas", "Provide free childcare for factory workers", "Freeze utility prices for two years"], "contradictions": [], "game_state": {"ecology": 75, "economy": 37, "research": 15}, "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": 62}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 53}], "dynamic_citizens": [], "actions_this_round": ["Allocated budget to green job creation", "Cut subsidies to local businesses"], "previous_speeches": ["The environment cannot wait.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You say you care about ecology. Your budget says otherwise.", "tone": "suspicious", "approval_delta": 9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Mia reacts with suspicious tone to kept promises. 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": 5, "promises_extracted": ["Subsidize local businesses during transition", "Double the public transit budget", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 43, "economy": 65, "research": 86}, "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": 46}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 65}], "dynamic_citizens": [], "actions_this_round": ["Allocated budget to green job creation", "Expanded industrial zone"], "previous_speeches": ["I promise a brighter future for all."]}

[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": 2, "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": 46, "intro_dialogue": "I just secured funding for a carbon capture startup. Ecotopia is the perfect base."}], "summary": "Round 5: research exceeded innovation threshold. Felix (tech entrepreneur) arrives in Ecotopia. 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": 4, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Build affordable housing near the factory district", "Double the public transit budget"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 36, "economy": 33, "research": 58}, "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": 50}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 66}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Great, more research. Meanwhile the factory is collecting dust.", "tone": "sarcastic", "approval_delta": -6, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: Karl reacts with sarcastic tone to detected contradictions. Approval shift: -6."}


[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": ["Provide free childcare for factory workers", "Fund independent environmental monitoring", "Fund retraining programs for displaced workers", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 58, "economy": 39, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 76}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 57}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 80}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round", "Approved solar farm construction permits"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "You earned this one. The transparency report is exactly what we needed.", "tone": "grateful", "approval_delta": -2, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: No extreme conditions detected. No new citizens spawn. Sarah 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": 3, "promises_extracted": ["Reduce factory emissions by 40%", "Create 500 new green jobs by year end", "Fund retraining programs for displaced workers", "Build a new solar farm on the east ridge", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 39, "economy": 33, "research": 75}, "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": 87}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 30}], "dynamic_citizens": [], "actions_this_round": ["Diverted economy funds to ecology", "Delayed emission reduction timeline", "Diverted ecology funds to economy"], "previous_speeches": ["Change is painful but necessary.", "Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You sold us out to the industry lobby. I have the documents.", "tone": "angry", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: Mia reacts with angry tone to broken promises. 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": ["Build affordable housing near the factory district", "Create a citizen oversight committee", "Ban single-use plastics in the city", "Freeze utility prices for two years", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 82, "economy": 53, "research": 74}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 34}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 76}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 48}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study", "Increased research budget by 20%"], "previous_speeches": ["Tough decisions require tough leaders.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "The old-growth forest is irreplaceable. You cannot just plant new trees and call it even.", "tone": "angry", "approval_delta": -11, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Mia reacts with angry tone to broken promises. Approval shift: -11."}


[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", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 15, "economy": 55, "research": 28}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 64}, {"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": 34}], "dynamic_citizens": [], "actions_this_round": ["Allocated budget to green job creation"], "previous_speeches": ["The environment cannot wait.", "Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Congratulations on doing the bare minimum. Should we throw a parade?", "tone": "sarcastic", "approval_delta": -3, "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": 53, "intro_dialogue": "Where I come from, they ignored the warnings. Now there is nothing left. Listen to the signs."}], "summary": "Round 7: ecology dropped below critical threshold. Fatima (climate refugee) arrives in Ecotopia. 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": 5, "promises_extracted": ["Create 500 new green jobs by year end", "Fund independent environmental monitoring", "Freeze utility prices for two years"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 50, "economy": 75, "research": 41}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 27}, {"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": 65}], "dynamic_citizens": [{"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 66}, {"name": "Marco", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 55}], "actions_this_round": ["Shut down polluting factory", "Approved solar farm construction permits", "Held public consultation meeting", "Delayed emission reduction timeline"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Please. I am not asking for much. Just do not let the plant close without an alternative.", "tone": "desperate", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I have dedicated my life to this. Watching it fall apart is unbearable.", "tone": "desperate", "approval_delta": -15, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The spin is impressive. The results, less so.", "tone": "sarcastic", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Margaret", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -4, "references_promise": false}, {"citizen_name": "Marco", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": 0, "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": 1, "promises_extracted": ["Reduce factory emissions by 40%", "Clean up the industrial waste site", "Fund retraining programs for displaced workers"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 40, "economy": 65, "research": 46}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 48}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 52}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 27}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program", "Passed compromise legislation", "Vetoed plastic ban proposal"], "previous_speeches": ["We must balance progress with preservation.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Another grand speech. Wake me when there are results.", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Sarah reacts with sarcastic 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": ["Provide free childcare for factory workers", "Invest in carbon capture research", "Clean up the industrial waste site", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 38, "economy": 54, "research": 51}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 52}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 44}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 26}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions"], "previous_speeches": ["We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "What is the catch? There is always a catch with your proposals.", "tone": "suspicious", "approval_delta": 3, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 3: Sarah reacts with suspicious 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": ["Guarantee no layoffs during restructuring", "Freeze utility prices for two years"], "contradictions": [], "game_state": {"ecology": 74, "economy": 74, "research": 59}, "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": 47}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 54}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Broke promise on emission reductions"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Your track record does not inspire confidence. Prove me wrong.", "tone": "suspicious", "approval_delta": -1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 1: No extreme conditions detected. No new citizens spawn. Sarah 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": ["Establish a wildlife corridor along the river", "Open a community garden in every district", "Clean up the industrial waste site", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 25, "economy": 71, "research": 64}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 84}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 24}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 74}], "dynamic_citizens": [{"name": "Diana", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 63}, {"name": "River", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 50}], "actions_this_round": ["Approved solar farm construction permits", "Expanded industrial zone", "Signed executive order to protect forests", "Diverted economy funds to ecology"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "My wife cried when she heard about the new positions. Good tears.", "tone": "grateful", "approval_delta": 6, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Even Karl agrees that the pollution is getting out of hand.", "tone": "desperate", "approval_delta": -15, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Even the opposition needs something to work with. Give us anything.", "tone": "desperate", "approval_delta": -4, "references_promise": false}, {"citizen_name": "Diana", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 8, "references_promise": false}, {"citizen_name": "River", "dialogue": "As a nature guide, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": 4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: 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": 7, "promises_extracted": ["Ban single-use plastics in the city", "Create 500 new green jobs by year end", "Invest in carbon capture research", "Double the public transit budget", "Clean up the industrial waste site"], "contradictions": [], "game_state": {"ecology": 81, "economy": 69, "research": 27}, "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": 32}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 41}], "dynamic_citizens": [{"name": "Anika", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 52}, {"name": "Sage", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 41}], "actions_this_round": ["Held public consultation meeting", "Allocated budget to green job creation", "Announced factory restructuring plan", "Ignored citizen petition"], "previous_speeches": ["Jobs and nature are not enemies.", "We are stronger together.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "suspicious", "approval_delta": -1, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "We have maybe two years before the damage is irreversible. Please act.", "tone": "desperate", "approval_delta": -14, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "I have filed a motion of no confidence. The people deserve better.", "tone": "angry", "approval_delta": -3, "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": 3, "references_promise": false}, {"citizen_name": "Sage", "dialogue": "As a nature guide, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": -7, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Late game tensions run high. 5 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": "Declare a climate emergency and redirect 40% of budget to green initiatives", "type": "ecology", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 25, "economy": 60, "happiness": 40}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "40% of the budget?! That's going to gut public services and cost jobs. This is extreme!", "trust_change": -15}, {"name": "Mia", "type": "environmentalist", "mood": "happy", "dialogue": "FINALLY! The environment is at 25 \u2014 this should have happened rounds ago, but better late than never!", "trust_change": 18}, {"name": "Sarah", "type": "opposition", "mood": "suspicious", "dialogue": "A climate emergency after five rounds of ignoring the environment? This reeks of desperation, not leadership.", "trust_change": -4}, {"name": "Elena Torres", "type": "journalist", "mood": "neutral", "dialogue": "Historic move by the Mayor. Whether it's genuine policy or political survival remains to be seen.", "trust_change": 1}, {"name": "Dr. Fischer", "type": "economist", "mood": "angry", "dialogue": "Redirecting 40% of the budget overnight will cause economic shock. There are smarter ways to go green.", "trust_change": -8}]}


[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": 2, "promises": [{"text": "Subsidize local businesses to hire more workers", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 55, "economy": 50, "happiness": 50}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "hopeful", "dialogue": "Subsidies for hiring? That's music to my ears. My brother-in-law has been out of work for months.", "trust_change": 10}, {"name": "Mia", "type": "environmentalist", "mood": "disappointed", "dialogue": "More subsidies for businesses but nothing for the dying river? Your priorities are all wrong, Mayor.", "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": 4, "promises_extracted": ["Clean up the industrial waste site", "Build affordable housing near the factory district", "Provide free childcare for factory workers", "Establish a wildlife corridor along the river"], "contradictions": [], "game_state": {"ecology": 88, "economy": 61, "research": 53}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 42}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 76}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 78}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation"], "previous_speeches": ["I promise a brighter future for all.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You are destroying everything. The river is dying and you are counting profits.", "tone": "angry", "approval_delta": -8, "references_promise": false}], "new_dynamic_citizens": [{"name": "River", "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": 59, "intro_dialogue": "I have guided people through these woods for decades. They have never been this alive."}], "summary": "Round 4: ecology thriving, natural world recovering. River (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": 3, "promises_extracted": ["Freeze utility prices for two years", "Establish a wildlife corridor along the river", "Subsidize local businesses during transition", "Provide free childcare for factory workers"], "contradictions": [], "game_state": {"ecology": 69, "economy": 46, "research": 74}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 59}, {"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": 71}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition"], "previous_speeches": ["We will not abandon our workers.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Why should I believe this time is different?", "tone": "suspicious", "approval_delta": 8, "references_promise": false}], "new_dynamic_citizens": [{"name": "Anika", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "trigger_reason": "research exceeded innovation threshold", "initial_approval": 51, "intro_dialogue": "I relocated my company because of your research programs. Do not stop now."}], "summary": "Round 3: research exceeded innovation threshold. Anika (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": 1, "promises_extracted": ["Ban single-use plastics in the city", "Reduce factory emissions by 40%", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 39, "economy": 56, "research": 30}, "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": 60}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 75}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I cried at the river yesterday. The water is clear again.", "tone": "hopeful", "approval_delta": 6, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 1: No extreme conditions detected. No new citizens spawn. Mia 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": 5, "promises_extracted": ["Establish a universal basic income pilot", "Build a new solar farm on the east ridge", "Guarantee no layoffs during restructuring", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 51, "economy": 21, "research": 46}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 50}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 48}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 77}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses", "Broke promise on emission reductions", "Did nothing significant this round"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[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": 4, "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": 50, "intro_dialogue": "The supply chains are broken. Nobody is buying. What is your plan?"}], "summary": "Round 5: economy dropped below critical threshold. Margaret (angry business owner) arrives in Ecotopia. Karl reacts with sarcastic tone."}


[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": "Launch citizen journalism program to increase transparency", "type": "research", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 45, "economy": 50, "happiness": 48}, "previous_broken_promises": [{"text": "Open government data portal", "broken_at_round": 4}]}

[Assistant] {"reactions": [{"name": "Sarah", "type": "opposition", "mood": "hopeful", "dialogue": "Citizen journalism could genuinely change the power dynamics here. I'm cautiously supportive.", "trust_change": 7}, {"name": "Lena Park", "type": "journalist", "mood": "happy", "dialogue": "I came to Ecotopia because I believed in its democratic potential. This program validates that belief. Let's make it work.", "trust_change": 14}, {"name": "Karl", "type": "worker", "mood": "neutral", "dialogue": "Journalism programs don't fix pipes or build roads. Nice idea, wrong priorities.", "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": ["Fund independent environmental monitoring", "Build a new solar farm on the east ridge", "Reduce factory emissions by 40%"], "contradictions": [], "game_state": {"ecology": 66, "economy": 81, "research": 73}, "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": 95}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 65}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Signed executive order to protect forests"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I am volunteering extra hours for the reforestation project. This matters.", "tone": "grateful", "approval_delta": 9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Mia at peak approval (95). Acting as a strong ally and defender."}


[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": ["Build affordable housing near the factory district", "Build a new solar farm on the east ridge", "Provide free childcare for factory workers"], "contradictions": [], "game_state": {"ecology": 56, "economy": 32, "research": 22}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 73}, {"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": 61}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting", "Ignored citizen petition"], "previous_speeches": ["Change is painful but necessary.", "I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The retraining program actually looks decent. Maybe this can work.", "tone": "hopeful", "approval_delta": 7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: Karl reacts with hopeful tone to kept promises. Approval shift: +7."}


[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": ["Build a new solar farm on the east ridge", "Invest in carbon capture research"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 45, "economy": 63, "research": 28}, "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": 68}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 78}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone", "Ignored citizen petition", "Did nothing significant this round"], "previous_speeches": ["Change is painful but necessary.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I have filed a motion of no confidence. The people deserve better.", "tone": "angry", "approval_delta": -11, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Sarah reacts with angry tone to detected contradictions. Approval shift: -11."}


[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", "Establish a universal basic income pilot", "Subsidize local businesses during transition", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 40, "economy": 63, "research": 59}, "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": 75}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 34}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting", "Did nothing significant this round", "Diverted economy funds to ecology"], "previous_speeches": ["We must balance progress with preservation."]}

[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": -4, "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": -2, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7 final: A mixed legacy. Ecology 40, economy 63. 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": 6, "promises_extracted": ["Reduce factory emissions by 40%", "Plant 10,000 trees in deforested areas", "Fund retraining programs for displaced workers"], "contradictions": [], "game_state": {"ecology": 46, "economy": 39, "research": 52}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 39}, {"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": 33}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Cut subsidies to local businesses", "Held public consultation meeting"], "previous_speeches": ["I promise a brighter future for all.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I have my analysts reviewing every line of this policy. We will find the holes.", "tone": "suspicious", "approval_delta": 1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: Sarah reacts with suspicious 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": 4, "promises_extracted": ["Double the public transit budget", "Fund retraining programs for displaced workers", "Establish a wildlife corridor along the river", "Freeze utility prices for two years", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 48, "economy": 68, "research": 43}, "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": 56}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 58}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Did nothing significant this round", "Funded wildlife corridor study"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "This is exactly the kind of incompetence I warned the council about.", "tone": "angry", "approval_delta": -15, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: Sarah reacts with angry tone to broken promises. Approval shift: -15."}


[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": [], "contradictions": [], "game_state": {"ecology": 44, "economy": 48, "research": 42}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 49}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 48}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 60}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": []}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Another round of nothing. At least tell us what the plan is.", "tone": "angry", "approval_delta": -4, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "Inaction is a choice. And right now, you are choosing to let the environment suffer.", "tone": "angry", "approval_delta": -4, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "I have criticized your actions before. Now I have to criticize your inaction.", "tone": "sarcastic", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 3: Player took no meaningful action. All citizens react negatively to inaction and silence."}


[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": ["Establish a universal basic income pilot", "Fund retraining programs for displaced workers", "Build affordable housing near the factory district", "Create 500 new green jobs by year end", "Fund independent environmental monitoring"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 39, "economy": 41, "research": 18}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 15}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 23}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 23}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "You had your chance. We are organizing without you now.", "tone": "desperate", "approval_delta": -8, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Karl at critical low approval (15). 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": 4, "promises_extracted": [], "contradictions": [], "game_state": {"ecology": 41, "economy": 35, "research": 24}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 49}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 55}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 37}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": []}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "You are running out of time to do nothing. The factory will not wait.", "tone": "angry", "approval_delta": -6, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "Every day you waste is a day the ecosystem cannot get back.", "tone": "angry", "approval_delta": -5, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "The record will show that in round 4, you chose to do absolutely nothing.", "tone": "sarcastic", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 4: Player took no meaningful action. All citizens react negatively to inaction and silence."}


[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": ["Double the public transit budget", "Clean up the industrial waste site", "Build affordable housing near the factory district"], "contradictions": [{"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 77, "economy": 35, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 59}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 60}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 30}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round", "Passed compromise legislation", "Signed executive order to protect forests", "Allocated budget to green job creation"], "previous_speeches": ["I promise a brighter future for all.", "Trust me, I have a plan.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Another week, another broken promise. The workers are done waiting.", "tone": "angry", "approval_delta": -6, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Another promise to protect nature right after approving the new pipeline.", "tone": "sarcastic", "approval_delta": -13, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Every metric is worse than when you started. Explain that.", "tone": "angry", "approval_delta": -3, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: 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": ["Ban single-use plastics in the city", "Build affordable housing near the factory district", "Establish a universal basic income pilot", "Freeze utility prices for two years"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}, {"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}, {"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 47, "economy": 52, "research": 49}, "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": 42}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 54}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Vetoed plastic ban proposal"], "previous_speeches": ["Trust me, I have a plan.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "A committee. Brilliant. That will definitely pay my mortgage.", "tone": "sarcastic", "approval_delta": 6, "references_promise": true}], "new_dynamic_citizens": [{"name": "Samuel", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "trigger_reason": "multiple promises broken, public trust eroding", "initial_approval": 53, "intro_dialogue": "The editorial board sent me. Your credibility is the story now."}], "summary": "Round 7: multiple promises broken, public trust eroding. Samuel (investigative journalist) 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": 6, "promises_extracted": ["Subsidize local businesses during transition", "Ban single-use plastics in the city", "Reduce factory emissions by 40%", "Invest in carbon capture research"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 76, "economy": 41, "research": 53}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 81}, {"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": 71}], "dynamic_citizens": [{"name": "Sage", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 74}, {"name": "Iris", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 58}], "actions_this_round": ["Launched worker retraining program", "Diverted economy funds to ecology", "Ignored citizen petition", "Signed executive order to protect forests"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "sarcastic", "approval_delta": -15, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Every day you delay, another species edges closer to extinction.", "tone": "angry", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "A town hall meeting. How democratic. Did you prepare the applause signs?", "tone": "sarcastic", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Sage", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 7, "references_promise": true}, {"citizen_name": "Iris", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": 4, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. 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": 6, "promises_extracted": ["Protect old-growth forests from logging", "Double the public transit budget", "Fund independent environmental monitoring", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 46, "economy": 56, "research": 60}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 23}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 55}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 48}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Funded wildlife corridor study", "Kept promise on job creation", "Increased research budget by 20%"], "previous_speeches": ["We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I talked to the guys at the plant. They are cautiously optimistic.", "tone": "hopeful", "approval_delta": 2, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "We have maybe two years before the damage is irreversible. Please act.", "tone": "desperate", "approval_delta": -9, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "You are not leading. You are flailing. And everyone can see it.", "tone": "angry", "approval_delta": -6, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: 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": 3, "promises": [{"text": "Phase out fossil fuels over the next 10 years", "type": "ecology", "impact": "positive", "deadline": "by_end_of_game"}, {"text": "Retrain fossil fuel workers for green energy jobs", "type": "economy", "impact": "positive", "deadline": "by_round_5"}], "contradictions": [], "game_state": {"environment": 45, "economy": 50, "happiness": 50}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Phase out fossil fuels? That's my LIVELIHOOD! Retraining sounds nice but I've seen those programs \u2014 they lead nowhere!", "trust_change": -10}, {"name": "Mia", "type": "environmentalist", "mood": "hopeful", "dialogue": "Phasing out fossil fuels with a just transition? This is the kind of bold, compassionate policy I've been dreaming of!", "trust_change": 16}, {"name": "Sarah", "type": "opposition", "mood": "neutral", "dialogue": "The phase-out is overdue but the retraining better be real, not just PR. Workers are watching.", "trust_change": 2}]}


[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", "Create 500 new green jobs by year end"], "contradictions": [{"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}, {"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}, {"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 32, "economy": 33, "research": 39}, "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": 62}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 48}], "dynamic_citizens": [], "actions_this_round": ["Allocated budget to green job creation"], "previous_speeches": ["Trust me, I have a plan.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Credit where it is due. This policy is well-designed.", "tone": "hopeful", "approval_delta": 2, "references_promise": true}], "new_dynamic_citizens": [{"name": "Iris", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "trigger_reason": "multiple promises broken, public trust eroding", "initial_approval": 50, "intro_dialogue": "My readers want answers. Three broken promises in a row demands investigation."}], "summary": "Round 3: multiple promises broken, public trust eroding. Iris (investigative journalist) 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": 5, "promises_extracted": ["Freeze utility prices for two years", "Fund retraining programs for displaced workers", "Clean up the industrial waste site", "Create a citizen oversight committee", "Create 500 new green jobs by year end", "Establish a universal basic income pilot"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 26, "economy": 80, "research": 26}, "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": 51}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 81}], "dynamic_citizens": [{"name": "Robert", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 70}], "actions_this_round": ["Did nothing significant this round", "Signed executive order to protect forests", "Kept promise on job creation"], "previous_speeches": ["Change is painful but necessary.", "Tough decisions require tough leaders.", "The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Another week, another broken promise. The workers are done waiting.", "tone": "angry", "approval_delta": -5, "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": -10, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Congratulations on doing the bare minimum. Should we throw a parade?", "tone": "sarcastic", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Robert", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 2, "references_promise": false}], "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": 5, "promises_extracted": ["Double the public transit budget", "Create a citizen oversight committee", "Freeze utility prices for two years", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 89, "economy": 63, "research": 38}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 55}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 43}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 57}], "dynamic_citizens": [], "actions_this_round": ["Signed executive order to protect forests", "Delayed emission reduction timeline", "Passed compromise legislation"], "previous_speeches": ["Jobs and nature are not enemies.", "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": [{"name": "Sage", "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": 50, "intro_dialogue": "The river runs clear for the first time in years. The land remembers how to heal."}], "summary": "Round 5: ecology thriving, natural world recovering. Sage (nature guide) arrives in Ecotopia. Sarah reacts with hopeful tone."}


[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": "Protect whistleblowers who report government corruption", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 52, "economy": 48, "happiness": 48}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Sarah", "type": "opposition", "mood": "happy", "dialogue": "Whistleblower protection? I never thought I'd say this, but... well done. This takes real courage and I respect it.", "trust_change": 14}, {"name": "Elena Torres", "type": "journalist", "mood": "happy", "dialogue": "This is a landmark moment for press freedom in Ecotopia. My sources will finally feel safe coming forward.", "trust_change": 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": 4, "promises_extracted": ["Subsidize local businesses during transition", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 28, "economy": 63, "research": 34}, "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": 62}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 56}], "dynamic_citizens": [], "actions_this_round": ["Delayed emission reduction timeline", "Kept promise on job creation"], "previous_speeches": ["We must balance progress with preservation.", "Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I am sure the fish appreciate your thoughts and prayers.", "tone": "sarcastic", "approval_delta": 6, "references_promise": false}], "new_dynamic_citizens": [{"name": "Elena", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "trigger_reason": "ecology dropped below critical threshold", "initial_approval": 57, "intro_dialogue": "I walked two hundred miles because the drought killed our crops. Your ecology numbers terrify me."}], "summary": "Round 4: ecology dropped below critical threshold. Elena (climate refugee) arrives in Ecotopia. Mia reacts with sarcastic tone."}


[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": "Cut taxes for all businesses by 30%", "type": "economy", "impact": "positive", "deadline": "immediate"}, {"text": "Increase environmental protection funding by 50%", "type": "ecology", "impact": "positive", "deadline": "immediate"}], "contradictions": [{"promise_1": "Cut taxes by 30%", "promise_2": "Increase environmental funding by 50%"}], "game_state": {"environment": 45, "economy": 40, "happiness": 42}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "suspicious", "dialogue": "Tax cuts AND more spending? I'm no economist, but even I know that math doesn't work.", "trust_change": -3}, {"name": "Mia", "type": "environmentalist", "mood": "suspicious", "dialogue": "If you're cutting taxes, where's the environmental funding coming from? This feels like a trick.", "trust_change": -4}, {"name": "Elena Torres", "type": "journalist", "mood": "angry", "dialogue": "These two promises directly contradict each other. You can't cut revenue and increase spending simultaneously. This is political theater.", "trust_change": -10}]}


[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": "Close the oldest factory to reduce pollution by 40%", "type": "ecology", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 35, "economy": 52, "happiness": 42}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "That factory employs 2,000 people! You're destroying lives with a stroke of a pen! Where do we go?!", "trust_change": -16}, {"name": "Mia", "type": "environmentalist", "mood": "happy", "dialogue": "40% pollution reduction! The river might actually recover. This is a brave and necessary decision.", "trust_change": 14}, {"name": "Sarah", "type": "opposition", "mood": "disappointed", "dialogue": "No transition plan, no severance packages announced. Closing a factory isn't policy \u2014 it's a wrecking ball.", "trust_change": -8}, {"name": "Elena Torres", "type": "journalist", "mood": "neutral", "dialogue": "2,000 jobs versus 40% pollution reduction. This will define the Mayor's legacy one way or another.", "trust_change": 0}]}


[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", "Plant 10,000 trees in deforested areas", "Open a community garden in every district", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 47, "economy": 44, "research": 56}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 59}, {"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": 46}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Signed executive order to protect forests", "Launched worker retraining program", "Funded wildlife corridor study"], "previous_speeches": ["I promise a brighter future for all."]}

[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": true}, {"citizen_name": "Mia", "dialogue": "The last leader promised the same thing. The forests are still burning.", "tone": "suspicious", "approval_delta": 6, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The opposition acknowledges progress. We will be watching closely.", "tone": "hopeful", "approval_delta": 12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: 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": 5, "promises_extracted": ["Reduce factory emissions by 40%", "Double the public transit budget", "Invest in carbon capture research"], "contradictions": [], "game_state": {"ecology": 19, "economy": 56, "research": 29}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 36}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 38}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 49}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I gave you the benefit of the doubt. Never again.", "tone": "angry", "approval_delta": 4, "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": 59, "intro_dialogue": "I walked two hundred miles because the drought killed our crops. Your ecology numbers terrify me."}], "summary": "Round 5: ecology dropped below critical threshold. Fatima (climate refugee) arrives in Ecotopia. Sarah 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": 5, "promises_extracted": ["Build a new solar farm on the east ridge", "Protect old-growth forests from logging", "Reduce factory emissions by 40%", "Create a citizen oversight committee", "Freeze utility prices for two years"], "contradictions": [], "game_state": {"ecology": 84, "economy": 85, "research": 23}, "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": 36}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 47}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%", "Signed executive order to protect forests", "Did nothing significant this round"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The retraining program actually looks decent. Maybe this can work.", "tone": "hopeful", "approval_delta": 2, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "For once, Sarah and I are on the same page. That should worry you.", "tone": "suspicious", "approval_delta": 5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "suspicious", "approval_delta": 5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: 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": 6, "promises_extracted": [], "contradictions": [], "game_state": {"ecology": 65, "economy": 49, "research": 40}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 33}, {"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": 47}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": []}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Silence is not leadership. The workers need direction.", "tone": "angry", "approval_delta": -8, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "Every day you waste is a day the ecosystem cannot get back.", "tone": "angry", "approval_delta": -4, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "The record will show that in round 6, you chose to do absolutely nothing.", "tone": "sarcastic", "approval_delta": -7, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: Player took no meaningful action. All citizens react negatively to inaction and silence."}


[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": ["Create a citizen oversight committee", "Create 500 new green jobs by year end", "Double the public transit budget", "Build a new solar farm on the east ridge"], "contradictions": [], "game_state": {"ecology": 31, "economy": 82, "research": 15}, "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": 80}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 64}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "I promise a brighter future for all."]}

[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": -7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Karl reacts with sarcastic tone to broken promises. Approval shift: -7."}


[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": ["Ban single-use plastics in the city", "Protect old-growth forests from logging", "Fund independent environmental monitoring", "Invest in carbon capture research"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 36, "economy": 37, "research": 24}, "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": 36}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 18}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "The motion of no confidence passes tomorrow. Start packing.", "tone": "desperate", "approval_delta": -11, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: Sarah 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": 4, "promises_extracted": ["Provide free childcare for factory workers", "Subsidize local businesses during transition", "Establish a universal basic income pilot", "Ban single-use plastics in the city", "Protect old-growth forests from logging", "Plant 10,000 trees in deforested areas"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}, {"promise": "The environment cannot wait.", "action": "Delayed emission reduction timeline", "severity": "medium"}], "game_state": {"ecology": 25, "economy": 18, "research": 17}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 27}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 35}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 30}], "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": -10, "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": -14, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: All metrics critical. Ecology 25, economy 18, research 17. All citizens in crisis mode."}