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

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

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


[System] You are Ecotopia's citizen 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": ["Guarantee no layoffs during restructuring", "Protect old-growth forests from logging", "Provide free childcare for factory workers"], "contradictions": [{"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 82, "economy": 27, "research": 27}, "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": 45}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 22}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study", "Passed compromise legislation", "Held public consultation meeting", "Delayed emission reduction timeline"], "previous_speeches": ["We must balance progress with preservation.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The union is ready to strike. You pushed us to this.", "tone": "angry", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I am sure the fish appreciate your thoughts and prayers.", "tone": "sarcastic", "approval_delta": -15, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "desperate", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


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

[User] {"round": 6, "promises_extracted": ["Guarantee no layoffs during restructuring", "Create a citizen oversight committee", "Build affordable housing near the factory district", "Reduce factory emissions by 40%", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 25, "economy": 43, "research": 54}, "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": 37}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 31}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation", "Diverted economy funds to ecology", "Shut down polluting factory", "Announced factory restructuring plan"], "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": -10, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "For once, Sarah and I are on the same page. That should worry you.", "tone": "suspicious", "approval_delta": 7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "desperate", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: 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": ["Build affordable housing near the factory district", "Freeze utility prices for two years", "Create 500 new green jobs by year end", "Guarantee no layoffs during restructuring", "Plant 10,000 trees in deforested areas"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 37, "economy": 36, "research": 58}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 80}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 35}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 56}], "dynamic_citizens": [{"name": "Douglas", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 50}], "actions_this_round": ["Ignored citizen petition", "Passed compromise legislation", "Funded wildlife corridor study"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "We gave you a chance. You gave us pink slips.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I have dedicated my life to this. Watching it fall apart is unbearable.", "tone": "desperate", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "This is exactly the kind of incompetence I warned the council about.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Douglas", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": 8, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Contradiction detected, trust eroding. 4 citizens react."}


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

[User] {"round": 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 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": 7, "promises_extracted": ["Reduce factory emissions by 40%", "Guarantee no layoffs during restructuring", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 32, "economy": 83, "research": 42}, "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": 64}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 65}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program", "Cut subsidies to local businesses"], "previous_speeches": ["Tough decisions require tough leaders.", "I promise a brighter future for all.", "The environment cannot wait."]}

