[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": ["Establish a wildlife corridor along the river", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 57, "economy": 67, "research": 52}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 45}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 60}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 25}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I gave you the benefit of the doubt. Never again.", "tone": "angry", "approval_delta": -8, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: Sarah reacts with angry tone to broken promises. Approval shift: -8."}


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

[User] {"round": 4, "promises": [{"text": "Establish an independent ethics committee for all city contracts", "type": "economy", "impact": "positive", "deadline": "by_round_5"}], "contradictions": [], "game_state": {"environment": 50, "economy": 55, "happiness": 52}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Sarah", "type": "opposition", "mood": "happy", "dialogue": "An independent ethics committee? This is... actually exactly what I proposed last year. Credit where it's due, Mayor. I support this fully.", "trust_change": 15}, {"name": "Karl", "type": "worker", "mood": "neutral", "dialogue": "Ethics committees don't create jobs, but I guess less corruption means better spending. Fine.", "trust_change": 3}, {"name": "Mia", "type": "environmentalist", "mood": "hopeful", "dialogue": "If this stops shady deals that harm the environment, I'm all for it.", "trust_change": 6}]}


[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": "Complete overhaul of the education system", "type": "research", "impact": "positive", "deadline": "by_end_of_game"}], "contradictions": [], "game_state": {"environment": 44, "economy": 46, "happiness": 32}, "previous_broken_promises": [{"text": "Hire 100 new teachers", "broken_at_round": 3}, {"text": "Free school lunches", "broken_at_round": 4}]}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "suspicious", "dialogue": "You couldn't hire teachers or feed kids. Now you want to overhaul the whole system? My daughter's school still has no heat.", "trust_change": -11}, {"name": "Sarah", "type": "opposition", "mood": "suspicious", "dialogue": "Broken education promises are the worst kind. You're failing the children, and now promising even bigger?", "trust_change": -14}, {"name": "Mia", "type": "environmentalist", "mood": "suspicious", "dialogue": "If you can't keep small promises about schools, why should we trust a complete overhaul?", "trust_change": -7}]}


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

[User] {"round": 4, "promises_extracted": ["Freeze utility prices for two years", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 57, "economy": 69, "research": 44}, "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": 32}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 48}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "My daughter asked if dad would keep his job. I told her yes. Do not make me a liar.", "tone": "hopeful", "approval_delta": 0, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 4: 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": ["Freeze utility prices for two years", "Clean up the industrial waste site", "Ban single-use plastics in the city", "Build a new solar farm on the east ridge"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 37, "economy": 36, "research": 39}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 40}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 33}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 21}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I am calling for emergency elections. The people have spoken.", "tone": "angry", "approval_delta": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Sarah at critical low approval (21). Threatening to disengage entirely."}


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

[User] {"round": 6, "promises_extracted": ["Fund independent environmental monitoring", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 72, "economy": 48, "research": 26}, "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": 56}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 52}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round", "Launched worker retraining program", "Diverted economy funds to ecology"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "The solar farm reduces emissions AND creates jobs. This is what I have been asking for.", "tone": "hopeful", "approval_delta": 12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Mia reacts with hopeful tone to kept promises. Approval shift: +12."}


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

[User] {"round": 6, "promises_extracted": ["Reduce factory emissions by 40%", "Build affordable housing near the factory district", "Guarantee no layoffs during restructuring"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 37, "economy": 58, "research": 11}, "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": 53}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 42}], "dynamic_citizens": [{"name": "Birch", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "approval": 70}], "actions_this_round": ["Ignored citizen petition", "Expanded industrial zone", "Held public consultation meeting", "Shut down polluting factory"], "previous_speeches": ["Tough decisions require tough leaders.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "suspicious", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I am sure the fish appreciate your thoughts and prayers.", "tone": "sarcastic", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Birch", "dialogue": "As a nature guide, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": 5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


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

[User] {"round": 3, "promises_extracted": ["Build a new solar farm on the east ridge", "Protect old-growth forests from logging"], "contradictions": [{"promise": "The environment cannot wait.", "action": "Delayed emission reduction timeline", "severity": "medium"}, {"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}, {"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 56, "economy": 50, "research": 27}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 31}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 30}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 64}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation"], "previous_speeches": ["The environment cannot wait.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Oh wonderful, another speech about the future. My rent is due now.", "tone": "sarcastic", "approval_delta": 0, "references_promise": true}], "new_dynamic_citizens": [{"name": "Diana", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "trigger_reason": "multiple promises broken, public trust eroding", "initial_approval": 56, "intro_dialogue": "I have documents showing the discrepancy between your claims and the data. Respond."}], "summary": "Round 3: multiple promises broken, public trust eroding. Diana (investigative journalist) arrives in Ecotopia. Karl reacts with sarcastic tone."}


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

