What would it look like to ask Gemini to visualize a day of our Media Trends Reports as a map? In theory, reading through a set of textual reports, identifying geographic mentions and putting them on a map should be a trivial task, but it turns out that AI particularly struggles with producing accurate maps. Here we explore two approaches: relying on Gemini itself to map the locations, which produces beautiful but highly inaccurate maps littered with errors, or asking Gemini to produce a JSONL geocoded database of points, which is reasonably accurate but far from comprehensive and asking it to write Python code to create the map, which produces a geographically accurate, but visually uninspiring map. Finally, we asked Gemini to create an interactive clickable HTML map based on the Leaflet.js mapping library: this time it came through in spades. In the end, we see that AI models still struggle to create map images or to use mapping libraries to create visually compelling static images, but they shine when asked to code up an interactive clickable map. No data was used to train or tune any model and only our own Media Trends Reports PDFs were used, not the original transcripts.
We start by taking the entire set of Media Trends reports from yesterday and combining them into a single PDF that strips their infographic title pages to minimize their input token cost. We'll use this combined PDF for all of the examples below.
time pdfunite ./CACHE/*-notitle.pdf 20260801.COMBINED.pdf pdfinfo 20260101-20260712TODAYSTRENDSONCAPITOLHILL.pdf
Let's start by asking Gemini to turn this into a map:
You are an expert global news analyst. Attached are a set of deep analysis reports for a selection of global television news channels that deeply analyze their coverage for 8/1/2026. Make me a map of all of the stories, themes, trends, etc found across all of these reports.
Let's use Nano Banana 2 through Gemini's consumer app. Here we can see the standard "AI-generated map" problems, from illegible text to locations in the very wrong place. Given that the input file far exceeds Nano Banana 2's max input tokens, it is unclear how Gemini managed the handoff.
What if we use Gemini Flash 3.6 and ask it to geocode all of the reports and make a JSONL file containing a mappable list of developments:
You are an expert global news analyst. Attached are a set of deep analysis reports for a selection of global television news channels that deeply analyze their coverage for 8/1/2026. Go through all of the reports and output a list of mappable JSONNL records with fields LOCATION, CHANNEL, LAT, LONG, TITLE, DESC" that I can use to map everything in the reports. Be exhaustive. Capture EVERYTHING.
While far from exhaustive, Gemini does capture at least some of the major stories:
{"LOCATION": "Kyiv, Ukraine", "CHANNEL": "1TV", "LAT": 50.4501, "LONG": 30.5234, "TITLE": "Russian Precision Strikes on Ukrainian Defense Plants", "DESC": "Russian forces conducted massive strikes using Zircon and Iskander missiles targeting Radioizmeritel and Burevestnik plants in Kyiv."}
{"LOCATION": "Novorossiysk, Russia", "CHANNEL": "1TV", "LAT": 44.7239, "LONG": 37.7686, "TITLE": "Sinking of Civilian Container Ship Janina", "DESC": "Ukrainian naval drones sank the Russian civilian container ship Janina 130 miles off Novorossiysk, framed by Rosatom as piracy."}
{"LOCATION": "Kyzyl, Tuva, Russia", "CHANNEL": "1TV", "LAT": 51.7197, "LONG": 94.4378, "TITLE": "PM Mishustin Promotes Industrial Sovereignty", "DESC": "Prime Minister Mikhail Mishustin visited Tuva to highlight technological sovereignty, local MRI manufacturing, and construction industries."}
{"LOCATION": "Ceuta, Spain", "CHANNEL": "1TV", "LAT": 35.8893, "LONG": -5.3198, "TITLE": "Coverage of European Border Migration Crisis", "DESC": "Russian state media highlighted border tension and EU fracturing during the migration influx into Ceuta."}
{"LOCATION": "Dakhla, Western Sahara", "CHANNEL": "ALMAGHRIBIA", "LAT": 23.6848, "LONG": -15.9579, "TITLE": "Announcement of Donald Trump Expressway", "DESC": "Morocco announced a 1,055km highway connecting Tiznit to Dakhla named after Donald Trump following U.S. sovereignty recognition."}
{"LOCATION": "Laayoune, Western Sahara", "CHANNEL": "ALMAGHRIBIA", "LAT": 27.15, "LONG": -13.2, "TITLE": "Military Oath Ceremony 'Promotion Al-Ayoun'", "DESC": "King Mohammed VI presided over officer graduations named Promotion Al-Ayoun to reinforce territorial defense."}
{"LOCATION": "Agadir, Morocco", "CHANNEL": "ALMAGHRIBIA", "LAT": 30.4278, "LONG": -9.5981, "TITLE": "Inauguration of Agadir University Hospital", "DESC": "State showcased healthcare expansion and universal health insurance progress via major projects like Agadir University Hospital."}
{"LOCATION": "Ceuta, Spain", "CHANNEL": "BBCNEWS", "LAT": 35.8893, "LONG": -5.3198, "TITLE": "Schengen Suspensions Follow Mass Ceuta Incursion", "DESC": "Tens of thousands of migrants crossed into Ceuta, leading Italy to suspend Schengen arrangements with Spain."}
{"LOCATION": "Kyiv, Ukraine", "CHANNEL": "BBCNEWS", "LAT": 50.4501, "LONG": 30.5234, "TITLE": "Russian Ballistic Barrage Exposes Interceptor Shortage", "DESC": "A 27-missile Russian barrage struck Kyiv as Ukrainian air defenses faced critical interceptor shortages."}
{"LOCATION": "Greater Manchester, United Kingdom", "CHANNEL": "BBCNEWS", "LAT": 53.4808, "LONG": -2.2426, "TITLE": "Bev Craig Wins Mayoral Election", "DESC": "Labour's Bev Craig won the Greater Manchester mayoral election, reinforcing Labour's regional governance foothold."}
{"LOCATION": "Tehran, Iran", "CHANNEL": "BBCPERSIAN", "LAT": 35.6892, "LONG": 51.389, "TITLE": "Imminent US-Israeli Offensive on Iranian Infrastructure", "DESC": "Reports indicate US plans for wide-scale air strikes on Iranian power plants and oil refineries."}
{"LOCATION": "Strait of Hormuz", "CHANNEL": "BBCPERSIAN", "LAT": 26.5667, "LONG": 56.25, "TITLE": "Asymmetric Maritime Strikes and Blockade Risk", "DESC": "Iranian forces targeted regional oil tankers and drone strikes in the Strait of Hormuz, driving up global oil prices."}
{"LOCATION": "Brest, Belarus", "CHANNEL": "BELARUSTV", "LAT": 52.0976, "LONG": 23.734, "TITLE": "National Harvest Milestone Achieved", "DESC": "Brest region led national agricultural milestones as Belarus surpassed 4.25 million tons of grain harvested."}
{"LOCATION": "Rossony, Belarus", "CHANNEL": "BELARUSTV", "LAT": 55.9056, "LONG": 28.8103, "TITLE": "Police Action Against 'Rainbow Family' Gathering", "DESC": "State authorities suppressed an illegal gathering of 300 people in Rossony forest, framing it as an unsafe sect."}
{"LOCATION": "Boumerdes, Algeria", "CHANNEL": "CANALALGERIE", "LAT": 36.7564, "LONG": 3.4728, "TITLE": "Tragic Bus Accident Mobilizes State Response", "DESC": "A major bus crash on National Road 24 killed 27 and injured 39, drawing high-level government condolence visits."}
{"LOCATION": "French Guiana", "CHANNEL": "CANALALGERIE", "LAT": 3.9339, "LONG": -53.1258, "TITLE": "Documentary Focus on Colonial Deportations", "DESC": "State television broadcasted documentaries on 19th-century French deportations of Algerians to penal colonies in French Guiana."}
{"LOCATION": "Atotonilco el Alto, Mexico", "CHANNEL": "CANALCATORCE", "LAT": 20.5502, "LONG": -102.5089, "TITLE": "Capture of CJNG Leader 'R1'", "DESC": "Federal forces captured Ramón Ángel N ('R1'), intellectual author behind the assassination of Uruapan's mayor."}
{"LOCATION": "Mexico City, Mexico", "CHANNEL": "CANALCATORCE", "LAT": 19.3326, "LONG": -99.1871, "TITLE": "UNAM Admissions Exam Scandal and Resignation", "DESC": "UNAM Secretary General resigned following AI-proctored virtual exam irregularities affecting 22,000 applicants."}
{"LOCATION": "Olds, Canada", "CHANNEL": "CBCNEWS", "LAT": 51.7927, "LONG": -114.1066, "TITLE": "Local Resistance to Hyperscale Data Center", "DESC": "Community pushback intensified against a proposed mega data center in Olds due to energy and water security concerns."}
{"LOCATION": "St. Mary's Bay, Canada", "CHANNEL": "CBCNEWS", "LAT": 44.4167, "LONG": -66.1167, "TITLE": "Indigenous Lobster Fishery Dispute Escalates", "DESC": "Tensions and violence persisted in Nova Scotia over Mi'kmaw treaty fishers asserting moderate livelihood rights."}
{"LOCATION": "Huangyan Island, South China Sea", "CHANNEL": "CCTV1", "LAT": 15.15, "LONG": 117.7667, "TITLE": "PLA Joint Combat Patrols at Scarborough Shoal", "DESC": "China launched sea-air combat patrols with bombers and destroyers around Huangyan Island to counter Philippine baseline claims."}
{"LOCATION": "Changjiang, China", "CHANNEL": "CCTV1", "LAT": 19.431, "LONG": 108.9058, "TITLE": "Hualong One Nuclear Unit Connected to Grid", "DESC": "Unit 3 of Changjiang Nuclear Power Plant successfully connected to the grid in Hainan, generating 18 billion kWh annually."}
{"LOCATION": "Jiangsu, China", "CHANNEL": "CCTV13", "LAT": 32.0617, "LONG": 118.763, "TITLE": "Legal Formalization of 12345 Public Hotline", "DESC": "Jiangsu enacted the first provincial regulation for the 12345 hotline to enforce active, cross-departmental grievance resolution."}
{"LOCATION": "Borno State, Nigeria", "CHANNEL": "CHANNELSTV", "LAT": 11.8333, "LONG": 13.15, "TITLE": "Boko Haram Commander Abu Salim Al-Barnawi Killed", "DESC": "Nigerian Defense Headquarters confirmed the elimination of Boko Haram's top propaganda chief Abu Salim Al-Barnawi."}
{"LOCATION": "Otukpo, Nigeria", "CHANNEL": "CHANNELSTV", "LAT": 7.1936, "LONG": 8.1328, "TITLE": "Bandit Attack Kills 15 Residents", "DESC": "Bandits launched a fatal assault in Otukpo, Benue State, prompting troop deployments and zero-ransom reiterations."}
{"LOCATION": "Hukou, Taiwan", "CHANNEL": "CTV", "LAT": 24.9039, "LONG": 121.0425, "TITLE": "Explosion at Huli Precision Chemical Factory", "DESC": "A major chemical explosion in Hukou sent toxic black rain and smoke across the area, raising zoning safety concerns."}
{"LOCATION": "Nantou, Taiwan", "CHANNEL": "CTV", "LAT": 23.9167, "LONG": 120.6833, "TITLE": "School Sexual Abuse Cover-Up Scandal", "DESC": "A 30-year cover-up involving a school principal and seven faculty members was exposed in Nantou, causing public outcry."}
{"LOCATION": "Volgograd, Russia", "CHANNEL": "CURRENTTIME", "LAT": 48.708, "LONG": 44.5133, "TITLE": "Ukrainian Strikes Target Wildberries Logistics Hubs", "DESC": "Ukrainian forces hit Wildberries commercial e-commerce warehouses in Volgograd, causing massive fires and supply chain disruption."}
{"LOCATION": "Bhogapuram, India", "CHANNEL": "DDNEWS", "LAT": 18.0267, "LONG": 83.4883, "TITLE": "Inauguration of Bhogapuram International Airport", "DESC": "PM Modi inaugurated the Alluri Sitarama Raju International Airport in Bhogapuram, built at 5,640 crore rupees."}
{"LOCATION": "Visakhapatnam, India", "CHANNEL": "DDNEWS", "LAT": 17.6868, "LONG": 83.2185, "TITLE": "Foundation Stone Laid for ASIP Semiconductor Plant", "DESC": "The foundation stone was laid for a 460-crore semiconductor chip manufacturing facility in Visakhapatnam."}
{"LOCATION": "Tingbjerg, Denmark", "CHANNEL": "DR1", "LAT": 55.7171, "LONG": 12.4839, "TITLE": "Independent Investigation into Police Shooting", "DESC": "Danish Independent Police Complaints Authority launched an investigation following a police shooting of a 22-year-old man."}
{"LOCATION": "Narva, Estonia", "CHANNEL": "ERR", "LAT": 59.3797, "LONG": 28.1994, "TITLE": "Political Obstructionism in Narva City Council", "DESC": "A new municipal coalition faced a four-hour obstructionist session by the opposition during council appointments."}
{"LOCATION": "Kuressaare, Estonia", "CHANNEL": "ERR", "LAT": 58.2528, "LONG": 22.4847, "TITLE": "Water Supply Contamination Incident Resolved", "DESC": "Kuressaare resolved an E. coli outbreak caused by UV filter failure after intensive chlorination and testing."}
{"LOCATION": "Lviv, Ukraine", "CHANNEL": "ESPRESO", "LAT": 49.8397, "LONG": 24.0297, "TITLE": "Public Protests Over Defense Minister Dismissal", "DESC": "Thousands gathered for 'Cardboard Maidan' protests demanding the reinstatement of former Defense Minister Mikhail Fedorov."}
{"LOCATION": "Paternierke, Latvia", "CHANNEL": "ETVPLUS", "LAT": 55.8286, "LONG": 27.9719, "TITLE": "Latvian Border Checkpoint System Failure", "DESC": "Latvia temporarily closed the Paternierke border checkpoint with Belarus due to an information system failure."}
{"LOCATION": "Var region, France", "CHANNEL": "FRANCE24", "LAT": 43.437, "LONG": 6.2486, "TITLE": "Catastrophic Wildfires Force Tourist Evacuations", "DESC": "Out of control wildfires in the Var region killed firefighters and forced the evacuation of thousands of tourists."}
{"LOCATION": "Brighton, United Kingdom", "CHANNEL": "GBN", "LAT": 50.8225, "LONG": -0.1372, "TITLE": "Armed Police Deployment at Brighton Pride", "DESC": "Security was heightened at Brighton Pride with armed police following an earlier terror event in Berlin."}
{"LOCATION": "Soranj, Pakistan", "CHANNEL": "GEONEWS", "LAT": 30.15, "LONG": 67.2, "TITLE": "Balochistan Coal Mine Disaster Kills 34", "DESC": "A methane gas explosion in a coal mine in Soranj killed 34 miners, prompting criticism of industrial safety oversight."}
{"LOCATION": "La Guaira, Venezuela", "CHANNEL": "GLOBOVISION", "LAT": 10.6012, "LONG": -66.932, "TITLE": "Controlled Demolitions Following Earthquake", "DESC": "Authorities conducted controlled demolitions of earthquake-damaged high-rises in La Guaira as reconstruction efforts continue."}
{"LOCATION": "Üsküdar, Turkey", "CHANNEL": "HALKTV", "LAT": 41.0264, "LONG": 29.0152, "TITLE": "Arrest and Removal of Mayor Sinem Dedetaş", "DESC": "Üsküdar Mayor Sinem Dedetaş was arrested and removed from office on bribery and organizational charges."}
{"LOCATION": "Paks, Hungary", "CHANNEL": "HIRTV", "LAT": 46.575, "LONG": 18.858, "TITLE": "Danube Low Water Level Forces Nuclear Shutdown", "DESC": "Record-low Danube water levels forced a total shutdown of the Paks Nuclear Power Plant due to cooling inability."}
{"LOCATION": "Qeshm Island, Iran", "CHANNEL": "IRINN", "LAT": 26.9583, "LONG": 56.2719, "TITLE": "Civilian Infrastructure Hit in Airstrikes", "DESC": "U.S. airstrikes destroyed civilian residential homes in Qeshm, triggering Iranian military retaliation against U.S. Gulf assets."}
{"LOCATION": "Jerash, Jordan", "CHANNEL": "JORDANTV", "LAT": 32.2723, "LONG": 35.8914, "TITLE": "40th Jerash Festival Highlights Cultural Resilience", "DESC": "Jordan celebrated the Jerash Festival to project normalcy and cultural vitality amidst surrounding regional conflict."}
{"LOCATION": "Leviathan Gas Field, Israel", "CHANNEL": "KAN11", "LAT": 32.9833, "LONG": 34.25, "TITLE": "Iran Threatens Retaliatory Strike on Gas Infrastructure", "DESC": "Tehran named Israel's offshore Leviathan gas field as a primary target for counter-strikes in the event of U.S. bombing."}
{"LOCATION": "Sinuiju, North Korea", "CHANNEL": "KCTV", "LAT": 40.1006, "LONG": 124.3981, "TITLE": "Completion of Sinuiju Greenhouse General Farm", "DESC": "State media celebrated the completion of the 1,800-hectare automated Sinuiju greenhouse complex built on 2024 floodplains."}
{"LOCATION": "San Jose, United States", "CHANNEL": "KDTV", "LAT": 37.3382, "LONG": -121.8863, "TITLE": "4,500 Municipal Workers Prepare for Strike", "DESC": "City workers in San Jose prepared for strike action over wage disputes and staffing shortages affecting public services."}
{"LOCATION": "Vilnius, Lithuania", "CHANNEL": "LRT", "LAT": 54.6872, "LONG": 25.2798, "TITLE": "Municipal Waste Management Legal Crisis", "DESC": "Vilnius city administration faced a 4.5 million euro legal lawsuit and opposition inquiries over broken waste management contracts."}
{"LOCATION": "Budapest, Hungary", "CHANNEL": "M1", "LAT": 47.5072, "LONG": 19.0519, "TITLE": "Historical Retrospective on 2006 TV Headquarters Siege", "DESC": "State media broadcasted detailed analysis of the 2006 MTV siege to delegitimize pre-2010 political leadership."}
{"LOCATION": "Kali Bekasi, Indonesia", "CHANNEL": "METROTV", "LAT": 6.2349, "LONG": 106.9924, "TITLE": "Industrial Pollution Turns River Jet Black", "DESC": "Kali Bekasi water turned black with a foul odor due to suspected chemical waste dumping from Cileungsi factories."}
{"LOCATION": "Srebrenica, Bosnia and Herzegovina", "CHANNEL": "N1BOS", "LAT": 44.1069, "LONG": 19.2981, "TITLE": "Tax Evasion Investigation at Memorial Center", "DESC": "An investigation into the Srebrenica Memorial Center was framed by local leaders as political harassment and genocide denialism."}
{"LOCATION": "Novi Sad, Serbia", "CHANNEL": "N1SRP", "LAT": 45.2671, "LONG": 19.8335, "TITLE": "21-Month Anniversary of Station Canopy Collapse", "DESC": "Citizens and students held roadblocks and moments of silence to demand judicial accountability for 16 deaths in Novi Sad."}
{"LOCATION": "Surat, India", "CHANNEL": "NDTV", "LAT": 21.1702, "LONG": 72.8311, "TITLE": "Army Deployed for Monsoon Flood Rescue", "DESC": "Military units were deployed to Surat as extreme monsoon rainfall caused urban flooding and infrastructure collapses."}
{"LOCATION": "Tuva, Russia", "CHANNEL": "NTV", "LAT": 51.7, "LONG": 94.5, "TITLE": "Lithium Mining Initiative at Tastyk Deposit", "DESC": "Prime Minister Mishustin inspected the Tastyk lithium deposit to promote Russia's sovereign battery and tech industry."}
{"LOCATION": "Razmak, Pakistan", "CHANNEL": "PAKISTANTV", "LAT": 32.9, "LONG": 70.1, "TITLE": "Counter-Terrorism Operation Kills 5 Militants", "DESC": "Pakistani security forces killed five militants in Razmak, North Waziristan, during an operation where Major Hafiz Ehsan Ilahi was martyred."}
{"LOCATION": "Deir al-Balah, Palestine", "CHANNEL": "PALESTINETV", "LAT": 31.4178, "LONG": 34.3503, "TITLE": "Israeli Air Strike Destroys Hospital Pharmacy", "DESC": "An Israeli strike destroyed the pharmacy and kidney medicine warehouse at Shuhada al-Aqsa Hospital."}
{"LOCATION": "Damietta, Egypt", "CHANNEL": "PRESSTV", "LAT": 31.4167, "LONG": 31.8167, "TITLE": "Iranian Drone Strike Targets Oil Tankers", "DESC": "A drone attack targeted Egyptian oil tankers at Damietta port, extending Gulf conflict dynamics into the Mediterranean."}
{"LOCATION": "Nushki, Pakistan", "CHANNEL": "PTVNEWS", "LAT": 29.5539, "LONG": 66.0215, "TITLE": "Seven Terrorists Eliminated in Intelligence Operation", "DESC": "Pakistani forces eliminated seven militants, including a suicide bomber, in Nushki, Balochistan."}
{"LOCATION": "Moscow, Russia", "CHANNEL": "RT", "LAT": 55.7586, "LONG": 37.5808, "TITLE": "Fatal IED Explosion Outside Restaurant", "DESC": "A female courier detonated an explosive device outside a restaurant on Kudrinskaya Square, killing three and injuring 21."}
{"LOCATION": "Herat, Afghanistan", "CHANNEL": "RTANEWS", "LAT": 34.3419, "LONG": 62.2031, "TITLE": "Khaf-Herat Railway Targets 2 Million Tons Cargo", "DESC": "Afghanistan and Iran set a target to transport 2 million tons of cargo via the Khaf-Herat railway corridor this year."}
{"LOCATION": "Valpaços, Portugal", "CHANNEL": "RTPI", "LAT": 41.6067, "LONG": -7.3106, "TITLE": "Wildfire Consumes 16,000 Hectares in Northern Interior", "DESC": "The Valpaços wildfire destroyed 20 homes and 16,000 hectares of olive and almond groves, prompting calls for a state of calamity."}
{"LOCATION": "Kyiv, Ukraine", "CHANNEL": "RUSSIA1", "LAT": 50.4501, "LONG": 30.5234, "TITLE": "Massive Precision Strikes on Drone Assembly Plants", "DESC": "Russian forces conducted strikes on the Firepoint drone factory and Radioizmeritel plant in Kyiv."}
{"LOCATION": "Zaporozhye, Ukraine", "CHANNEL": "RUSSIA24", "LAT": 47.5, "LONG": 35.5, "TITLE": "Russian Forces Take Control of Lyubetskoye", "DESC": "Russian military forces captured the settlement of Lyubetskoye in Zaporozhye, clearing 500 buildings."}
{"LOCATION": "Western Attica, Greece", "CHANNEL": "SKAITV", "LAT": 38.0833, "LONG": 23.2333, "TITLE": "Mega-Fire Forces Mass Coast Guard Evacuations", "DESC": "Category 5 wildfires descended into Porto Germeno and Agia Paraskevi, forcing sea rescues for trapped beachgoers."}
{"LOCATION": "Bara, Sudan", "CHANNEL": "SUDAN", "LAT": 13.7, "LONG": 30.3667, "TITLE": "SAF Forces Liberate Key Kordofan Transit Hub", "DESC": "Sudanese Armed Forces liberated Bara and Jubrat al-Sheikh, securing the Export Road and prompting RSF surrenders."}
{"LOCATION": "Ain Manin, Syria", "CHANNEL": "SYRIANNEWS", "LAT": 33.6167, "LONG": 36.2667, "TITLE": "Protests Over Water Well Drilling Project", "DESC": "Civil unrest erupted in Ain Manin over water resource allocation, resulting in equipment damage and road blockades."}
{"LOCATION": "Quneitra, Syria", "CHANNEL": "SYRIATV", "LAT": 33.1258, "LONG": 35.8242, "TITLE": "94 Israeli Incursions Recorded in Southern Syria", "DESC": "Monitoring reports confirmed 94 Israeli border incursions and temporary checkpoint installations in Daraa and Quneitra during July."}
{"LOCATION": "Oranjestad, Aruba", "CHANNEL": "TELEARUBA", "LAT": 12.5211, "LONG": -69.9683, "TITLE": "Reopening of Air Border with Venezuela", "DESC": "Aruba reopened its air border with Venezuela on August 1 for private and non-commercial flights."}
{"LOCATION": "Brazzaville, Congo", "CHANNEL": "TELECONGO", "LAT": -4.2661, "LONG": 15.2832, "TITLE": "Resolution of 24-Year Kimbanguist Schism", "DESC": "Brazzaville Kimbanguist factions signed a reconciliation protocol under the Public Prosecutor, centralizing church leadership."}
{"LOCATION": "Nicaragua", "CHANNEL": "TELESUR", "LAT": 12.8654, "LONG": -85.2072, "TITLE": "Assembly Debates 7-Year Presidential Terms", "DESC": "Nicaragua's National Assembly debated constitutional reforms to extend presidential mandates to seven years."}
{"LOCATION": "Dulles, Virginia, United States", "CHANNEL": "TODAY'S TRENDS ON CAPITOL HILL", "LAT": 38.9531, "LONG": -77.4565, "TITLE": "Dulles Airport Announces $5M Sq Ft Renovation", "DESC": "A major private-airline funded renovation of Dulles International Airport was announced to modernize terminal infrastructure."}
{"LOCATION": "Afyonkarahisar, Turkey", "CHANNEL": "TRTHABER", "LAT": 38.75, "LONG": 30.55, "TITLE": "Capture of Final 2016 Coup Attempt Fugitive", "DESC": "Police captured Burkay Karatepe, the last fugitive from the 2016 Erdogan assassination squad, hiding in a cell house."}
{"LOCATION": "Gaza Strip", "CHANNEL": "TRTWORLD", "LAT": 31.3547, "LONG": 34.3088, "TITLE": "Trump Gaza Peace Roadmap Faces Israeli Resistance", "DESC": "The White House released details of a 20-point Gaza peace framework, which was publicly rejected by Israeli Security Minister Ben-Gvir."}
{"LOCATION": "Kumamoto, Japan", "CHANNEL": "TTV", "LAT": 32.8032, "LONG": 130.7079, "TITLE": "Earthquake Death Toll Rises Amid Extreme Heatwave", "DESC": "Death toll reached 36 following the July 28 Kumamoto earthquake, with rescue efforts hindered by 40°C heat."}
{"LOCATION": "Tarajal Beach, Ceuta, Spain", "CHANNEL": "TV3", "LAT": 35.8893, "LONG": -5.3198, "TITLE": "Spanish Army Deploys Submerged Maritime Barrier", "DESC": "Spanish military installed a 500-meter underwater barrier at Tarajal beach to halt mass swimming entries from Morocco."}
{"LOCATION": "Kaduna, Nigeria", "CHANNEL": "TVCNEWS", "LAT": 10.5167, "LONG": 7.4333, "TITLE": "Deployment of 1,000 Trained Forest Guards", "DESC": "Kaduna State deployed 1,000 forest guards to reclaim ungoverned rural spaces from banditry and Boko Haram cells."}
{"LOCATION": "Tarnawa Kolonia, Poland", "CHANNEL": "TVPINFO", "LAT": 50.8833, "LONG": 23.5833, "TITLE": "Russian CH-101 Cruise Missile Crashes in Poland", "DESC": "Polish prosecutors confirmed a Russian CH-101 cruise missile, manufactured in Q2 2026, crashed in Lublin region."}
{"LOCATION": "Cernavodă, Romania", "CHANNEL": "TVRI", "LAT": 44.3333, "LONG": 28.0333, "TITLE": "Nuclear Plant Emergency Alert Over Low Danube Flow", "DESC": "Romania declared an emergency alert as low Danube levels threatened cooling for Cernavodă Nuclear Power Plant."}
{"LOCATION": "North Natuna Sea, Indonesia", "CHANNEL": "TVRIN", "LAT": 3.9, "LONG": 108.25, "TITLE": "Indonesian Navy Conducts Force-Down Operations", "DESC": "Indonesian naval vessels KAL Bungaran conducted interception drills against foreign maritime violators in Natuna."}
{"LOCATION": "Riyadh, Saudi Arabia", "CHANNEL": "YEMENTV", "LAT": 24.7136, "LONG": 46.6753, "TITLE": "43-Nation Red Sea Maritime Alliance Summit", "DESC": "Saudi Arabia hosted a 43-nation summit in Riyadh to finalize the charter for a Red Sea maritime defense alliance."}
{"LOCATION": "Kyiv, Ukraine", "CHANNEL": "ZVEZDA", "LAT": 50.4501, "LONG": 30.5234, "TITLE": "Russian Strikes Target TETs-6 and Missile Factories", "DESC": "Russian forces launched coordinated ballistic missile strikes against Kyiv's TETs-6 power plant and Ukroboronprom facilities."}
Let's provide the list above to Nano Banana Pro and ask it just to map these points, rather than having to process the entire combined PDF:
Create a beautiful publication-ready annotated geographic map suitable for a geopolitical magazine cover that maps all of the stories below and includes their titles beside each point.
Unfortunately, since we asked for a "magazine cover" map, it produced a horizontal format that is difficult to discern. Let's try again and ask for a horizonal spread:
Create a beautiful publication-ready annotated geographic map suitable for a horizontal geopolitical magazine spread that maps all of the stories below and includes their titles beside each point.
What if we try using the Gemini consumer app instead of accessing the APIs directly? Same prompt, same JSONL list as input:
Let's try a different approach and ask Gemini 3.6 to write code to map the JSON accurately, trading correctness for visual beauty. Gemini runs agentically, writing its own Python code and iteratively refining the map until it arrives at the following:
Create a beautiful publication-ready annotated geographic map suitable for a geopolitical magazine cover that maps all of the stories below and includes their titles beside each point.
Can we refine it a bit?
Make it beautiful publication-ready suitable for a horizontal geopolitical magazine spread.
Finally, let's ask Gemini Deep Research to turn the set of reports into a map. Unfortunately, while examining the data geographically, Gemini never actually produces the requested map visualization:
Finally, instead of asking Gemini to render the map as a static image, which seems to be beyond its image rendering capabilities and taxing its code-writing abilities for crafting a compelling static image, what if we instead task agentic Gemini's code writing abilities to write an interactive HTML map using the Leaftlet.js library? This time Gemini 3.6 Flash comes through it spades:
Give me a leaftlet.js map that displays this dataset. Embed the points in the HTML so the page loads self-contained.
You can see the final map below:





