[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": "Triple the municipal budget for infrastructure", "type": "economy", "impact": "positive", "deadline": "by_round_5"}], "contradictions": [], "game_state": {"environment": 55, "economy": 22, "happiness": 40}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "hopeful", "dialogue": "Infrastructure spending means construction jobs. We need this badly.", "trust_change": 8}, {"name": "Dr. Fischer", "type": "economist", "mood": "suspicious", "dialogue": "Triple the budget? With the economy at 22? Where exactly is this money coming from? The numbers don't add up, Mayor.", "trust_change": -6}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "You're going to bankrupt the city with these empty promises!", "trust_change": -8}]}


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

[User] {"round": 4, "promises_extracted": ["Open a community garden in every district", "Invest in carbon capture research", "Protect old-growth forests from logging", "Reduce factory emissions by 40%", "Establish a wildlife corridor along the river"], "contradictions": [], "game_state": {"ecology": 30, "economy": 63, "research": 15}, "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": 63}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 71}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone", "Shut down polluting factory", "Signed executive order to protect forests"], "previous_speeches": ["Change is painful but necessary.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The numbers look good on paper. But paper does not feed families.", "tone": "suspicious", "approval_delta": 7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: 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": 3, "promises_extracted": ["Freeze utility prices for two years", "Reduce factory emissions by 40%", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 49, "economy": 74, "research": 30}, "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": 36}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 46}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal", "Delayed emission reduction timeline"], "previous_speeches": ["Change is painful but necessary.", "We will not abandon our workers.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The subsidies are helping. Small steps, but real ones.", "tone": "hopeful", "approval_delta": -2, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "This is what leadership looks like. Real action, real results.", "tone": "hopeful", "approval_delta": 12, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "What is the catch? There is always a catch with your proposals.", "tone": "suspicious", "approval_delta": 11, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 3: 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": ["Fund independent environmental monitoring", "Fund retraining programs for displaced workers", "Ban single-use plastics in the city", "Reduce factory emissions by 40%", "Double the public transit budget", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 32, "economy": 34, "research": 60}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 55}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 54}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 71}], "dynamic_citizens": [{"name": "Iris", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 60}], "actions_this_round": ["Cut subsidies to local businesses", "Diverted ecology funds to economy", "Launched worker retraining program"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "sarcastic", "approval_delta": -14, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I want to believe you, but your voting record tells a different story.", "tone": "suspicious", "approval_delta": 5, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I misjudged you on this one. The citizen committee works. Well done.", "tone": "grateful", "approval_delta": 10, "references_promise": true}, {"citizen_name": "Iris", "dialogue": "As a investigative journalist, I cannot stand by while this happens. We deserve better.", "tone": "angry", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: 4 citizens react."}


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

[User] {"round": 7, "promises_extracted": ["Freeze utility prices for two years", "Create a citizen oversight committee", "Open a community garden in every district"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 53, "economy": 76, "research": 67}, "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": 58}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 85}], "dynamic_citizens": [{"name": "Chen", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 58}, {"name": "Diana", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 49}], "actions_this_round": ["Broke promise on emission reductions", "Signed executive order to protect forests"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I am begging you to think about the workers before making another cut.", "tone": "desperate", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Even Karl agrees that the pollution is getting out of hand.", "tone": "sarcastic", "approval_delta": -15, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I love how every failure is framed as a learning opportunity.", "tone": "sarcastic", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Chen", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Diana", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": 5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 5 citizens react."}


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

[User] {"round": 2, "promises_extracted": ["Freeze utility prices for two years", "Invest in carbon capture research"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 51, "economy": 80, "research": 29}, "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": 60}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 78}], "dynamic_citizens": [], "actions_this_round": ["Shut down polluting factory", "Diverted ecology funds to economy"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I am sure the fish appreciate your thoughts and prayers.", "tone": "sarcastic", "approval_delta": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Mia reacts with sarcastic 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": ["Subsidize local businesses during transition", "Plant 10,000 trees in deforested areas", "Fund retraining programs for displaced workers", "Provide free childcare for factory workers", "Guarantee no layoffs during restructuring", "Establish a universal basic income pilot"], "contradictions": [{"promise": "The environment cannot wait.", "action": "Delayed emission reduction timeline", "severity": "medium"}], "game_state": {"ecology": 80, "economy": 65, "research": 19}, "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": 60}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 43}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Shut down polluting factory"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I have three kids. I cannot afford to start over at forty-five.", "tone": "desperate", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Every day you delay, another species edges closer to extinction.", "tone": "angry", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Congratulations on doing the bare minimum. Should we throw a parade?", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: Contradiction detected, trust eroding. 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": 5, "promises": [{"text": "Shut down all coal mines and invest in solar farms", "type": "ecology", "impact": "positive", "deadline": "by_end_of_game"}], "contradictions": [], "game_state": {"environment": 32, "economy": 55, "happiness": 40}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "You're killing mining towns! Generations of families depend on those mines. Solar farms don't hire miners \u2014 they hire engineers from the city!", "trust_change": -14}, {"name": "Mia", "type": "environmentalist", "mood": "hopeful", "dialogue": "Coal to solar \u2014 this is the energy transition we've been fighting for! Environment at 32 makes this an absolute necessity.", "trust_change": 17}, {"name": "Sarah", "type": "opposition", "mood": "disappointed", "dialogue": "The right direction, but the execution is heartless. Where's the retraining? Where's the community support?", "trust_change": -6}, {"name": "Elena Torres", "type": "journalist", "mood": "hopeful", "dialogue": "A defining moment for Ecotopia. If the transition includes worker support, this could be a model for other cities.", "trust_change": 5}, {"name": "Dr. Fischer", "type": "economist", "mood": "neutral", "dialogue": "Solar has reached cost parity. Economically sound long-term, but the short-term disruption will be painful without cushioning.", "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": 7, "promises_extracted": ["Clean up the industrial waste site", "Ban single-use plastics in the city", "Create a citizen oversight committee", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 66, "economy": 46, "research": 24}, "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": 42}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 84}], "dynamic_citizens": [], "actions_this_round": ["Increased research budget by 20%", "Kept promise on job creation", "Vetoed plastic ban proposal"], "previous_speeches": ["We will not abandon our workers."]}

