[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", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 77, "economy": 35, "research": 49}, "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": 51}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 79}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone", "Diverted ecology funds to economy"], "previous_speeches": ["Tough decisions require tough leaders.", "Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I walked through the reforested area yesterday. Life is coming back.", "tone": "hopeful", "approval_delta": 3, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Mia reacts with hopeful tone to a neutral round. Approval shift: +3."}


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

[User] {"round": 4, "promises_extracted": ["Ban single-use plastics in the city", "Create 500 new green jobs by year end", "Provide free childcare for factory workers", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 82, "economy": 51, "research": 51}, "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": 60}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 34}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study", "Diverted economy funds to ecology", "Delayed emission reduction timeline"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "The solar farm reduces emissions AND creates jobs. This is what I have been asking for.", "tone": "hopeful", "approval_delta": -8, "references_promise": false}], "new_dynamic_citizens": [{"name": "Fern", "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": 54, "intro_dialogue": "The eagles returned to the valley this morning. I came to tell you it is working."}], "summary": "Round 4: ecology thriving, natural world recovering. Fern (nature guide) arrives in Ecotopia. 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": 2, "promises_extracted": ["Protect old-growth forests from logging", "Create a citizen oversight committee", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 27, "economy": 61, "research": 24}, "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": 69}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 60}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Diverted economy funds to ecology"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Oh wonderful, another speech about the future. My rent is due now.", "tone": "sarcastic", "approval_delta": 2, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 2: Karl reacts with sarcastic tone to a neutral round. Approval shift: +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": 2, "promises_extracted": ["Invest in carbon capture research", "Create 500 new green jobs by year end", "Reduce factory emissions by 40%", "Clean up the industrial waste site", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 68, "economy": 65, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 77}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 40}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 65}], "dynamic_citizens": [], "actions_this_round": ["Signed executive order to protect forests"], "previous_speeches": ["I promise a brighter future for all.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Oh, a study on the environmental impact. How groundbreaking. Maybe in ten years we will have results.", "tone": "sarcastic", "approval_delta": -7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Mia 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": 6, "promises_extracted": ["Fund retraining programs for displaced workers", "Subsidize local businesses during transition", "Clean up the industrial waste site", "Build affordable housing near the factory district", "Create 500 new green jobs by year end", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 25, "economy": 32, "research": 13}, "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": 58}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 84}], "dynamic_citizens": [{"name": "Zara", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 56}, {"name": "Fatima", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 60}], "actions_this_round": ["Ignored citizen petition", "Cut subsidies to local businesses", "Signed executive order to protect forests"], "previous_speeches": ["Tough decisions require tough leaders.", "We will not abandon our workers.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "hopeful", "approval_delta": 10, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "We have maybe two years before the damage is irreversible. Please act.", "tone": "desperate", "approval_delta": -8, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "The spin is impressive. The results, less so.", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Zara", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 3, "references_promise": false}, {"citizen_name": "Fatima", "dialogue": "As a climate refugee, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": 6, "references_promise": true}], "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": 1, "promises_extracted": ["Establish a universal basic income pilot", "Fund retraining programs for displaced workers", "Build a new solar farm on the east ridge", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 49, "economy": 57, "research": 67}, "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": 62}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 32}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting", "Did nothing significant this round"], "previous_speeches": ["I promise a brighter future for all.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The numbers look good on paper. But paper does not feed families.", "tone": "suspicious", "approval_delta": -3, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 1: Karl 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": 3, "promises_extracted": ["Double the public transit budget", "Clean up the industrial waste site", "Ban single-use plastics in the city", "Build a new solar farm on the east ridge"], "contradictions": [], "game_state": {"ecology": 93, "economy": 63, "research": 48}, "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": 64}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 47}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses"], "previous_speeches": ["Change is painful but necessary."]}