[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": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "For once, Sarah and I are on the same page. That should worry you.", "tone": "suspicious", "approval_delta": -10, "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 7: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


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

[User] {"round": 5, "promises_extracted": ["Double the public transit budget", "Provide free childcare for factory workers", "Clean up the industrial waste site", "Subsidize local businesses during transition"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 36, "economy": 53, "research": 23}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 83}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 66}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 56}], "dynamic_citizens": [{"name": "Fatima", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 66}, {"name": "Birch", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 59}], "actions_this_round": ["Funded wildlife corridor study", "Diverted economy funds to ecology", "Launched worker retraining program", "Did nothing significant this round"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I love how every plan starts with the workers making sacrifices first.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "You sold us out to the industry lobby. I have the documents.", "tone": "angry", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The council received 200 complaints this week. Your approval is tanking.", "tone": "angry", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Fatima", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -10, "references_promise": false}, {"citizen_name": "Birch", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -7, "references_promise": true}], "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": 5, "promises_extracted": ["Fund independent environmental monitoring", "Fund retraining programs for displaced workers", "Ban single-use plastics in the city", "Reduce factory emissions by 40%", "Double the public transit budget", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 32, "economy": 34, "research": 60}, "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": 54}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 71}], "dynamic_citizens": [{"name": "Iris", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 60}], "actions_this_round": ["Cut subsidies to local businesses", "Diverted ecology funds to economy", "Launched worker retraining program"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "sarcastic", "approval_delta": -14, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I want to believe you, but your voting record tells a different story.", "tone": "suspicious", "approval_delta": 5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I misjudged you on this one. The citizen committee works. Well done.", "tone": "grateful", "approval_delta": 10, "references_promise": true}, {"citizen_name": "Iris", "dialogue": "As a investigative journalist, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: 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": ["Plant 10,000 trees in deforested areas", "Freeze utility prices for two years", "Create a citizen oversight committee"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 44, "economy": 64, "research": 22}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 24}, {"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": 35}], "dynamic_citizens": [{"name": "Yuki", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 59}], "actions_this_round": ["Announced factory restructuring plan", "Broke promise on emission reductions"], "previous_speeches": ["We are stronger together.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "desperate", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The emissions data is public. You lied. The pollution got worse.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I never thought I would say this, but maybe we need to work together.", "tone": "desperate", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Yuki", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 5, "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": 7, "promises_extracted": ["Fund independent environmental monitoring", "Provide free childcare for factory workers", "Double the public transit budget", "Guarantee no layoffs during restructuring", "Open a community garden in every district", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 28, "economy": 50, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 63}, {"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": 32}], "dynamic_citizens": [{"name": "Anika", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 61}], "actions_this_round": ["Expanded industrial zone", "Allocated budget to green job creation"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "You shut down the plant without a plan. People have families to feed.", "tone": "angry", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I chained myself to that tree for a reason. Do not make me do it again.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "sarcastic", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Anika", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 3, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


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

[User] {"round": 6, "promises_extracted": ["Open a community garden in every district", "Provide free childcare for factory workers", "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": 26, "economy": 69, "research": 70}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 41}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 58}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 66}], "dynamic_citizens": [{"name": "Douglas", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 75}], "actions_this_round": ["Expanded industrial zone", "Launched worker retraining program", "Broke promise on emission reductions"], "previous_speeches": ["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": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I am sure the fish appreciate your thoughts and prayers.", "tone": "sarcastic", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "What is the catch? There is always a catch with your proposals.", "tone": "suspicious", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Douglas", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -8, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


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

[User] {"round": 7, "promises_extracted": ["Guarantee no layoffs during restructuring", "Plant 10,000 trees in deforested areas", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 52, "economy": 38, "research": 54}, "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": 90}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 43}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Did nothing significant this round", "Cut subsidies to local businesses"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "sarcastic", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The ecosystem is collapsing. I am not exaggerating. Look at the data.", "tone": "desperate", "approval_delta": -7, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "Another grand speech. Wake me when there are results.", "tone": "sarcastic", "approval_delta": -13, "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": 7, "promises_extracted": ["Clean up the industrial waste site", "Invest in carbon capture research", "Guarantee no layoffs during restructuring", "Ban single-use plastics in the city"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 51, "economy": 45, "research": 18}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 51}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 59}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 79}], "dynamic_citizens": [{"name": "River", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 62}], "actions_this_round": ["Shut down polluting factory", "Funded wildlife corridor study", "Diverted ecology funds to economy"], "previous_speeches": ["Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "angry", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Compromise. That is a funny word for letting them pollute half as much.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "What is the catch? There is always a catch with your proposals.", "tone": "suspicious", "approval_delta": -12, "references_promise": true}, {"citizen_name": "River", "dialogue": "As a nature guide, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": 0, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


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

[User] {"round": 7, "promises_extracted": ["Build a new solar farm on the east ridge", "Establish a wildlife corridor along the river", "Fund retraining programs for displaced workers", "Plant 10,000 trees in deforested areas", "Build affordable housing near the factory district", "Invest in carbon capture research"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 82, "economy": 48, "research": 21}, "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": 69}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 50}], "dynamic_citizens": [{"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 41}], "actions_this_round": ["Expanded industrial zone", "Kept promise on job creation", "Increased research budget by 20%", "Broke promise on emission reductions"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "We gave you a chance. You gave us pink slips.", "tone": "angry", "approval_delta": -6, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The old-growth forest is irreplaceable. You cannot just plant new trees and call it even.", "tone": "angry", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Margaret", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -6, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


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

[User] {"round": 6, "promises_extracted": ["Establish a wildlife corridor along the river", "Invest in carbon capture research", "Build affordable housing near the factory district"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 26, "economy": 66, "research": 14}, "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": 58}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 31}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Held public consultation meeting", "Launched worker retraining program"], "previous_speeches": ["Tough decisions require tough leaders.", "Trust me, I have a plan.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Another week, another broken promise. The workers are done waiting.", "tone": "angry", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "You planted fifty trees and called it reforestation. The math does not work that way.", "tone": "sarcastic", "approval_delta": -14, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The public is losing faith in all of us. Not just you. All of us.", "tone": "desperate", "approval_delta": -4, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


[System] You are Ecotopia's citizen 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": 6, "promises_extracted": ["Provide free childcare for factory workers", "Establish a universal basic income pilot", "Establish a wildlife corridor along the river", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 30, "economy": 51, "research": 57}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 26}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 71}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 74}], "dynamic_citizens": [{"name": "Zara", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 58}, {"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 71}], "actions_this_round": ["Ignored citizen petition", "Funded wildlife corridor study"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The union is ready to strike. You pushed us to this.", "tone": "angry", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Even Karl agrees that the pollution is getting out of hand.", "tone": "angry", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": -13, "references_promise": true}, {"citizen_name": "Zara", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -4, "references_promise": false}, {"citizen_name": "Margaret", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -4, "references_promise": false}], "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": 5, "promises_extracted": ["Establish a universal basic income pilot", "Create a citizen oversight committee", "Establish a wildlife corridor along the river", "Double the public transit budget"], "contradictions": [], "game_state": {"ecology": 26, "economy": 43, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 70}, {"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": 69}], "dynamic_citizens": [{"name": "Diana", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 41}, {"name": "Lena", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 38}], "actions_this_round": ["Passed compromise legislation", "Delayed emission reduction timeline", "Signed executive order to protect forests", "Broke promise on emission reductions"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I will believe it when my crew gets their first paycheck from the new program.", "tone": "suspicious", "approval_delta": 8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I am sure the fish appreciate your thoughts and prayers.", "tone": "sarcastic", "approval_delta": 2, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "suspicious", "approval_delta": -1, "references_promise": false}, {"citizen_name": "Diana", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 1, "references_promise": true}, {"citizen_name": "Lena", "dialogue": "As a tech entrepreneur, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": 8, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: 5 citizens react."}


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

[User] {"round": 7, "promises_extracted": ["Build a new solar farm on the east ridge", "Reduce factory emissions by 40%", "Open a community garden in every district", "Plant 10,000 trees in deforested areas", "Clean up the industrial waste site", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 56, "economy": 84, "research": 53}, "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": 66}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 75}], "dynamic_citizens": [{"name": "Lena", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 51}], "actions_this_round": ["Launched worker retraining program", "Did nothing significant this round", "Allocated budget to green job creation"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "My daughter asked if dad would keep his job. I told her yes. Do not make me a liar.", "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": -7, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "desperate", "approval_delta": -15, "references_promise": false}, {"citizen_name": "Lena", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Late game tensions run high. 4 citizens react."}


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

[User] {"round": 5, "promises_extracted": ["Freeze utility prices for two years", "Create 500 new green jobs by year end", "Create a citizen oversight committee"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 70, "economy": 54, "research": 65}, "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": 56}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 43}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Broke promise on emission reductions", "Passed compromise legislation"], "previous_speeches": ["Jobs and nature are not enemies.", "I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "You promised us jobs, and what did we get? More uncertainty. My crew is talking about leaving.", "tone": "angry", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Compromise. That is a funny word for letting them pollute half as much.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "sarcastic", "approval_delta": -6, "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": 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": 7, "promises_extracted": ["Guarantee no layoffs during restructuring", "Freeze utility prices for two years", "Clean up the industrial waste site"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 43, "economy": 66, "research": 29}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 80}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 54}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 74}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Approved solar farm construction permits", "Held public consultation meeting", "Launched worker retraining program"], "previous_speeches": ["We are stronger together.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "A committee. Brilliant. That will definitely pay my mortgage.", "tone": "sarcastic", "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": -8, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I have my analysts reviewing every line of this policy. We will find the holes.", "tone": "suspicious", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


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

[User] {"round": 7, "promises_extracted": ["Reduce factory emissions by 40%", "Freeze utility prices for two years", "Guarantee no layoffs during restructuring", "Build a new solar farm on the east ridge", "Plant 10,000 trees in deforested areas", "Open a community garden in every district"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 30, "economy": 43, "research": 69}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 85}, {"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": 85}], "dynamic_citizens": [{"name": "Diana", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 64}], "actions_this_round": ["Funded wildlife corridor study", "Kept promise on job creation", "Diverted economy funds to ecology"], "previous_speeches": ["Change is painful but necessary.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "sarcastic", "approval_delta": -3, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I trusted you. That was my mistake.", "tone": "angry", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "sarcastic", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Diana", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": 8, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


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

[User] {"round": 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": 5, "promises_extracted": ["Freeze utility prices for two years", "Establish a universal basic income pilot", "Protect old-growth forests from logging", "Create a citizen oversight committee", "Establish a wildlife corridor along the river", "Fund retraining programs for displaced workers"], "contradictions": [], "game_state": {"ecology": 32, "economy": 35, "research": 29}, "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": 73}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 83}], "dynamic_citizens": [{"name": "Birch", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 66}, {"name": "Dev", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 66}], "actions_this_round": ["Expanded industrial zone", "Diverted ecology funds to economy", "Allocated budget to green job creation"], "previous_speeches": ["We must balance progress with preservation.", "Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Great, more research. Meanwhile the factory is collecting dust.", "tone": "sarcastic", "approval_delta": 3, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "You are destroying everything. The river is dying and you are counting profits.", "tone": "angry", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "If you maintain this trajectory, you might actually earn the public trust.", "tone": "hopeful", "approval_delta": 2, "references_promise": false}, {"citizen_name": "Birch", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 5, "references_promise": true}, {"citizen_name": "Dev", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": 4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: 5 citizens react."}