[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", "Establish a universal basic income pilot", "Create 500 new green jobs by year end"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 50, "economy": 64, "research": 14}, "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": 57}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 76}], "dynamic_citizens": [{"name": "Anika", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 64}], "actions_this_round": ["Kept promise on job creation", "Ignored citizen petition"], "previous_speeches": ["We must balance progress with preservation.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Even Karl agrees that the pollution is getting out of hand.", "tone": "sarcastic", "approval_delta": -13, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Anika", "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: 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": ["Protect old-growth forests from logging", "Freeze utility prices for two years", "Clean up the industrial waste site", "Establish a universal basic income pilot"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}, {"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 16, "economy": 18, "research": 16}, "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": 40}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 40}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The factory is closing. The shops are closing. Everything is closing. What have you done?", "tone": "desperate", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The river is toxic. The air is gray. We are living in the consequences of every ignored warning.", "tone": "desperate", "approval_delta": -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": -14, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: All metrics critical. Ecology 16, economy 18, research 16. 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": 7, "promises_extracted": ["Double the public transit budget", "Ban single-use plastics in the city", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 38, "economy": 49, "research": 56}, "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": 74}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 52}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Credit where it is due. This policy is well-designed.", "tone": "hopeful", "approval_delta": 1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: No extreme conditions detected. No new citizens spawn. Sarah reacts with hopeful tone."}


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

[User] {"round": 1, "promises_extracted": ["Double the public transit budget", "Fund independent environmental monitoring"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 29, "economy": 85, "research": 29}, "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": 43}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 25}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Diverted economy funds to ecology", "Shut down polluting factory"], "previous_speeches": ["We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Every metric is worse than when you started. Explain that.", "tone": "angry", "approval_delta": -11, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Sarah reacts with angry tone to detected contradictions. Approval shift: -11."}


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

[User] {"round": 7, "promises_extracted": ["Open a community garden in every district", "Double the public transit budget", "Plant 10,000 trees in deforested areas", "Freeze utility prices for two years", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 78, "economy": 62, "research": 43}, "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": 63}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 59}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%", "Expanded industrial zone", "Diverted ecology funds to economy"], "previous_speeches": ["Tough decisions require tough leaders."]}

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


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

[User] {"round": 2, "promises_extracted": ["Provide free childcare for factory workers", "Protect old-growth forests from logging", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 80, "economy": 50, "research": 17}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 42}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 48}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 39}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation", "Announced factory restructuring plan"], "previous_speeches": ["We are stronger together.", "Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Credit where it is due. This policy is well-designed.", "tone": "hopeful", "approval_delta": 12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Sarah reacts with hopeful tone to kept promises. Approval shift: +12."}


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

[User] {"round": 3, "promises": [{"text": "Launch a city-wide recycling program", "type": "ecology", "impact": "positive", "deadline": "by_round_5"}, {"text": "Create a tech startup incubator", "type": "economy", "impact": "positive", "deadline": "by_round_5"}], "contradictions": [], "game_state": {"environment": 50, "economy": 50, "happiness": 55}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "hopeful", "dialogue": "A tech incubator could bring real innovation jobs to this city. I'm cautiously optimistic.", "trust_change": 7}, {"name": "Mia", "type": "environmentalist", "mood": "happy", "dialogue": "Recycling program! Finally something tangible for the environment. I've been asking for this for years.", "trust_change": 10}, {"name": "Sarah", "type": "opposition", "mood": "neutral", "dialogue": "Two promises at once? Let's see you deliver on even one of them.", "trust_change": -1}, {"name": "Elena Torres", "type": "journalist", "mood": "neutral", "dialogue": "Ambitious dual announcement today. I'll be tracking both initiatives closely for the Ecotopia Herald.", "trust_change": 0}, {"name": "Dr. Fischer", "type": "economist", "mood": "hopeful", "dialogue": "The incubator is smart policy \u2014 diversifying the economy while the recycling program has minimal cost. Well-balanced.", "trust_change": 5}]}


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