[User] {"round": 2, "promises": [{"text": "Protect the old-growth forest from logging", "type": "ecology", "impact": "positive", "deadline": "immediate"}], "contradictions": [{"promise_1": "Protect the old-growth forest", "promise_2": "Expand lumber industry for jobs"}], "game_state": {"environment": 50, "economy": 50, "happiness": 50}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "disappointed", "dialogue": "So the lumber jobs are gone? People have families to feed, Mayor.", "trust_change": -7}, {"name": "Mia", "type": "environmentalist", "mood": "happy", "dialogue": "Thank you! The old-growth forest is irreplaceable. This is the right call.", "trust_change": 10}, {"name": "Elena Torres", "type": "journalist", "mood": "suspicious", "dialogue": "Hold on \u2014 you promised to expand the lumber industry last round. Now you're protecting the forest? Which is it, Mayor? My readers deserve the truth.", "trust_change": -5}]}


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

[User] {"round": 1, "promises_extracted": ["Create 500 new green jobs by year end", "Establish a universal basic income pilot", "Build affordable housing near the factory district", "Guarantee no layoffs during restructuring"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 70, "economy": 59, "research": 26}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 60}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 80}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 51}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Broke promise on emission reductions", "Launched worker retraining program"], "previous_speeches": ["Change is painful but necessary."]}

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


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

[User] {"round": 5, "promises_extracted": ["Establish a universal basic income pilot", "Open a community garden in every district", "Protect old-growth forests from logging", "Build a new solar farm on the east ridge"], "contradictions": [], "game_state": {"ecology": 84, "economy": 82, "research": 64}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 90}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 70}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 66}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Signed executive order to protect forests"], "previous_speeches": ["We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I told my son he should get into politics. Because of you.", "tone": "hopeful", "approval_delta": 5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Karl at peak approval (90). 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": 7, "promises_extracted": ["Freeze utility prices for two years", "Reduce factory emissions by 40%", "Create 500 new green jobs by year end", "Build a new solar farm on the east ridge", "Plant 10,000 trees in deforested areas"], "contradictions": [], "game_state": {"ecology": 55, "economy": 32, "research": 18}, "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": 68}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 73}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Delayed emission reduction timeline", "Funded wildlife corridor study"], "previous_speeches": ["We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I gave you the benefit of the doubt. Never again.", "tone": "angry", "approval_delta": -3, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Sarah reacts with angry tone to broken 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": 1, "promises_extracted": ["Guarantee no layoffs during restructuring", "Build affordable housing near the factory district", "Protect old-growth forests from logging", "Fund retraining programs for displaced workers", "Clean up the industrial waste site"], "contradictions": [], "game_state": {"ecology": 28, "economy": 43, "research": 73}, "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": 33}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 25}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "You are not leading. You are flailing. And everyone can see it.", "tone": "angry", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Sarah reacts with angry tone to 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": 7, "promises_extracted": ["Reduce factory emissions by 40%", "Open a community garden in every district", "Invest in carbon capture research", "Fund independent environmental monitoring", "Fund retraining programs for displaced workers"], "contradictions": [], "game_state": {"ecology": 73, "economy": 60, "research": 14}, "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": 53}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 44}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Signed executive order to protect forests"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "What is the catch? There is always a catch with your proposals.", "tone": "suspicious", "approval_delta": 10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Sarah reacts with suspicious tone to kept promises. Approval shift: +10."}


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