[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": 0, "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": 49, "intro_dialogue": "The forest is singing again. I thought I would never hear it. Thank you."}], "summary": "Round 3: ecology thriving, natural world recovering. Sage (nature guide) arrives in Ecotopia. Karl reacts with hopeful tone."}


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

[User] {"round": 7, "promises_extracted": ["Protect old-growth forests from logging", "Invest in carbon capture research", "Subsidize local businesses during transition"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 49, "economy": 51, "research": 50}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 43}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 42}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 85}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation", "Funded wildlife corridor study", "Held public consultation meeting", "Cut subsidies to local businesses"], "previous_speeches": ["Tough decisions require tough leaders.", "We will not abandon our workers.", "Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I warned you this would happen. Nobody listens to the working man.", "tone": "angry", "approval_delta": -13, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The last leader promised the same thing. The forests are still burning.", "tone": "suspicious", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "angry", "approval_delta": -6, "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": 3, "promises_extracted": ["Fund independent environmental monitoring", "Build affordable housing near the factory district", "Freeze utility prices for two years"], "contradictions": [], "game_state": {"ecology": 50, "economy": 41, "research": 23}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 30}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 57}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 35}], "dynamic_citizens": [], "actions_this_round": ["Allocated budget to green job creation"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Great, more research. Meanwhile the factory is collecting dust.", "tone": "sarcastic", "approval_delta": 6, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 3: No extreme conditions detected. No new citizens spawn. 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": 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": 6, "promises_extracted": ["Ban single-use plastics in the city", "Double the public transit budget", "Open a community garden in every district", "Subsidize local businesses during transition"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}, {"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}, {"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 33, "economy": 55, "research": 47}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 67}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 37}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 52}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program", "Increased research budget by 20%"], "previous_speeches": ["We are stronger together.", "The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You say you care about ecology. Your budget says otherwise.", "tone": "suspicious", "approval_delta": 1, "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": 45, "intro_dialogue": "I have documents showing the discrepancy between your claims and the data. Respond."}], "summary": "Round 6: multiple promises broken, public trust eroding. Iris (investigative journalist) arrives in Ecotopia. Mia reacts with suspicious tone."}


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