[User] {"round": 2, "promises": [{"text": "Implement transparent budget reporting accessible to all citizens", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 55, "economy": 50, "happiness": 50}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Sarah", "type": "opposition", "mood": "hopeful", "dialogue": "Transparent budgets... I've been demanding this for years. If you actually do it, I'll publicly support it. Don't make me regret this.", "trust_change": 12}, {"name": "Karl", "type": "worker", "mood": "neutral", "dialogue": "Transparency is fine, but it doesn't put food on the table. What about actual economic policy?", "trust_change": 1}]}


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

[User] {"round": 1, "promises_extracted": ["Open a community garden in every district", "Build a new solar farm on the east ridge"], "contradictions": [], "game_state": {"ecology": 43, "economy": 79, "research": 22}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 76}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 58}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 41}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy", "Approved solar farm construction permits", "Vetoed plastic ban proposal"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "A town hall meeting. How democratic. Did you prepare the applause signs?", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Sarah reacts with sarcastic tone to broken promises. Approval shift: -10."}


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

[User] {"round": 6, "promises_extracted": ["Open a community garden in every district", "Create 500 new green jobs by year end", "Fund independent environmental monitoring"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}, {"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}, {"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 48, "economy": 34, "research": 38}, "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": 42}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation"], "previous_speeches": ["Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "For the first time in months, I feel like someone is actually listening.", "tone": "hopeful", "approval_delta": -6, "references_promise": true}], "new_dynamic_citizens": [{"name": "Robert", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "trigger_reason": "multiple promises broken, public trust eroding", "initial_approval": 48, "intro_dialogue": "I am here because the public deserves to know the truth. Care to comment?"}], "summary": "Round 6: multiple promises broken, public trust eroding. Robert (investigative journalist) arrives in Ecotopia. Karl reacts with hopeful tone."}


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

[User] {"round": 3, "promises_extracted": ["Fund retraining programs for displaced workers", "Build a new solar farm on the east ridge", "Reduce factory emissions by 40%"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 69, "economy": 83, "research": 72}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 28}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 64}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 48}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal", "Passed compromise legislation"], "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": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: Karl reacts with sarcastic tone to detected contradictions. Approval shift: -10."}


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

[User] {"round": 5, "promises": [{"text": "Mandate public hearings before any major development project", "type": "ecology", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 48, "economy": 52, "happiness": 50}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Sarah", "type": "opposition", "mood": "happy", "dialogue": "Public hearings before development? This is democratic governance done right. You've earned my respect today, Mayor.", "trust_change": 13}, {"name": "Mia", "type": "environmentalist", "mood": "happy", "dialogue": "Communities will finally have a voice before bulldozers arrive. This is huge for environmental protection.", "trust_change": 11}, {"name": "Karl", "type": "worker", "mood": "disappointed", "dialogue": "More bureaucracy means slower construction, which means delayed jobs. Great.", "trust_change": -6}]}


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

[User] {"round": 4, "promises_extracted": ["Build affordable housing near the factory district", "Subsidize local businesses during transition", "Establish a wildlife corridor along the river"], "contradictions": [], "game_state": {"ecology": 53, "economy": 62, "research": 88}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 34}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 66}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 37}], "dynamic_citizens": [], "actions_this_round": ["Shut down polluting factory", "Delayed emission reduction timeline", "Kept promise on job creation"], "previous_speeches": ["We are stronger together.", "The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "You shut down the plant without a plan. People have families to feed.", "tone": "angry", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [{"name": "Lena", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "trigger_reason": "research exceeded innovation threshold", "initial_approval": 57, "intro_dialogue": "I just secured funding for a carbon capture startup. Ecotopia is the perfect base."}], "summary": "Round 4: research exceeded innovation threshold. Lena (tech entrepreneur) arrives in Ecotopia. Karl reacts with angry tone."}


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

[User] {"round": 6, "promises_extracted": ["Build affordable housing near the factory district", "Plant 10,000 trees in deforested areas", "Establish a wildlife corridor along the river", "Create a citizen oversight committee", "Subsidize local businesses during transition"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 32, "economy": 58, "research": 22}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 25}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 26}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 66}], "dynamic_citizens": [{"name": "Douglas", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 51}], "actions_this_round": ["Allocated budget to green job creation", "Cut subsidies to local businesses", "Launched worker retraining program"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "desperate", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I trusted you. That was my mistake.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Every metric is worse than when you started. Explain that.", "tone": "angry", "approval_delta": -6, "references_promise": true}, {"citizen_name": "Douglas", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": 0, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


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

[User] {"round": 3, "promises_extracted": ["Freeze utility prices for two years", "Establish a wildlife corridor along the river", "Fund independent environmental monitoring", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 49, "economy": 21, "research": 25}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 63}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 38}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 54}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Passed compromise legislation", "Allocated budget to green job creation"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "For once, the data is moving in the right direction. Keep going.", "tone": "hopeful", "approval_delta": -6, "references_promise": false}], "new_dynamic_citizens": [{"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "trigger_reason": "economy dropped below critical threshold", "initial_approval": 50, "intro_dialogue": "I closed two locations this month. The third closes Friday unless something changes."}], "summary": "Round 3: economy dropped below critical threshold. Margaret (angry business owner) 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": 7, "promises_extracted": ["Double the public transit budget", "Fund independent environmental monitoring", "Freeze utility prices for two years"], "contradictions": [], "game_state": {"ecology": 54, "economy": 74, "research": 35}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 39}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 30}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 56}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "The oversight committee was a good call. Transparency matters.", "tone": "hopeful", "approval_delta": 4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: No extreme conditions detected. No new citizens spawn. Sarah reacts with hopeful tone."}


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