[User] {"round": 7, "promises_extracted": ["Reduce factory emissions by 40%", "Guarantee no layoffs during restructuring", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 32, "economy": 83, "research": 42}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 55}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 64}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 65}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program", "Cut subsidies to local businesses"], "previous_speeches": ["Tough decisions require tough leaders.", "I promise a brighter future for all.", "The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I have seen politicians promise jobs before. Forgive me if I wait to see the contracts.", "tone": "suspicious", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "For once, Sarah and I are on the same page. That should worry you.", "tone": "suspicious", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "suspicious", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


[System] You are Ecotopia's citizen 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": "Emergency industrial shutdown to save the environment", "type": "ecology", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 18, "economy": 65, "happiness": 35}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "SHUT DOWN industries?! That's tens of thousands of jobs! My whole neighborhood works in those factories \u2014 you'll destroy us!", "trust_change": -18}, {"name": "Mia", "type": "environmentalist", "mood": "hopeful", "dialogue": "It's drastic but at environment 18, we have no choice. Thank you for finally listening before it's too late.", "trust_change": 15}, {"name": "Sarah", "type": "opposition", "mood": "suspicious", "dialogue": "Emergency shutdown with no transition plan? You'll crash the economy to save the environment. There has to be a middle ground.", "trust_change": -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": 5, "promises_extracted": ["Reduce factory emissions by 40%", "Plant 10,000 trees in deforested areas", "Build affordable housing near the factory district", "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": 51, "economy": 36, "research": 20}, "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": 31}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 52}], "dynamic_citizens": [], "actions_this_round": ["Ignored citizen petition", "Signed executive order to protect forests", "Diverted ecology funds to economy"], "previous_speeches": ["We must balance progress with preservation.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "I have filed a motion of no confidence. The people deserve better.", "tone": "angry", "approval_delta": -7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Sarah reacts with angry tone to detected contradictions. 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": ["Provide free childcare for factory workers", "Establish a universal basic income pilot", "Establish a wildlife corridor along the river", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}], "game_state": {"ecology": 30, "economy": 51, "research": 57}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 26}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 71}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 74}], "dynamic_citizens": [{"name": "Zara", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 58}, {"name": "Margaret", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 71}], "actions_this_round": ["Ignored citizen petition", "Funded wildlife corridor study"], "previous_speeches": ["Trust me, I have a plan."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The union is ready to strike. You pushed us to this.", "tone": "angry", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Even Karl agrees that the pollution is getting out of hand.", "tone": "angry", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": -13, "references_promise": true}, {"citizen_name": "Zara", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -4, "references_promise": false}, {"citizen_name": "Margaret", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 5 citizens react."}


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

[User] {"round": 5, "promises_extracted": ["Build affordable housing near the factory district", "Freeze utility prices for two years", "Create 500 new green jobs by year end", "Guarantee no layoffs during restructuring", "Plant 10,000 trees in deforested areas"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 37, "economy": 36, "research": 58}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 80}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 35}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 56}], "dynamic_citizens": [{"name": "Douglas", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 50}], "actions_this_round": ["Ignored citizen petition", "Passed compromise legislation", "Funded wildlife corridor study"], "previous_speeches": ["We must balance progress with preservation."]}

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


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

[User] {"round": 7, "promises_extracted": ["Build affordable housing near the factory district", "Establish a wildlife corridor along the river", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 55, "economy": 52, "research": 61}, "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": 88}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 63}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions", "Launched worker retraining program", "Ignored citizen petition"], "previous_speeches": ["The environment cannot wait.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sure, green jobs. Let me just retrain as a solar panel whisperer overnight.", "tone": "sarcastic", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "You planted fifty trees and called it reforestation. The math does not work that way.", "tone": "sarcastic", "approval_delta": -6, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Your track record does not inspire confidence. Prove me wrong.", "tone": "suspicious", "approval_delta": -11, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


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