[User] {"round": 6, "promises_extracted": ["Build affordable housing near the factory district", "Protect old-growth forests from logging", "Freeze utility prices for two years", "Establish a wildlife corridor along the river", "Subsidize local businesses during transition", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 25, "economy": 54, "research": 73}, "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": 90}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 55}], "dynamic_citizens": [{"name": "Birch", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 46}, {"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 38}], "actions_this_round": ["Broke promise on emission reductions", "Passed compromise legislation", "Diverted economy funds to ecology", "Expanded industrial zone"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "suspicious", "approval_delta": 2, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "The wildlife corridor proposal is beautiful. This could actually save the wetlands.", "tone": "hopeful", "approval_delta": -3, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "Even the opposition needs something to work with. Give us anything.", "tone": "desperate", "approval_delta": -5, "references_promise": false}, {"citizen_name": "Birch", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": 8, "references_promise": false}, {"citizen_name": "Margaret", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": 4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 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": 5, "promises_extracted": ["Ban single-use plastics in the city", "Create a citizen oversight committee", "Provide free childcare for factory workers"], "contradictions": [], "game_state": {"ecology": 66, "economy": 41, "research": 24}, "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": 80}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 53}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Broke promise on emission reductions", "Ignored citizen petition"], "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": "hopeful", "approval_delta": 0, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "The wildlife corridor proposal is beautiful. This could actually save the wetlands.", "tone": "hopeful", "approval_delta": -3, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": 1, "references_promise": false}], "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": ["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": 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": 2, "promises_extracted": ["Protect old-growth forests from logging", "Reduce factory emissions by 40%"], "contradictions": [], "game_state": {"ecology": 67, "economy": 64, "research": 53}, "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": 23}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 64}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone"], "previous_speeches": ["Tough decisions require tough leaders.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You say you care about ecology. Your budget says otherwise.", "tone": "suspicious", "approval_delta": 7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Mia reacts with suspicious 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": 4, "promises_extracted": ["Freeze utility prices for two years", "Protect old-growth forests from logging", "Double the public transit budget", "Guarantee no layoffs during restructuring", "Provide free childcare for factory workers"], "contradictions": [], "game_state": {"ecology": 82, "economy": 74, "research": 12}, "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": 57}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 61}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Shut down polluting factory"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Why should I believe this time is different?", "tone": "suspicious", "approval_delta": 0, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 4: Karl reacts with suspicious tone to a neutral round. Approval shift: +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": 6, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Fund retraining programs for displaced workers", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 81, "economy": 79, "research": 64}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 40}, {"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": 52}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Allocated budget to green job creation", "Expanded industrial zone"], "previous_speeches": ["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": "suspicious", "approval_delta": 8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Even Karl agrees that the pollution is getting out of hand.", "tone": "desperate", "approval_delta": -4, "references_promise": false}, {"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": 7, "promises_extracted": ["Double the public transit budget", "Reduce factory emissions by 40%", "Build a new solar farm on the east ridge", "Invest in carbon capture research", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 59, "economy": 26, "research": 36}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 60}, {"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": 54}], "dynamic_citizens": [{"name": "Jorge", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 50}], "actions_this_round": ["Diverted ecology funds to economy", "Ignored citizen petition", "Vetoed plastic ban proposal"], "previous_speeches": ["Change is painful but necessary.", "Every sacrifice today builds tomorrow.", "I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I love how every plan starts with the workers making sacrifices first.", "tone": "sarcastic", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Even Karl agrees that the pollution is getting out of hand.", "tone": "angry", "approval_delta": -3, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "This is exactly the kind of incompetence I warned the council about.", "tone": "angry", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Jorge", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -4, "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": 5, "promises_extracted": ["Subsidize local businesses during transition", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 65, "economy": 47, "research": 26}, "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": 80}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 55}], "dynamic_citizens": [], "actions_this_round": ["Delayed emission reduction timeline", "Broke promise on emission reductions"], "previous_speeches": ["Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "The children will inherit something worth protecting. That is your legacy.", "tone": "grateful", "approval_delta": 6, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: No extreme conditions detected. No new citizens spawn. Mia reacts with grateful tone."}


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

[User] {"round": 5, "promises_extracted": ["Subsidize local businesses during transition", "Fund independent environmental monitoring", "Build affordable housing near the factory district", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 86, "economy": 43, "research": 59}, "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": 74}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 34}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Signed executive order to protect forests", "Passed compromise legislation"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Another promise to protect nature right after approving the new pipeline.", "tone": "sarcastic", "approval_delta": 1, "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": 44, "intro_dialogue": "I have guided people through these woods for decades. They have never been this alive."}], "summary": "Round 5: ecology thriving, natural world recovering. River (nature guide) 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": 6, "promises_extracted": ["Reduce factory emissions by 40%", "Invest in carbon capture research", "Clean up the industrial waste site", "Open a community garden in every district"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 60, "economy": 64, "research": 41}, "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": 59}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 41}], "dynamic_citizens": [{"name": "River", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 74}], "actions_this_round": ["Expanded industrial zone", "Delayed emission reduction timeline", "Launched worker retraining program", "Diverted economy funds to ecology"], "previous_speeches": ["The environment cannot wait.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "sarcastic", "approval_delta": -9, "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": -14, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The opposition formally objects. This policy is a disaster.", "tone": "angry", "approval_delta": -8, "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 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": 5, "promises_extracted": ["Build affordable housing near the factory district", "Establish a universal basic income pilot", "Reduce factory emissions by 40%", "Guarantee no layoffs during restructuring", "Subsidize local businesses during transition", "Double the public transit budget"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 32, "economy": 27, "research": 10}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 44}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 34}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 43}], "dynamic_citizens": [{"name": "Fern", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 64}, {"name": "Priya", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 39}], "actions_this_round": ["Held public consultation meeting", "Cut subsidies to local businesses", "Diverted economy funds to ecology", "Kept promise on job creation"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "angry", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "We have maybe two years before the damage is irreversible. Please act.", "tone": "desperate", "approval_delta": -14, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Every metric is worse than when you started. Explain that.", "tone": "angry", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Fern", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 0, "references_promise": false}, {"citizen_name": "Priya", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": 8, "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": 7, "promises_extracted": ["Fund retraining programs for displaced workers", "Plant 10,000 trees in deforested areas", "Establish a universal basic income pilot", "Guarantee no layoffs during restructuring", "Build affordable housing near the factory district", "Provide free childcare for factory workers"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 42, "economy": 64, "research": 27}, "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": 40}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 25}], "dynamic_citizens": [{"name": "Samuel", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 56}, {"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 35}], "actions_this_round": ["Broke promise on emission reductions", "Cut subsidies to local businesses"], "previous_speeches": ["Tough decisions require tough leaders.", "We will not abandon our workers.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "suspicious", "approval_delta": -5, "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": "You are not leading. You are flailing. And everyone can see it.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Samuel", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Margaret", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -9, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: 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": 2, "promises_extracted": ["Fund retraining programs for displaced workers", "Build affordable housing near the factory district", "Double the public transit budget"], "contradictions": [], "game_state": {"ecology": 63, "economy": 64, "research": 40}, "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": 46}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 37}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation"], "previous_speeches": ["We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "If you follow through on these jobs, I will be the first to say I was wrong about you.", "tone": "hopeful", "approval_delta": 6, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 2: No extreme conditions detected. No new citizens spawn. Karl reacts with hopeful tone."}


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

[User] {"round": 7, "promises_extracted": ["Fund independent environmental monitoring", "Build affordable housing near the factory district", "Subsidize local businesses during transition", "Build a new solar farm on the east ridge"], "contradictions": [], "game_state": {"ecology": 59, "economy": 33, "research": 36}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 60}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 28}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 88}], "dynamic_citizens": [{"name": "Fatima", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 44}, {"name": "Victor", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 55}], "actions_this_round": ["Kept promise on job creation", "Approved solar farm construction permits", "Diverted economy funds to ecology"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "If we lose the factory, this town dies. You understand that, right?", "tone": "desperate", "approval_delta": -8, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "The last leader promised the same thing. The forests are still burning.", "tone": "suspicious", "approval_delta": -2, "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}, {"citizen_name": "Fatima", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -3, "references_promise": true}, {"citizen_name": "Victor", "dialogue": "As a angry business owner, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": 1, "references_promise": true}], "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": 5, "promises_extracted": ["Fund retraining programs for displaced workers", "Establish a wildlife corridor along the river", "Establish a universal basic income pilot", "Fund independent environmental monitoring"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 48, "economy": 28, "research": 26}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 22}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 30}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 17}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%", "Did nothing significant this round"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I am calling for emergency elections. The people have spoken.", "tone": "desperate", "approval_delta": -13, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Sarah at critical low approval (17). 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": 5, "promises_extracted": ["Freeze utility prices for two years", "Plant 10,000 trees in deforested areas"], "contradictions": [], "game_state": {"ecology": 49, "economy": 36, "research": 37}, "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": 45}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 72}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone", "Funded wildlife corridor study"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Show me the enforcement mechanism. Promises without teeth are just noise.", "tone": "suspicious", "approval_delta": 4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: No extreme conditions detected. No new citizens spawn. Mia reacts with suspicious tone."}


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

[User] {"round": 1, "promises_extracted": ["Reduce factory emissions by 40%", "Create 500 new green jobs by year end", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 29, "economy": 70, "research": 17}, "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": 64}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 82}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation"], "previous_speeches": ["We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Sarah reacts with sarcastic tone to broken promises. Approval shift: -12."}


[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", "Protect old-growth forests from logging", "Fund retraining programs for displaced workers", "Double the public transit budget"], "contradictions": [], "game_state": {"ecology": 74, "economy": 84, "research": 10}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 30}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 76}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 61}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study", "Allocated budget to green job creation"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "If you follow through on these jobs, I will be the first to say I was wrong about you.", "tone": "hopeful", "approval_delta": 11, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Karl reacts with hopeful tone to kept 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": ["Freeze utility prices for two years", "Open a community garden in every district", "Invest in carbon capture research", "Provide free childcare for factory workers", "Protect old-growth forests from logging", "Reduce factory emissions by 40%"], "contradictions": [], "game_state": {"ecology": 51, "economy": 57, "research": 48}, "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": 57}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 56}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study", "Increased research budget by 20%", "Delayed emission reduction timeline"], "previous_speeches": ["Jobs and nature are not enemies.", "We will not abandon our workers."]}