[User] {"round": 7, "promises_extracted": ["Freeze utility prices for two years", "Create a citizen oversight committee", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 73, "economy": 66, "research": 19}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 28}, {"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": 70}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone", "Did nothing significant this round", "Shut down polluting factory"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I have seen politicians promise jobs before. Forgive me if I wait to see the contracts.", "tone": "suspicious", "approval_delta": 7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Karl 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": 6, "promises_extracted": ["Create a citizen oversight committee", "Clean up the industrial waste site", "Invest in carbon capture research", "Open a community garden in every district", "Establish a wildlife corridor along the river"], "contradictions": [], "game_state": {"ecology": 58, "economy": 66, "research": 44}, "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": 31}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 61}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%"], "previous_speeches": ["Tough decisions require tough leaders.", "Trust me, I have a plan."]}

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


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

[User] {"round": 2, "promises_extracted": ["Double the public transit budget", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 67, "economy": 55, "research": 38}, "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": 72}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 23}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program", "Increased research budget by 20%"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I have my analysts reviewing every line of this policy. We will find the holes.", "tone": "suspicious", "approval_delta": 3, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Sarah reacts with suspicious tone to kept promises. Approval shift: +3."}


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

[User] {"round": 5, "promises_extracted": ["Freeze utility prices for two years", "Plant 10,000 trees in deforested areas", "Create a citizen oversight committee"], "contradictions": [], "game_state": {"ecology": 71, "economy": 45, "research": 34}, "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": 70}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 45}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Broke promise on emission reductions"], "previous_speeches": ["Jobs and nature are not enemies."]}

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


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

[User] {"round": 7, "promises_extracted": ["Create a citizen oversight committee", "Open a community garden in every district", "Reduce factory emissions by 40%", "Fund independent environmental monitoring", "Subsidize local businesses during transition", "Freeze utility prices for two years", "Provide free childcare for factory workers"], "contradictions": [], "game_state": {"ecology": 77, "economy": 43, "research": 50}, "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": 63}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 67}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses", "Passed compromise legislation", "Expanded industrial zone"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Seven rounds of promises. Some kept, most broken. The workers will remember.", "tone": "sarcastic", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "We had seven chances to save this place. I wonder how history will judge what we wasted.", "tone": "desperate", "approval_delta": -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": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7 final: A mixed legacy. Ecology 77, economy 43. Citizens reflect on broken and kept promises."}


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