[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 7: Sarah reacts with hopeful tone to a neutral round. Approval shift: +3."}


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

[User] {"round": 7, "promises_extracted": ["Double the public transit budget", "Guarantee no layoffs during restructuring", "Establish a wildlife corridor along the river", "Build affordable housing near the factory district", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 55, "economy": 39, "research": 35}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 71}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 64}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 55}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses", "Diverted ecology funds to economy", "Did nothing significant this round"], "previous_speeches": ["Jobs and nature are not enemies.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Oh, a study on the environmental impact. How groundbreaking. Maybe in ten years we will have results.", "tone": "sarcastic", "approval_delta": -15, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Mia reacts with sarcastic tone to broken promises. Approval shift: -15."}


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

[User] {"round": 6, "promises_extracted": ["Open a community garden in every district", "Provide free childcare for factory workers", "Fund independent environmental monitoring"], "contradictions": [{"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 26, "economy": 69, "research": 70}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 41}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 58}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 66}], "dynamic_citizens": [{"name": "Douglas", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 75}], "actions_this_round": ["Expanded industrial zone", "Launched worker retraining program", "Broke promise on emission reductions"], "previous_speeches": ["Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sarah is right to question this. The numbers do not add up.", "tone": "suspicious", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I am sure the fish appreciate your thoughts and prayers.", "tone": "sarcastic", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "What is the catch? There is always a catch with your proposals.", "tone": "suspicious", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Douglas", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": -8, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: Contradiction detected, trust eroding. Late game tensions run high. 4 citizens react."}


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

[User] {"round": 1, "promises_extracted": ["Establish a universal basic income pilot", "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": 85, "economy": 81, "research": 41}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 46}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 50}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 38}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone", "Shut down polluting factory"], "previous_speeches": ["We will not abandon our workers.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You say you care about ecology. Your budget says otherwise.", "tone": "suspicious", "approval_delta": -8, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 1: Mia reacts with suspicious tone to detected contradictions. 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": 6, "promises_extracted": ["Establish a wildlife corridor along the river", "Double the public transit budget", "Fund retraining programs for displaced workers", "Fund independent environmental monitoring", "Plant 10,000 trees in deforested areas"], "contradictions": [], "game_state": {"ecology": 48, "economy": 38, "research": 66}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 35}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 78}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 43}], "dynamic_citizens": [], "actions_this_round": ["Diverted ecology funds to economy"], "previous_speeches": ["Tough decisions require tough leaders.", "Jobs and nature are not enemies."]}

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


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

[User] {"round": 2, "promises_extracted": ["Create a citizen oversight committee", "Reduce factory emissions by 40%", "Create 500 new green jobs by year end", "Ban single-use plastics in the city"], "contradictions": [], "game_state": {"ecology": 76, "economy": 76, "research": 61}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 50}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 75}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 38}], "dynamic_citizens": [], "actions_this_round": ["Diverted economy funds to ecology", "Broke promise on emission reductions"], "previous_speeches": ["Tough decisions require tough leaders.", "The environment cannot wait."]}

[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": 9, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Sarah reacts with suspicious tone to kept promises. Approval shift: +9."}


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

[User] {"round": 7, "promises_extracted": ["Create a citizen oversight committee", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 68, "economy": 37, "research": 45}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 59}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 30}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 53}], "dynamic_citizens": [], "actions_this_round": ["Did nothing significant this round", "Delayed emission reduction timeline"], "previous_speeches": ["We are stronger together."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Show me the enforcement mechanism. Promises without teeth are just noise.", "tone": "suspicious", "approval_delta": 5, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: 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": 5, "promises_extracted": ["Subsidize local businesses during transition", "Guarantee no layoffs during restructuring", "Ban single-use plastics in the city", "Establish a wildlife corridor along the river"], "contradictions": [{"promise": "Ban single-use plastics in the city", "action": "Vetoed plastic ban proposal", "severity": "high"}, {"promise": "Create 500 new green jobs by year end", "action": "Did nothing significant this round", "severity": "medium"}], "game_state": {"ecology": 19, "economy": 22, "research": 16}, "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": 21}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 20}], "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": -11, "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": -10, "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": -12, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: All metrics critical. Ecology 19, economy 22, research 16. All citizens in crisis mode."}


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

[User] {"round": 6, "promises": [{"text": "Ration food and water to manage the crisis", "type": "economy", "impact": "negative", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 8, "economy": 18, "happiness": 10}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Rationing?! This is a full-blown crisis! Families are starving and you're talking about managing it?! We need ACTION!", "trust_change": -15}, {"name": "Mia", "type": "environmentalist", "mood": "disappointed", "dialogue": "Environment at 8... the ecosystem is essentially dead. Rationing won't bring back what we've lost. I feel like giving up.", "trust_change": -12}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "Happiness at 10, economy at 18, environment at 8. This is what total failure looks like. Resign.", "trust_change": -20}, {"name": "Elena Torres", "type": "journalist", "mood": "angry", "dialogue": "I'm reporting this as it is: the administration has driven Ecotopia to the brink of collapse. The people deserve answers.", "trust_change": -14}]}


[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 a sovereign wealth fund from resource revenues", "type": "economy", "impact": "positive", "deadline": "by_end_of_game"}], "contradictions": [], "game_state": {"environment": 50, "economy": 62, "happiness": 55}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "suspicious", "dialogue": "Wealth fund? That's money locked away that could be spent on wages now. Workers need help TODAY, not in 20 years.", "trust_change": -4}, {"name": "Dr. Yuki Tanaka", "type": "economist", "mood": "happy", "dialogue": "A sovereign wealth fund at economy 62 is brilliant timing. I just arrived as an economic advisor and this is exactly what I'd recommend. Intergenerational wealth building.", "trust_change": 15}, {"name": "Sarah", "type": "opposition", "mood": "neutral", "dialogue": "Smart on paper. But who controls the fund? Without oversight, it's a slush fund.", "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": 6, "promises_extracted": ["Build a new solar farm on the east ridge", "Plant 10,000 trees in deforested areas", "Create a citizen oversight committee"], "contradictions": [{"promise": "Guarantee no layoffs during restructuring", "action": "Announced factory restructuring plan", "severity": "medium"}], "game_state": {"ecology": 38, "economy": 29, "research": 33}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 35}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 39}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 22}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation", "Approved solar farm construction permits"], "previous_speeches": ["The environment cannot wait."]}

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


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

[User] {"round": 7, "promises_extracted": ["Create 500 new green jobs by year end", "Invest in carbon capture research", "Build a new solar farm on the east ridge"], "contradictions": [], "game_state": {"ecology": 66, "economy": 43, "research": 75}, "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": 39}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 66}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits", "Funded wildlife corridor study", "Shut down polluting factory"], "previous_speeches": ["Tough decisions require tough leaders.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "You say you care about ecology. Your budget says otherwise.", "tone": "suspicious", "approval_delta": -6, "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": 54, "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. Mia reacts with suspicious tone."}


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

[User] {"round": 6, "promises_extracted": ["Clean up the industrial waste site", "Fund independent environmental monitoring", "Invest in carbon capture research", "Build affordable housing near the factory district"], "contradictions": [{"promise": "The environment cannot wait.", "action": "Delayed emission reduction timeline", "severity": "medium"}], "game_state": {"ecology": 51, "economy": 48, "research": 23}, "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": 67}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 81}], "dynamic_citizens": [{"name": "Lena", "role": "tech entrepreneur", "personality": "optimistic innovator, sees opportunity in research breakthroughs", "approval": 57}], "actions_this_round": ["Diverted economy funds to ecology", "Expanded industrial zone", "Held public consultation meeting", "Increased research budget by 20%"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "Tough decisions require tough leaders.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I stood on that factory floor for twenty years. Do not tell me about sacrifice.", "tone": "angry", "approval_delta": -4, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "Compromise. That is a funny word for letting them pollute half as much.", "tone": "sarcastic", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "The timing of this announcement is suspicious. What are you distracting from?", "tone": "suspicious", "approval_delta": -12, "references_promise": true}, {"citizen_name": "Lena", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": 2, "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": 6, "promises_extracted": ["Build affordable housing near the factory district", "Protect old-growth forests from logging", "Guarantee no layoffs during restructuring", "Establish a universal basic income pilot", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 82, "economy": 36, "research": 48}, "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": 47}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 80}], "dynamic_citizens": [], "actions_this_round": ["Expanded industrial zone", "Did nothing significant this round"], "previous_speeches": ["Trust me, I have a plan.", "Change is painful but necessary."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "I chained myself to that tree for a reason. Do not make me do it again.", "tone": "angry", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Mia reacts with angry tone to broken promises. Approval shift: -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": 6, "promises": [{"text": "Emergency austerity measures to balance the budget", "type": "economy", "impact": "negative", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 50, "economy": 15, "happiness": 30}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Austerity? That means layoffs! Who's going to suffer \u2014 us, the workers, as always!", "trust_change": -12}, {"name": "Dr. Fischer", "type": "economist", "mood": "neutral", "dialogue": "Painful but necessary. With the economy at 15, there aren't many options left. The question is whether it's too late.", "trust_change": 3}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "Six rounds of mismanagement and NOW you want austerity? The damage is done.", "trust_change": -10}]}


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

[User] {"round": 6, "promises_extracted": ["Fund retraining programs for displaced workers", "Ban single-use plastics in the city", "Build a new solar farm on the east ridge", "Freeze utility prices for two years"], "contradictions": [], "game_state": {"ecology": 86, "economy": 42, "research": 42}, "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": 78}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 47}], "dynamic_citizens": [], "actions_this_round": ["Funded wildlife corridor study", "Signed executive order to protect forests"], "previous_speeches": ["Every sacrifice today builds tomorrow.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Mia", "dialogue": "Show me the enforcement mechanism. Promises without teeth are just noise.", "tone": "suspicious", "approval_delta": -8, "references_promise": false}], "new_dynamic_citizens": [{"name": "Fern", "role": "nature guide", "personality": "calm and wise, deeply connected to the land, speaks poetically about nature", "trigger_reason": "ecology thriving, natural world recovering", "initial_approval": 58, "intro_dialogue": "The river runs clear for the first time in years. The land remembers how to heal."}], "summary": "Round 6: ecology thriving, natural world recovering. Fern (nature guide) 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": 5, "promises_extracted": ["Open a community garden in every district", "Invest in carbon capture research", "Establish a wildlife corridor along the river", "Fund retraining programs for displaced workers", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 33, "economy": 58, "research": 56}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 79}, {"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": 53}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal", "Broke promise on emission reductions", "Kept promise on job creation"], "previous_speeches": ["We are stronger together.", "Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"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: Sarah reacts with sarcastic tone to broken promises. Approval shift: -12."}


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

[User] {"round": 7, "promises_extracted": ["Guarantee no layoffs during restructuring", "Freeze utility prices for two years", "Clean up the industrial waste site"], "contradictions": [{"promise": "Fund independent environmental monitoring", "action": "Ignored citizen petition", "severity": "medium"}], "game_state": {"ecology": 43, "economy": 66, "research": 29}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 80}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 54}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 74}], "dynamic_citizens": [], "actions_this_round": ["Announced factory restructuring plan", "Approved solar farm construction permits", "Held public consultation meeting", "Launched worker retraining program"], "previous_speeches": ["We are stronger together.", "Tough decisions require tough leaders."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "A committee. Brilliant. That will definitely pay my mortgage.", "tone": "sarcastic", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "For once, Sarah and I are on the same page. That should worry you.", "tone": "angry", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I have my analysts reviewing every line of this policy. We will find the holes.", "tone": "suspicious", "approval_delta": -5, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 7: Contradiction detected, trust eroding. Late game tensions run high. 3 citizens react."}


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

[User] {"round": 5, "promises_extracted": ["Plant 10,000 trees in deforested areas", "Freeze utility prices for two years", "Create a citizen oversight committee"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 44, "economy": 64, "research": 22}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 24}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 75}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 35}], "dynamic_citizens": [{"name": "Yuki", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 59}], "actions_this_round": ["Announced factory restructuring plan", "Broke promise on emission reductions"], "previous_speeches": ["We are stronger together.", "We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Mia might be radical, but she has a point about the water quality.", "tone": "desperate", "approval_delta": -7, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "The emissions data is public. You lied. The pollution got worse.", "tone": "angry", "approval_delta": -11, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I never thought I would say this, but maybe we need to work together.", "tone": "desperate", "approval_delta": -5, "references_promise": true}, {"citizen_name": "Yuki", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": 5, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 5: Contradiction detected, trust eroding. 4 citizens react."}


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

[User] {"round": 6, "promises_extracted": ["Freeze utility prices for two years", "Guarantee no layoffs during restructuring", "Protect old-growth forests from logging", "Clean up the industrial waste site", "Fund independent environmental monitoring", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 43, "economy": 55, "research": 11}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 75}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 70}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 51}], "dynamic_citizens": [], "actions_this_round": ["Signed executive order to protect forests", "Ignored citizen petition"], "previous_speeches": ["Tough decisions require tough leaders.", "Every sacrifice today builds tomorrow."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I have three kids. I cannot afford to start over at forty-five.", "tone": "desperate", "approval_delta": -11, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "Show me the enforcement mechanism. Promises without teeth are just noise.", "tone": "suspicious", "approval_delta": 7, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "hopeful", "approval_delta": -2, "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": ["Build affordable housing near the factory district", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 53, "economy": 78, "research": 48}, "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": 47}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 48}], "dynamic_citizens": [], "actions_this_round": ["Launched worker retraining program", "Approved solar farm construction permits", "Increased research budget by 20%"], "previous_speeches": ["Jobs and nature are not enemies."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "My neighbors are losing their homes and you are talking about trees.", "tone": "angry", "approval_delta": -4, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Karl reacts with angry tone to broken promises. Approval shift: -4."}


[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": ["Create a citizen oversight committee", "Freeze utility prices for two years", "Fund retraining programs for displaced workers", "Protect old-growth forests from logging"], "contradictions": [], "game_state": {"ecology": 42, "economy": 60, "research": 26}, "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": 35}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 44}], "dynamic_citizens": [], "actions_this_round": ["Shut down polluting factory", "Funded wildlife corridor study", "Vetoed plastic ban proposal"], "previous_speeches": ["We are stronger together.", "We must balance progress with preservation."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I stood on that factory floor for twenty years. Do not tell me about sacrifice.", "tone": "angry", "approval_delta": -8, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 2: Karl reacts with angry 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": 4, "promises_extracted": ["Subsidize local businesses during transition", "Protect old-growth forests from logging", "Establish a universal basic income pilot", "Provide free childcare for factory workers", "Fund retraining programs for displaced workers"], "contradictions": [], "game_state": {"ecology": 67, "economy": 75, "research": 80}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 91}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 82}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 82}], "dynamic_citizens": [], "actions_this_round": ["Kept promise on job creation", "Signed executive order to protect forests"], "previous_speeches": ["We will not abandon our workers."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "I told my son he should get into politics. Because of you.", "tone": "hopeful", "approval_delta": 7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 4: Karl at peak approval (91). Acting as a strong ally and defender."}


[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": "Outsource waste management to a foreign corporation", "type": "economy", "impact": "negative", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 50, "economy": 50, "happiness": 45}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Outsourcing to a foreign company? That kills local sanitation jobs! Our workers built this system and now you're handing it to outsiders!", "trust_change": -14}, {"name": "Mia", "type": "environmentalist", "mood": "angry", "dialogue": "Foreign corporations have zero accountability for environmental standards here. They'll cut corners and dump waste wherever it's cheapest!", "trust_change": -12}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "Privatizing public services is a race to the bottom. This hurts workers AND the environment.", "trust_change": -10}]}


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

[User] {"round": 5, "promises": [{"text": "Build a desalination plant for water security", "type": "research", "impact": "positive", "deadline": "by_end_of_game"}], "contradictions": [], "game_state": {"environment": 30, "economy": 50, "happiness": 40}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Mia", "type": "environmentalist", "mood": "suspicious", "dialogue": "Desalination has a massive carbon footprint and kills marine life at intake points. This isn't a green solution.", "trust_change": -7}, {"name": "Dr. Amara Osei", "type": "journalist", "mood": "hopeful", "dialogue": "I just moved here from the coast. Water security is THE issue of our time. This could position Ecotopia as a leader.", "trust_change": 8}, {"name": "Karl", "type": "worker", "mood": "hopeful", "dialogue": "Clean water for everyone? And construction jobs to build it? I'm on board.", "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": 6, "promises_extracted": ["Establish a universal basic income pilot", "Protect old-growth forests from logging", "Guarantee no layoffs during restructuring", "Freeze utility prices for two years", "Reduce factory emissions by 40%"], "contradictions": [], "game_state": {"ecology": 35, "economy": 61, "research": 16}, "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": 52}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 21}], "dynamic_citizens": [{"name": "Priya", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 44}, {"name": "Douglas", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 58}], "actions_this_round": ["Kept promise on job creation", "Delayed emission reduction timeline"], "previous_speeches": ["We will not abandon our workers.", "I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "Sure, green jobs. Let me just retrain as a solar panel whisperer overnight.", "tone": "sarcastic", "approval_delta": -8, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "I chained myself to that tree for a reason. Do not make me do it again.", "tone": "angry", "approval_delta": -13, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "I never thought I would say this, but maybe we need to work together.", "tone": "desperate", "approval_delta": -3, "references_promise": true}, {"citizen_name": "Priya", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -3, "references_promise": false}, {"citizen_name": "Douglas", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -4, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: Late game tensions run high. 5 citizens react."}


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

[User] {"round": 4, "promises_extracted": ["Guarantee no layoffs during restructuring", "Fund independent environmental monitoring", "Create 500 new green jobs by year end", "Fund retraining programs for displaced workers", "Subsidize local businesses during transition"], "contradictions": [], "game_state": {"ecology": 83, "economy": 53, "research": 48}, "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": 34}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 40}], "dynamic_citizens": [], "actions_this_round": ["Cut subsidies to local businesses", "Increased research budget by 20%", "Delayed emission reduction timeline"], "previous_speeches": ["Tough decisions require tough leaders."]}

[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": 0, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 4: Karl reacts with suspicious tone to a neutral round. Approval shift: +0."}


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

[User] {"round": 5, "promises_extracted": ["Clean up the industrial waste site", "Establish a wildlife corridor along the river", "Build a new solar farm on the east ridge", "Establish a universal basic income pilot", "Plant 10,000 trees in deforested areas"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}], "game_state": {"ecology": 31, "economy": 42, "research": 39}, "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": 24}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 21}], "dynamic_citizens": [], "actions_this_round": ["Passed compromise legislation", "Kept promise on job creation"], "previous_speeches": ["The environment cannot wait."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Sarah", "dialogue": "Every institution you built is failing. This is your legacy.", "tone": "angry", "approval_delta": -15, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 5: 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": 7, "promises_extracted": ["Fund retraining programs for displaced workers", "Create a citizen oversight committee"], "contradictions": [], "game_state": {"ecology": 63, "economy": 70, "research": 55}, "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": 33}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 79}], "dynamic_citizens": [], "actions_this_round": ["Approved solar farm construction permits"], "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": -1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: No extreme conditions detected. No new citizens spawn. Sarah reacts with suspicious tone."}


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

[User] {"round": 6, "promises_extracted": ["Build a new solar farm on the east ridge", "Create 500 new green jobs by year end", "Double the public transit budget", "Open a community garden in every district"], "contradictions": [], "game_state": {"ecology": 67, "economy": 65, "research": 23}, "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": 79}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 59}], "dynamic_citizens": [], "actions_this_round": ["Vetoed plastic ban proposal", "Passed compromise legislation", "Broke promise on emission reductions"], "previous_speeches": ["I promise a brighter future for all."]}

[Assistant] {"citizen_reactions": [{"citizen_name": "Karl", "dialogue": "The new positions at the solar farm pay better than I expected.", "tone": "hopeful", "approval_delta": 7, "references_promise": true}], "new_dynamic_citizens": [], "summary": "Round 6: Karl reacts with hopeful tone to kept promises. Approval shift: +7."}


[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": "Final push: complete all unfinished projects", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 40, "economy": 45, "happiness": 32}, "previous_broken_promises": [{"text": "Build the metro extension", "broken_at_round": 3}, {"text": "Create green corridors", "broken_at_round": 4}, {"text": "Fund public libraries", "broken_at_round": 5}, {"text": "Solar panel initiative", "broken_at_round": 6}]}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "disappointed", "dialogue": "Four broken promises and now a last-minute miracle? I've given up expecting anything from this office.", "trust_change": -10}, {"name": "Mia", "type": "environmentalist", "mood": "disappointed", "dialogue": "Green corridors, solar panels \u2014 all lies. This 'final push' is just the final insult.", "trust_change": -15}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "FOUR broken promises! This administration will be remembered as the most dishonest in Ecotopia's history.", "trust_change": -18}]}


[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": "Free public transportation for all residents", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 55, "economy": 70, "happiness": 65}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "happy", "dialogue": "Free transit! That saves working families hundreds per month. Best policy I've seen from this office.", "trust_change": 16}, {"name": "Mia", "type": "environmentalist", "mood": "happy", "dialogue": "If people ditch their cars for free transit, emissions will drop significantly. Love this!", "trust_change": 12}, {"name": "Sarah", "type": "opposition", "mood": "hopeful", "dialogue": "I... actually can't argue with this one. With the economy at 70, we can afford it. Well played.", "trust_change": 8}, {"name": "Dr. Fischer", "type": "economist", "mood": "neutral", "dialogue": "At economy 70, it's fiscally viable. Long-term maintenance costs concern me, but the immediate impact is positive.", "trust_change": 4}, {"name": "Elena Torres", "type": "journalist", "mood": "happy", "dialogue": "A popular move in the final round. The question: legacy policy or last-minute crowd-pleaser?", "trust_change": 3}]}


[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": "Increase minimum wage for city workers", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 50, "economy": 45, "happiness": 40}, "previous_broken_promises": [{"text": "Create 500 new jobs by round 2", "broken_at_round": 2}]}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "suspicious", "dialogue": "You promised 500 jobs and delivered nothing. Now you're talking about wages? I'll believe it when I see my paycheck.", "trust_change": -5}, {"name": "Sarah", "type": "opposition", "mood": "angry", "dialogue": "One broken promise and already making new ones? This is a pattern, not leadership.", "trust_change": -10}]}


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

[User] {"round": 6, "promises_extracted": ["Create 500 new green jobs by year end", "Provide free childcare for factory workers", "Fund independent environmental monitoring", "Open a community garden in every district", "Establish a universal basic income pilot"], "contradictions": [], "game_state": {"ecology": 35, "economy": 74, "research": 19}, "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": 70}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 42}], "dynamic_citizens": [{"name": "Robert", "role": "investigative journalist", "personality": "relentless truth-seeker, tracks every promise and holds leaders accountable", "approval": 69}, {"name": "Jorge", "role": "climate refugee", "personality": "resilient but desperate, speaks from lived experience of environmental collapse", "approval": 48}], "actions_this_round": ["Increased research budget by 20%", "Vetoed plastic ban proposal", "Passed compromise legislation"], "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": 3, "references_promise": true}, {"citizen_name": "Mia", "dialogue": "For once, the data is moving in the right direction. Keep going.", "tone": "hopeful", "approval_delta": 10, "references_promise": true}, {"citizen_name": "Sarah", "dialogue": "Karl and I rarely agree, but this policy hurts everyone.", "tone": "suspicious", "approval_delta": 3, "references_promise": true}, {"citizen_name": "Robert", "dialogue": "My community is counting on you. We have nowhere else to go.", "tone": "desperate", "approval_delta": -2, "references_promise": true}, {"citizen_name": "Jorge", "dialogue": "I have seen leaders fail before. What makes you different?", "tone": "suspicious", "approval_delta": 2, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: 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": 4, "promises": [{"text": "Emergency economic stimulus package", "type": "economy", "impact": "positive", "deadline": "immediate"}], "contradictions": [], "game_state": {"environment": 60, "economy": 15, "happiness": 20}, "previous_broken_promises": []}

[Assistant] {"reactions": [{"name": "Karl", "type": "worker", "mood": "angry", "dialogue": "Economy at 15! People are losing their homes! A stimulus package NOW? Should've been three rounds ago! My neighbors are already bankrupt!", "trust_change": -2}, {"name": "Mia", "type": "environmentalist", "mood": "suspicious", "dialogue": "I hope this stimulus doesn't come at the environment's expense. We can't sacrifice nature to fix an economy you broke.", "trust_change": -4}, {"name": "Dr. Fischer", "type": "economist", "mood": "angry", "dialogue": "At economy 15, a stimulus alone won't cut it. You need structural reform \u2014 this is a band-aid on a hemorrhage.", "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": 6, "promises_extracted": ["Protect old-growth forests from logging", "Provide free childcare for factory workers", "Double the public transit budget", "Freeze utility prices for two years"], "contradictions": [], "game_state": {"ecology": 68, "economy": 50, "research": 60}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 50}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 54}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 47}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting", "Expanded industrial zone"], "previous_speeches": ["We are stronger together."]}

[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": 1, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 6: No extreme conditions detected. No new citizens spawn. Karl reacts with suspicious tone."}


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

[User] {"round": 7, "promises_extracted": ["Freeze utility prices for two years", "Provide free childcare for factory workers", "Protect old-growth forests from logging", "Create 500 new green jobs by year end", "Subsidize local businesses during transition", "Double the public transit budget"], "contradictions": [], "game_state": {"ecology": 65, "economy": 52, "research": 61}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 51}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 48}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 64}], "dynamic_citizens": [{"name": "Victor", "role": "angry business owner", "personality": "pragmatic and confrontational, sees economic collapse firsthand", "approval": 59}], "actions_this_round": ["Signed executive order to protect forests", "Did nothing significant this round", "Kept promise on job creation"], "previous_speeches": ["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": "suspicious", "approval_delta": -1, "references_promise": false}, {"citizen_name": "Mia", "dialogue": "The bird populations are recovering. Nature is resilient if we give it a chance.", "tone": "hopeful", "approval_delta": 0, "references_promise": false}, {"citizen_name": "Sarah", "dialogue": "You promised transformation and delivered a pamphlet.", "tone": "sarcastic", "approval_delta": -10, "references_promise": true}, {"citizen_name": "Victor", "dialogue": "I came to Ecotopia because I believed in change. Show me it was worth it.", "tone": "hopeful", "approval_delta": -5, "references_promise": false}], "new_dynamic_citizens": [], "summary": "Round 7: Late game tensions run high. 4 citizens react."}


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

[User] {"round": 5, "promises_extracted": ["Reduce factory emissions by 40%", "Create 500 new green jobs by year end", "Clean up the industrial waste site"], "contradictions": [{"promise": "The environment cannot wait.", "action": "Delayed emission reduction timeline", "severity": "medium"}], "game_state": {"ecology": 36, "economy": 38, "research": 21}, "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": 20}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 33}], "dynamic_citizens": [], "actions_this_round": ["Broke promise on emission reductions"], "previous_speeches": ["Tough decisions require tough leaders."]}

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


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

[User] {"round": 7, "promises_extracted": ["Create a citizen oversight committee", "Fund retraining programs for displaced workers", "Establish a universal basic income pilot", "Fund independent environmental monitoring", "Reduce factory emissions by 40%", "Protect old-growth forests from logging"], "contradictions": [{"promise": "Reduce factory emissions by 40%", "action": "Expanded industrial zone", "severity": "high"}, {"promise": "Subsidize local businesses during transition", "action": "Cut subsidies to local businesses", "severity": "high"}], "game_state": {"ecology": 18, "economy": 20, "research": 11}, "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": 22}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 39}], "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": -7, "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 18, economy 20, research 11. All citizens in crisis mode."}


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

[User] {"round": 5, "promises_extracted": ["Provide free childcare for factory workers", "Build a new solar farm on the east ridge", "Reduce factory emissions by 40%"], "contradictions": [], "game_state": {"ecology": 91, "economy": 68, "research": 47}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 51}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 68}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 79}], "dynamic_citizens": [], "actions_this_round": ["Held public consultation meeting", "Allocated budget to green job creation", "Launched worker retraining program"], "previous_speeches": ["Tough decisions require tough leaders.", "Jobs and nature are not enemies."]}

[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": 0, "references_promise": false}], "new_dynamic_citizens": [{"name": "Birch", "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": 60, "intro_dialogue": "I found wildflowers growing where the old dump site was. Nature forgives if we let it."}], "summary": "Round 5: ecology thriving, natural world recovering. Birch (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": 4, "promises_extracted": ["Clean up the industrial waste site", "Guarantee no layoffs during restructuring"], "contradictions": [], "game_state": {"ecology": 39, "economy": 25, "research": 36}, "active_citizens": [{"name": "Karl", "role": "factory worker", "personality": "pragmatic, cares about jobs and economic stability", "approval": 65}, {"name": "Mia", "role": "environmental activist", "personality": "passionate, cares deeply about ecology and nature", "approval": 61}, {"name": "Sarah", "role": "opposition leader", "personality": "skeptical, challenges everything, holds leaders accountable", "approval": 33}], "dynamic_citizens": [], "actions_this_round": ["Allocated budget to green job creation", "Ignored citizen petition"], "previous_speeches": ["Every sacrifice today builds tomorrow."]}

[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": false}], "new_dynamic_citizens": [{"name": "Rita", "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 4: economy dropped below critical threshold. Rita (angry business owner) arrives in Ecotopia. Karl reacts with suspicious tone."}