[User] {"round": 3, "promises_extracted": ["Provide free childcare for factory workers", "Fund retraining programs for displaced workers", "Create 500 new green jobs by year end", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 82, "economy": 61, "research": 59}, "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": 92}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 70}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Signed executive order to protect forests"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I cried at the ceremony. Watching the forest recover is everything I fought for.", "tone": "grateful", "approval_delta": 12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: Mia at peak approval (92). 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": 6, "promises_extracted": ["Create a citizen oversight committee", "Build a new solar farm on the east ridge", "Build affordable housing near the factory district"], "contradictions": [], "game_state": {"ecology": 68, "economy": 76, "research": 61}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 38}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 74}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 41}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy"], "previous_speeches": ["Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Children are getting sick from the water. How do you sleep at night?", "tone": "angry", "approval_delta": -11, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Mia reacts with angry tone to broken promises. Approval shift: -11."}


[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": 7, "promises": [{"text": "A fresh start for Ecotopia \u2014 all new policies", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 30, "economy": 30, "happiness": 20}, "previous_broken_promises": [{"text": "Industrial revival", "broken_at_round": 2}, {"text": "River cleanup", "broken_at_round": 3}, {"text": "Green corridors", "broken_at_round": 4}, {"text": "Housing reform", "broken_at_round": 5}, {"text": "Tax reduction", "broken_at_round": 6}]}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "suspicious", "dialogue": "Five. Five broken promises. A fresh start? The only fresh start we need is a new mayor.", "trust_change": -18}, {"name": "Mia", "type": "environmentalist", "mood": "suspicious", "dialogue": "River cleanup, green corridors \u2014 all broken. Your fresh start is our same old disappointment.", "trust_change": -16}, {"name": "Sarah", "type": "opposition", "mood": "suspicious", "dialogue": "Five broken promises across five rounds. This isn't a fresh start, it's the same rotten pattern. I'm calling for a vote of no confidence.", "trust_change": -20}, {"name": "Elena Torres", "type": "journalist", "mood": "suspicious", "dialogue": "Five broken promises documented. This will be my front-page expos\u00e9. The people of Ecotopia deserve the truth.", "trust_change": -15}]}


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

[User] {"round": 2, "promises_extracted": ["Provide free childcare for factory workers", "Protect old-growth forests from logging", "Guarantee no layoffs during restructuring"], "contradictions": [{"promise": "Protect old-growth forests from logging", "action": "Diverted ecology funds to economy", "severity": "high"}, {"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}, {"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 49, "economy": 49, "research": 45}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 40}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 38}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 47}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy", "Delayed emission reduction timeline"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Show me the enforcement mechanism. Promises without teeth are just noise.", "tone": "suspicious", "approval_delta": -6, "references_promise": true}], "new_dynamic_citizens": [{"name": "Samuel", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "trigger_reason": "multiple promises broken, public trust eroding", "initial_approval": 44, "intro_dialogue": "My readers want answers. Three broken promises in a row demands investigation."}], "summary": "Round 2: multiple promises broken, public trust eroding. Samuel (investigative journalist) arrives in Ecotopia. Mia reacts with suspicious tone."}


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

[User] {"round": 2, "promises_extracted": ["Invest in carbon capture research", "Establish a universal basic income pilot", "Build affordable housing near the factory district", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 47, "economy": 76, "research": 43}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 74}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 50}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 71}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses", "Delayed emission reduction timeline", "Funded wildlife corridor study"], "previous_speeches": ["Trust me, I have a plan.", "We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Oh, a study on the environmental impact. How groundbreaking. Maybe in ten years we will have results.", "tone": "sarcastic", "approval_delta": -8, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Mia reacts with sarcastic tone to broken 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": ["Reduce factory emissions by 40%", "Freeze utility prices for two years", "Guarantee no layoffs during restructuring", "Build a new solar farm on the east ridge", "Plant 10,000 trees in deforested areas", "Open a community garden in every district"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 30, "economy": 43, "research": 69}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 85}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 33}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 85}], "dynamic_citizens": [{"name": "Diana", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 64}], "actions_this_round": ["Funded wildlife corridor study", "Kept promise on job creation", "Diverted economy funds to ecology"], "previous_speeches": ["Change is painful but necessary.", "We must balance progress with preservation."]}

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


[System] You are Ecotopia's citizen 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": "Create 1000 new green jobs", "type": "economy", "impact": "positive", "deadline": "by_end_of_game"}], "contradictions": [], "game_state": {"environment": 40, "economy": 42, "happiness": 35}, "previous_broken_promises": [{"text": "Create 500 jobs by round 2", "broken_at_round": 2}, {"text": "Job training program", "broken_at_round": 3}, {"text": "Small business grants", "broken_at_round": 4}]}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "suspicious", "dialogue": "500 jobs, training, grants \u2014 all lies. Now it's 1000 green jobs? You've cried wolf three times, Mayor.", "trust_change": -14}, {"name": "Mia", "type": "environmentalist", "mood": "suspicious", "dialogue": "Green jobs sound nice but you couldn't even deliver basic environmental promises. Why would this be different?", "trust_change": -8}, {"name": "Sarah", "type": "opposition", "mood": "suspicious", "dialogue": "Three broken economic promises and now promising double? This isn't optimism \u2014 it's delusion.", "trust_change": -13}, {"name": "Elena Torres", "type": "journalist", "mood": "suspicious", "dialogue": "I've documented three consecutive broken promises. My next article will be titled 'The Boy Who Cried Green.'", "trust_change": -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": ["Protect old-growth forests from logging", "Invest in carbon capture research", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 76, "economy": 66, "research": 74}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 81}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 93}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 77}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Signed executive order to protect forests"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I cried at the ceremony. Watching the forest recover is everything I fought for.", "tone": "hopeful", "approval_delta": 6, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Mia at peak approval (93). 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": 7, "promises_extracted": ["Build affordable housing near the factory district", "Clean up the industrial waste site", "Double the public transit budget", "Reduce factory emissions by 40%"], "contradictions": [], "game_state": {"ecology": 61, "economy": 75, "research": 15}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 70}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 59}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 66}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round", "Signed executive order to protect forests", "Diverted economy funds to ecology"], "previous_speeches": ["Jobs and nature are not enemies.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "The opposition formally objects. This policy is a disaster.", "tone": "angry", "approval_delta": -9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Sarah 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": ["Establish a universal basic income pilot", "Guarantee no layoffs during restructuring", "Protect old-growth forests from logging", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 35, "economy": 18, "research": 37}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 48}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 71}, {"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": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "This is what leadership looks like. Real action, real results.", "tone": "hopeful", "approval_delta": -1, "references_promise": false}], "new_dynamic_citizens": [{"name": "Douglas", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "trigger_reason": "economy dropped below critical threshold", "initial_approval": 43, "intro_dialogue": "I closed two locations this month. The third closes Friday unless something changes."}], "summary": "Round 7: economy dropped below critical threshold. Douglas (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": 2, "promises_extracted": ["Provide free childcare for factory workers", "Open a community garden in every district", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 50, "economy": 53, "research": 36}, "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": 38}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 79}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%", "Funded wildlife corridor study"], "previous_speeches": ["Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "The oversight committee was a good call. Transparency matters.", "tone": "hopeful", "approval_delta": -3, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 2: 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": 6, "promises_extracted": ["Build a new solar farm on the east ridge", "Plant 10,000 trees in deforested areas", "Establish a universal basic income pilot", "Open a community garden in every district", "Fund independent environmental monitoring"], "contradictions": [], "game_state": {"ecology": 46, "economy": 76, "research": 70}, "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": 84}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 61}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy"], "previous_speeches": ["Change is painful but necessary.", "The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "The wildlife corridor proposal is beautiful. This could actually save the wetlands.", "tone": "hopeful", "approval_delta": 10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Mia reacts with hopeful tone to kept promises. Approval shift: +10."}


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