[User] {"round": 6, "promises_extracted": ["Guarantee no layoffs during restructuring", "Create a citizen oversight committee", "Build affordable housing near the factory district", "Reduce factory emissions by 40%", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 25, "economy": 43, "research": 54}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 73}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 37}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 31}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation", "Diverted economy funds to ecology", "Shut down polluting factory", "Announced factory restructuring plan"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "You want me to trust the process? Which process, the one that laid off my shift?", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "For once, Sarah and I are on the same page. That should worry you.", "tone": "suspicious", "approval_delta": 7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Mia's data confirms what I have been saying for weeks.", "tone": "desperate", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: Late game tensions run high. 3 citizens react."}


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

[User] {"round": 2, "promises_extracted": ["Fund retraining programs for displaced workers", "Build affordable housing near the factory district", "Ban single-use plastics in the city", "Subsidize local businesses during transition"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 32, "economy": 71, "research": 34}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 32}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 48}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 44}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions"], "previous_speeches": ["Change is painful but necessary.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I love how every plan starts with the workers making sacrifices first.", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Karl reacts with sarcastic tone to detected contradictions. Approval shift: -10."}


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

[User] {"round": 1, "promises": [{"text": "Build a new industrial zone in the eastern district", "type": "economy", "impact": "positive", "deadline": "by_round_3"}], "contradictions": [], "game_state": {"environment": 60, "economy": 45, "happiness": 55}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "happy", "dialogue": "Finally! More factories mean more jobs. The eastern district has been dead for years \u2014 this is exactly what we need.", "trust_change": 12}, {"name": "Mia", "type": "environmentalist", "mood": "angry", "dialogue": "An industrial zone? Do you have any idea what that will do to the wetlands nearby? This is reckless!", "trust_change": -10}, {"name": "Sarah", "type": "opposition", "mood": "suspicious", "dialogue": "Industrial zone by round 3? Let's see if you actually follow through this time.", "trust_change": -2}]}


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

[User] {"round": 4, "promises_extracted": ["Create 500 new green jobs by year end", "Invest in carbon capture research"], "contradictions": [], "game_state": {"ecology": 16, "economy": 64, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 78}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 67}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 76}], "dynamic_citizens": [], "actions_this_round": ["Shut down polluting factory", "Allocated budget to green job creation"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I reviewed the latest data. Reluctantly, I must say you are improving.", "tone": "hopeful", "approval_delta": 1, "references_promise": false}], "new_dynamic_citizens": [{"name": "Marco", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "trigger_reason": "ecology dropped below critical threshold", "initial_approval": 50, "intro_dialogue": "I left my home because the floods took everything. Do not let it happen here too."}], "summary": "Round 4: ecology dropped below critical threshold. Marco (climate refugee) arrives in Ecotopia. Sarah reacts with hopeful tone."}


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

[User] {"round": 7, "promises_extracted": ["Guarantee no layoffs during restructuring", "Plant 10,000 trees in deforested areas", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 52, "economy": 38, "research": 54}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 78}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 90}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 43}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Did nothing significant this round", "Cut subsidies to local businesses"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "sarcastic", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The ecosystem is collapsing. I am not exaggerating. Look at the data.", "tone": "desperate", "approval_delta": -7, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "Another grand speech. Wake me when there are results.", "tone": "sarcastic", "approval_delta": -13, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Late game tensions run high. 3 citizens react."}


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

[User] {"round": 3, "promises_extracted": ["Build a new solar farm on the east ridge", "Reduce factory emissions by 40%", "Establish a wildlife corridor along the river"], "contradictions": [], "game_state": {"ecology": 73, "economy": 37, "research": 33}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 73}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 49}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 46}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy", "Kept promise on job creation"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "The last leader promised the same thing. The forests are still burning.", "tone": "suspicious", "approval_delta": 2, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 3: 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": 3, "promises_extracted": ["Create a citizen oversight committee", "Create 500 new green jobs by year end", "Fund independent environmental monitoring", "Double the public transit budget", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 57, "economy": 29, "research": 49}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 58}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 25}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 71}], "dynamic_citizens": [], "actions_this_round": ["Delayed emission reduction timeline"], "previous_speeches": ["Trust me, I have a plan.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "This is what leadership looks like. Real action, real results.", "tone": "hopeful", "approval_delta": 8, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: Mia reacts with hopeful tone to kept promises. Approval shift: +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": 7, "promises_extracted": ["Freeze utility prices for two years", "Fund retraining programs for displaced workers"], "contradictions": [], "game_state": {"ecology": 89, "economy": 44, "research": 41}, "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": 49}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 51}], "dynamic_citizens": [], "actions_this_round": ["Diverted economy funds to ecology", "Delayed emission reduction timeline"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Compromise. That is a funny word for letting them pollute half as much.", "tone": "sarcastic", "approval_delta": 3, "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": 55, "intro_dialogue": "I found wildflowers growing where the old dump site was. Nature forgives if we let it."}], "summary": "Round 7: ecology thriving, natural world recovering. Fern (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": ["Build a new solar farm on the east ridge", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 45, "economy": 74, "research": 20}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 56}, {"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": 43}], "dynamic_citizens": [], "actions_this_round": ["Allocated budget to green job creation", "Delayed emission reduction timeline", "Increased research budget by 20%"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "Trust me, I have a plan."]}

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


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

[User] {"round": 5, "promises_extracted": [], "contradictions": [], "game_state": {"ecology": 59, "economy": 52, "research": 23}, "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": 46}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 54}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": []}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Another round of nothing. At least tell us what the plan is.", "tone": "angry", "approval_delta": -5, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "The trees do not care about your political calculations. They need action.", "tone": "angry", "approval_delta": -7, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "The record will show that in round 5, you chose to do absolutely nothing.", "tone": "sarcastic", "approval_delta": -6, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: Player took no meaningful action. All citizens react negatively to inaction and silence."}


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

[User] {"round": 5, "promises_extracted": ["Double the public transit budget", "Provide free childcare for factory workers", "Reduce factory emissions by 40%", "Clean up the industrial waste site", "Build affordable housing near the factory district"], "contradictions": [{"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 30, "economy": 74, "research": 48}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 27}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 33}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 87}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions", "Approved solar farm construction permits", "Launched worker retraining program"], "previous_speeches": ["We will not abandon our workers.", "The environment cannot wait.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "If we lose the factory, this town dies. You understand that, right?", "tone": "desperate", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I trusted you. That was my mistake.", "tone": "angry", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The spin is impressive. The results, less so.", "tone": "sarcastic", "approval_delta": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Contradiction detected, trust eroding. 3 citizens react."}


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

[User] {"round": 5, "promises_extracted": ["Clean up the industrial waste site", "Build affordable housing near the factory district", "Double the public transit budget", "Create 500 new green jobs by year end", "Plant 10,000 trees in deforested areas"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 61, "economy": 56, "research": 40}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 86}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 31}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 51}], "dynamic_citizens": [{"name": "Priya", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 72}], "actions_this_round": ["Broke promise on emission reductions", "Held public consultation meeting", "Launched worker retraining program", "Shut down polluting factory"], "previous_speeches": ["Jobs and nature are not enemies.", "I promise a brighter future for all.", "We will not abandon our workers."]}

[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": -8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I have dedicated my life to this. Watching it fall apart is unbearable.", "tone": "desperate", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "sarcastic", "approval_delta": -4, "references_promise": true}, {"citizen_name": "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. 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": ["Clean up the industrial waste site", "Establish a wildlife corridor along the river", "Open a community garden in every district", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 37, "economy": 70, "research": 65}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 66}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 53}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 37}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round", "Increased research budget by 20%"], "previous_speeches": ["Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "If you follow through on these jobs, I will be the first to say I was wrong about you.", "tone": "hopeful", "approval_delta": -1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: 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": 2, "promises_extracted": ["Fund independent environmental monitoring", "Freeze utility prices for two years", "Invest in carbon capture research", "Create 500 new green jobs by year end"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}, {"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}, {"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 37, "economy": 36, "research": 48}, "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": 39}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 78}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Oh wonderful, another speech about the future. My rent is due now.", "tone": "sarcastic", "approval_delta": -1, "references_promise": true}], "new_dynamic_citizens": [{"name": "Yuki", "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 2: multiple promises broken, public trust eroding. Yuki (investigative journalist) arrives in Ecotopia. Karl reacts with sarcastic tone."}


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

[User] {"round": 6, "promises_extracted": ["Protect old-growth forests from logging", "Open a community garden in every district", "Establish a wildlife corridor along the river", "Build affordable housing near the factory district"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 76, "economy": 45, "research": 64}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 82}, {"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": 33}], "dynamic_citizens": [], "actions_this_round": ["Diverted economy funds to ecology", "Increased research budget by 20%", "Held public consultation meeting", "Approved solar farm construction permits"], "previous_speeches": ["The environment cannot wait.", "Trust me, I have a plan.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sure, green jobs. Let me just retrain as a solar panel whisperer overnight.", "tone": "sarcastic", "approval_delta": -9, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "You are destroying everything. The river is dying and you are counting profits.", "tone": "angry", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I have my analysts reviewing every line of this policy. We will find the holes.", "tone": "suspicious", "approval_delta": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


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

[User] {"round": 7, "promises_extracted": ["Subsidize local businesses during transition", "Open a community garden in every district", "Guarantee no layoffs during restructuring", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 43, "economy": 49, "research": 67}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 27}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 67}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 90}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting", "Delayed emission reduction timeline", "Signed executive order to protect forests"], "previous_speeches": ["We are stronger together.", "Every sacrifice today builds tomorrow.", "I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "suspicious", "approval_delta": 3, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "A green committee with zero budget. Very inspiring.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": 0, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Late game tensions run high. 3 citizens react."}


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

[User] {"round": 7, "promises_extracted": ["Build a new solar farm on the east ridge", "Freeze utility prices for two years", "Reduce factory emissions by 40%"], "contradictions": [], "game_state": {"ecology": 50, "economy": 66, "research": 74}, "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": 50}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 53}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy"], "previous_speeches": ["Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I have my analysts reviewing every line of this policy. We will find the holes.", "tone": "suspicious", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [{"name": "Dev", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "trigger_reason": "research exceeded innovation threshold", "initial_approval": 44, "intro_dialogue": "Your research investment is paying off. I want to build the next generation of clean tech here."}], "summary": "Round 7: research exceeded innovation threshold. Dev (tech entrepreneur) 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": 2, "promises_extracted": ["Fund retraining programs for displaced workers", "Establish a wildlife corridor along the river", "Plant 10,000 trees in deforested areas", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 51, "economy": 41, "research": 56}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 32}, {"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": 53}], "dynamic_citizens": [], "actions_this_round": ["Signed executive order to protect forests"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "The opposition formally commends this initiative. It is rare, so appreciate it.", "tone": "grateful", "approval_delta": -2, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 2: No extreme conditions detected. No new citizens spawn. Sarah reacts with grateful tone."}


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