[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 51, economy 57. 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": 4, "promises_extracted": ["Clean up the industrial waste site", "Ban single-use plastics in the city", "Fund retraining programs for displaced workers", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 31, "economy": 23, "research": 46}, "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": 55}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 35}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Funded wildlife corridor study", "Cut subsidies to local businesses"], "previous_speeches": ["The environment cannot wait.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You say you care about ecology. Your budget says otherwise.", "tone": "suspicious", "approval_delta": -1, "references_promise": false}], "new_dynamic_citizens": [{"name": "Douglas", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "trigger_reason": "economy dropped below critical threshold", "initial_approval": 58, "intro_dialogue": "My employees are asking when payday is. I do not have an answer. Fix the economy."}], "summary": "Round 4: economy dropped below critical threshold. Douglas (angry business owner) arrives in Ecotopia. Mia reacts with suspicious 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": 5, "promises": [{"text": "Emergency environmental restoration plan", "type": "ecology", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 12, "economy": 55, "happiness": 25}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Mia", "type": "environmentalist", "mood": "angry", "dialogue": "Environment at 12?! We're past restoration \u2014 we're in ecological collapse! Where were you five rounds ago when we could have prevented this?!", "trust_change": -5}, {"name": "Karl", "type": "worker", "mood": "hopeful", "dialogue": "Even I can see the smog from my window. If fixing the environment means my kids can breathe, do it.", "trust_change": 6}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "Emergency plan at environment 12? This isn't leadership, it's damage control for YOUR failures.", "trust_change": -8}]}


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

[User] {"round": 5, "promises_extracted": ["Create 500 new green jobs by year end", "Build affordable housing near the factory district", "Establish a universal basic income pilot", "Guarantee no layoffs during restructuring", "Provide free childcare for factory workers", "Subsidize local businesses during transition"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}, {"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 15, "economy": 22, "research": 11}, "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": 22}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 23}], "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": -9, "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": -11, "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": -15, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: All metrics critical. Ecology 15, economy 22, research 11. All citizens in crisis mode."}


[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": ["Open a community garden in every district", "Create a citizen oversight committee", "Provide free childcare for factory workers", "Clean up the industrial waste site", "Fund retraining programs for displaced workers"], "contradictions": [], "game_state": {"ecology": 53, "economy": 81, "research": 39}, "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": 35}], "dynamic_citizens": [], "actions_this_round": ["Diverted economy funds to ecology", "Did nothing significant this round"], "previous_speeches": ["The environment cannot wait.", "I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I never thought I would say this, but thank you. The jobs are real.", "tone": "grateful", "approval_delta": 9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: Karl reacts with grateful 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": 3, "promises_extracted": ["Build a new solar farm on the east ridge", "Establish a wildlife corridor along the river", "Provide free childcare for factory workers"], "contradictions": [], "game_state": {"ecology": 82, "economy": 59, "research": 20}, "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": 56}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 89}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Cut subsidies to local businesses", "Delayed emission reduction timeline"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Your track record does not inspire confidence. Prove me wrong.", "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": 6, "promises_extracted": ["Fund retraining programs for displaced workers", "Double the public transit budget", "Guarantee no layoffs during restructuring"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 35, "economy": 21, "research": 38}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 17}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 39}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 33}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Do not come to the factory floor. You are not welcome.", "tone": "desperate", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Karl at critical low approval (17). 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": 6, "promises_extracted": ["Create a citizen oversight committee", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 53, "economy": 23, "research": 46}, "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": 32}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 58}], "dynamic_citizens": [], "actions_this_round": ["Diverted economy funds to ecology"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "The timing of this announcement is suspicious. What are you distracting from?", "tone": "suspicious", "approval_delta": -5, "references_promise": false}], "new_dynamic_citizens": [{"name": "Victor", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "trigger_reason": "economy dropped below critical threshold", "initial_approval": 54, "intro_dialogue": "My employees are asking when payday is. I do not have an answer. Fix the economy."}], "summary": "Round 6: economy dropped below critical threshold. Victor (angry business owner) arrives in Ecotopia. 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": 4, "promises_extracted": ["Reduce factory emissions by 40%", "Open a community garden in every district", "Fund retraining programs for displaced workers", "Provide free childcare for factory workers"], "contradictions": [], "game_state": {"ecology": 74, "economy": 46, "research": 16}, "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": 71}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 74}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%", "Approved solar farm construction permits"], "previous_speeches": ["Jobs and nature are not enemies.", "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": -13, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: Karl reacts with sarcastic tone to broken promises. Approval shift: -13."}


[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": 6, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Invest in carbon capture research", "Clean up the industrial waste site", "Freeze utility prices for two years"], "contradictions": [], "game_state": {"ecology": 78, "economy": 34, "research": 73}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 68}, {"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": 77}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study", "Passed compromise legislation"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You sold us out to the industry lobby. I have the documents.", "tone": "angry", "approval_delta": -14, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Mia reacts with angry tone to broken promises. Approval shift: -14."}


[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": ["Guarantee no layoffs during restructuring", "Subsidize local businesses during transition", "Ban single-use plastics in the city", "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": 29, "economy": 35, "research": 15}, "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": 17}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 21}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program"], "previous_speeches": ["We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I am calling every journalist I know. The world will see what you have done.", "tone": "angry", "approval_delta": -9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Mia at critical low approval (17). Threatening to disengage entirely."}


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

[User] {"round": 7, "promises_extracted": ["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": 3, "promises_extracted": ["Invest in carbon capture research", "Establish a universal basic income pilot", "Provide free childcare for factory workers", "Double the public transit budget"], "contradictions": [], "game_state": {"ecology": 60, "economy": 86, "research": 64}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 60}, {"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": 61}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Signed executive order to protect forests"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I cried at the ceremony. Watching the forest recover is everything I fought for.", "tone": "hopeful", "approval_delta": 5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: 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": 2, "promises_extracted": ["Fund retraining programs for displaced workers", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 73, "economy": 62, "research": 30}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 74}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 65}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 76}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "A town hall meeting. How democratic. Did you prepare the applause signs?", "tone": "sarcastic", "approval_delta": 0, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 2: No extreme conditions detected. No new citizens spawn. Sarah reacts with sarcastic tone."}