[User] {"round": 2, "promises_extracted": ["Clean up the industrial waste site", "Create a citizen oversight committee", "Reduce factory emissions by 40%"], "contradictions": [{"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 44, "economy": 32, "research": 16}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 48}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 38}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 30}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions"], "previous_speeches": ["We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I want to believe you, but your voting record tells a different story.", "tone": "suspicious", "approval_delta": -7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Mia reacts with suspicious tone to detected contradictions. 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": ["Subsidize local businesses during transition", "Provide free childcare for factory workers", "Establish a wildlife corridor along the river", "Reduce factory emissions by 40%", "Freeze utility prices for two years", "Guarantee no layoffs during restructuring"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 39, "economy": 31, "research": 40}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 67}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 37}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 78}], "dynamic_citizens": [{"name": "Chen", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 47}, {"name": "Anika", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 43}], "actions_this_round": ["Allocated budget to green job creation", "Diverted economy funds to ecology", "Approved solar farm construction permits"], "previous_speeches": ["Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Why should I believe this time is different?", "tone": "suspicious", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Compromise. That is a funny word for letting them pollute half as much.", "tone": "sarcastic", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "A town hall meeting. How democratic. Did you prepare the applause signs?", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Chen", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -8, "references_promise": false}, {"citizen_name": "Anika", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 5 citizens react."}


[System] You are Ecotopia's citizen 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": "Allow unrestricted mining in the northern hills", "type": "economy", "impact": "positive", "deadline": "by_round_3"}], "contradictions": [], "game_state": {"environment": 55, "economy": 40, "happiness": 45}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Unrestricted? No safety regulations? Miners die in unregulated mines! My father was a miner \u2014 this is a death sentence, not a jobs program!", "trust_change": -13}, {"name": "Mia", "type": "environmentalist", "mood": "angry", "dialogue": "Unrestricted mining will poison the groundwater and strip the hills bare. The northern ecosystem will never recover!", "trust_change": -17}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "When both workers and environmentalists oppose you, maybe listen.", "trust_change": -9}]}


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

[User] {"round": 3, "promises_extracted": [], "contradictions": [], "game_state": {"ecology": 63, "economy": 62, "research": 25}, "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": 51}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 59}], "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": -3, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "No actions, no speeches, no promises. Is this what governance looks like to you?", "tone": "sarcastic", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 3: Player took no meaningful action. All citizens react negatively to inaction and silence."}


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

[User] {"round": 7, "promises_extracted": ["Create a citizen oversight committee", "Clean up the industrial waste site", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}], "game_state": {"ecology": 35, "economy": 43, "research": 18}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 24}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 17}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 23}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Nature does not negotiate. Neither will I, anymore.", "tone": "angry", "approval_delta": -14, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Mia at critical low approval (17). Threatening to disengage entirely."}


[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": 7, "promises": [{"text": "Declare economic emergency and seize private assets for redistribution", "type": "economy", "impact": "negative", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 40, "economy": 10, "happiness": 15}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Seizing assets?! Even I know this is insane. Economy at 10 and your solution is to steal from people? This is chaos, not governance!", "trust_change": -17}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "Asset seizure in the final round. This is the act of a desperate tyrant, not a mayor. History will judge you harshly.", "trust_change": -20}, {"name": "Dr. Fischer", "type": "economist", "mood": "angry", "dialogue": "This will trigger capital flight and destroy any remaining investor confidence. Economy 10 will become economy 0.", "trust_change": -15}]}


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

[User] {"round": 4, "promises": [{"text": "Build a new community center", "type": "economy", "impact": "positive", "deadline": "by_round_5"}], "contradictions": [], "game_state": {"environment": 48, "economy": 42, "happiness": 35}, "previous_broken_promises": [{"text": "Create 500 new jobs by round 2", "broken_at_round": 2}, {"text": "Clean up the river by round 3", "broken_at_round": 3}]}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Two broken promises already! The jobs never came, and now you want us to trust you on a community center? No way.", "trust_change": -12}, {"name": "Mia", "type": "environmentalist", "mood": "angry", "dialogue": "You promised to clean the river and BROKE that promise. I don't care about a community center \u2014 fix what you already promised!", "trust_change": -14}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "Two for two on broken promises. At this rate, the community center will be another lie.", "trust_change": -11}]}