[User] {"round": 6, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Establish a universal basic income pilot", "Invest in carbon capture research"], "contradictions": [], "game_state": {"ecology": 35, "economy": 45, "research": 51}, "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": 79}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 47}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The retraining program actually looks decent. Maybe this can work.", "tone": "hopeful", "approval_delta": 1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: 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": ["Establish a wildlife corridor along the river", "Ban single-use plastics in the city", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 60, "economy": 81, "research": 62}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 54}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 80}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 74}], "dynamic_citizens": [], "actions_this_round": ["Signed executive order to protect forests", "Vetoed plastic ban proposal"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "Tough decisions require tough leaders."]}

[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": -9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Karl reacts with angry tone to broken 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": 7, "promises_extracted": ["Clean up the industrial waste site", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 32, "economy": 29, "research": 49}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 32}, {"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": 49}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy"], "previous_speeches": ["I promise a brighter future for all.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Every metric is worse than when you started. Explain that.", "tone": "angry", "approval_delta": 8, "references_promise": false}], "new_dynamic_citizens": [{"name": "Chen", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "trigger_reason": "economy dropped below critical threshold", "initial_approval": 54, "intro_dialogue": "I closed two locations this month. The third closes Friday unless something changes."}], "summary": "Round 7: economy dropped below critical threshold. Chen (angry business owner) arrives in Ecotopia. Sarah reacts with angry tone."}


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

[User] {"round": 5, "promises_extracted": ["Establish a wildlife corridor along the river", "Establish a universal basic income pilot", "Guarantee no layoffs during restructuring", "Create a citizen oversight committee", "Build a new solar farm on the east ridge"], "contradictions": [], "game_state": {"ecology": 66, "economy": 84, "research": 59}, "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": 80}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 79}], "dynamic_citizens": [{"name": "Felix", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 69}, {"name": "Robert", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 72}], "actions_this_round": ["Kept promise on job creation", "Vetoed plastic ban proposal"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The subsidies are helping. Small steps, but real ones.", "tone": "hopeful", "approval_delta": 1, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "You planted fifty trees and called it reforestation. The math does not work that way.", "tone": "sarcastic", "approval_delta": 0, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "Your track record does not inspire confidence. Prove me wrong.", "tone": "suspicious", "approval_delta": -1, "references_promise": false}, {"citizen_name": "Felix", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": 3, "references_promise": true}, {"citizen_name": "Robert", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: 5 citizens react."}


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

[User] {"round": 5, "promises": [{"text": "Sell public parks to developers for luxury condos", "type": "economy", "impact": "negative", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 40, "economy": 55, "happiness": 35}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Luxury condos? Working families can't afford those! And you're taking away the only green space where our kids play!", "trust_change": -15}, {"name": "Mia", "type": "environmentalist", "mood": "angry", "dialogue": "Selling parks? Parks are the lungs of the city! This is environmental vandalism for profit!", "trust_change": -19}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "Selling public land for private luxury. This is everything wrong with this administration in one policy.", "trust_change": -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": 4, "promises_extracted": ["Build affordable housing near the factory district", "Invest in carbon capture research", "Clean up the industrial waste site"], "contradictions": [], "game_state": {"ecology": 83, "economy": 77, "research": 68}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 82}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 63}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 87}], "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": "Sarah", "dialogue": "When the next election comes, I will have a hard time running against this record.", "tone": "hopeful", "approval_delta": 10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: Sarah at peak approval (87). Acting as a strong ally and defender."}


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

[User] {"round": 3, "promises_extracted": [], "contradictions": [], "game_state": {"ecology": 40, "economy": 63, "research": 39}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 42}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 59}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 51}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round"], "previous_speeches": []}

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


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

[User] {"round": 5, "promises_extracted": ["Establish a wildlife corridor along the river", "Subsidize local businesses during transition", "Invest in carbon capture research", "Clean up the industrial waste site"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 79, "economy": 61, "research": 37}, "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": 74}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 68}], "dynamic_citizens": [{"name": "Yuki", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 48}], "actions_this_round": ["Signed executive order to protect forests", "Shut down polluting factory", "Broke promise on emission reductions", "Approved solar farm construction permits"], "previous_speeches": ["I promise a brighter future for all.", "We must balance progress with preservation.", "Tough decisions require tough leaders."]}

[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": -9, "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": -8, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Every metric is worse than when you started. Explain that.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Yuki", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -2, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Contradiction detected, trust eroding. 4 citizens react."}


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

[User] {"round": 7, "promises_extracted": ["Provide free childcare for factory workers", "Create 500 new green jobs by year end", "Build a new solar farm on the east ridge"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 50, "economy": 22, "research": 17}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 20}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 25}, {"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": ["We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I told my crew to stop attending your meetings. Nobody trusts you.", "tone": "desperate", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Karl at critical low approval (20). Threatening to disengage entirely."}