Agentic OSINT Is Here ⭐
Investigate the world with a Discovery Engine
Hello everyone. I’m writing back to back articles this week as this is a week of rapid development. I am building out Agentic OSINT analysts. The goal is not to automate OSINT. The goal is to massively multiply my own abilities. I’m giving myself some powerful teammates. I’m teaching them what I know. I tried to teach you! I did teach them!
Today’s article is a show and tell! This is a demonstration of the power of what happens when you combine World AI with Agentic OSINT.
I do not do web search. I am tapped into the motion of the internet itself. I have written about this before. If you want access, it is available.
In fact, you know what? You should check out my company website. It was redesigned today!
And if you want to learn how to do things like I am about to demonstrate, then you should attend my training. These are currently priced low. I do not want to do them forever. The price is not going to stay low. If you would like to learn from me, now is the time. Enroll today.
Ok, enough talk. I want to demonstrate what I have built today.
World AI x Agentic OSINT
Verdant Intelligence has two World AI APIs:
Verdant Eye: High Level World Happenings
GrooveSeeker: Street Level Event Intelligence
In this demonstration, I am using Verdant Eye. Here we go!
osint = ChatOSINT()
agent = Agent(osint)I’ve got two classes.
osint: the OSINT toolkit that the Agents use. It pulls data from Verdant Eye’s Natural Language Endpoint.
agent: the OSINT AI agent that does things for me.
response = await agent.chat("What happened in the last hour?")
print(response)I fire off my first prompt. What happened in the last hour? I want to know what has changed on Planet Earth, not in some dusty document store lol.
Would you like me to start the investigation?
I then chat with it, “Yes.”
From there, it kicks off an investigation. I asked it what happened in the last hour while being halfway through an hour, so there is about equal data between two different hours.
The outputs don’t really matter. Data is being collected and enriched in the background. The images are just for me to quickly keep an eye on things, but the chatter timelines matter more when you are looking across larger spans of time or across a topic.
The OSINT class handles clustering and sequences. Beautiful.
It also captures data about the source landscape and then shows me a quick image.
This is useful for understanding where the data comes from.
After the data is collected and processed, a COMPLETE answer is given, and it includes full transparency on sources.
And if I stopped right there, it would already be a killer OSINT demo, but we are only warming up. We haven’t even started with any of the Agentic stuff yet. :) Buckle up.
All of the data artifacts can be explored agentically. I asked, “Show me the data” and I can see the full timeline.
I then notice that there is some serious stuff in the data about ICE, Iran, some vehicle crashes, a bunch of events. So, I become curious. Curiosity and OSINT work go well together. So I ask my agent a question.
response = await agent.chat("Show me the data related to Iran")
print(response)And it says:
2026-07-29 02:49:54 - Iran launches ‘surprise attack’ on US base – CENTCOM - Pravda EN
2026-07-29 02:49:54 - ‼️The IRGC announced an attack on three tankers in the Strait of Hormuz and a strike on a US airbase in Jordan - Pravda ENI then say:
response = await agent.chat("show me the story: Iran launches ‘surprise attack’")
print(response)To which it responds:
Iran launches ‘surprise attack’ on US base – CENTCOM - Pravda EN URL: https://news-pravda.com/usa/2026/07/28/2477082.html Summary: On Tuesday at approximately 5:45 PM Eastern Time, Iran launched multiple ballistic missiles targeting US forces in the Middle East, described by US Central Command (CENTCOM) as an attempted “surprise attack.” The missiles were fired by the Islamic Revolutionary Guard Corps (IRGC) and were reportedly aimed at an American base in Jordan, although CENTCOM did not specify the location. All incoming missiles were intercepted, and US forces remained on high alert. This incident occurred shortly after a closed-door meeting between President Donald Trump and Israeli Prime Minister Benjamin Netanyahu, where Iran was a key topic of discussion. The missile attack marked Iran’s first reported strike on a US facility since Trump suspended American military action against Iran to facilitate diplomatic negotiations. The discussions reportedly involved reopening the Strait of Hormuz and reviving talks on Iran’s nuclear program. Iran has denied direct negotiations with the US, stating it is only communicating with Oman regarding the waterway. Images: data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== https://news-pravda.com/img/20260728/5dfe391fe9bbc616951dd3d909343913.jpg Text: Iran launches ‘surprise attack’ on US base – CENTCOM Multiple ballistic missiles targeting American forces in Jordan were reportedly intercepted Iran has launched multiple ballistic missiles at US forces in the Middle East in what Washington described as an attempted “surprise attack,” according to US Central Command. The missiles were fired by the Islamic Revolutionary Guard Corps (IRGC) at around 5:45pm Eastern Time on Tuesday, CENTCOM said. “At 5:45pm ET today, Islamic Revolutionary Guard Corps forces launched multiple ballistic missiles from Iran in an attempted surprise attack on US forces based in the Middle East,” the command stated. All the incoming missiles had been successfully intercepted, CENTCOM claimed, adding that American forces remained “vigilant and at a high state of readiness.” A senior US official told Axios that the missiles were targeting an American base in Jordan. The command did not identify the targeted facility or mention Jordan, saying only that the missiles had been aimed at US forces “based in the Middle East.” The attack came hours after Trump held a closed-door meeting with Israeli Prime Minister Benjamin Netanyahu at the White House, with Iran reportedly among the main subjects discussed. The talks lasted around 90 minutes and were described by the White House as “positive and productive,” although few details were released. The incident marked Iran’s first reported ballistic missile attack on a US facility since President Donald Trump suspended American strikes against the Islamic Republic on Friday. Trump said on Monday that Washington and Tehran were engaged in “very friendly” negotiations, but warned that the US could return to “strong military action” if diplomacy failed. He confirmed that he had suspended the bombing to allow talks to proceed, while threatening to “beat the hell out of” Iran if no agreement was reached. The discussions reportedly center on reopening the Strait of Hormuz and reviving negotiations over Iran’s nuclear program. Tehran has denied holding direct talks with Washington, saying it is communicating only with Oman about arrangements for the key waterway. The pause followed almost two weeks of renewed US strikes and Iranian retaliation after the collapse of a 14-point memorandum that had established a temporary ceasefire, lifted the American naval blockade and provided for the reopening of the strait while a longer-term agreement was negotiated. DETAILS TO FOLLOW
Amazing. I could end the demo here, and it would be enough too, but let’s build incredible technologies instead. So, I say:
response = await agent.chat("Build the Story Graph related to Iran")
print(response)And it does. It builds thematic story graphs about whatever I want! This is where stuff gets really cool. I can explore anything, now, and I can extend my agents to get smarter and smarter.
I use my handy OSINT class draw_graph function to look closer. Nice. I can build mini-KGs about anything I want to know about. This is fresh data. This story graph was constructed from information from different websites, not just one story. This literally maps out who knows what. It connects the dots of reality. Incredible.
So I keep going!
I taught it how to do this well. Domain knowledge is very important. I teach how to do these things on this blog, too.
That’s cool, but I want to know HOW and WHY the dots connect. So I ask my agent:
response = await agent.chat("From the Story Graph tell me about Iran")And it tells me!
[ { “source”: “Iran”, “target”: “US”, “reasoning”: “Iran launched a surprise attack on US forces.”, “support_text”: “Iran did this for the first time, launching a surprise attack with no ongoing pretext.” }, { “source”: “Iran”, “target”: “US”, “reasoning”: “Iran may think they are still at war with the US.”, “support_text”: “The only reason is that they may think they are still at war and reject all forms of negotiation.” }, { “source”: “Iran”, “target”: “US”, “reasoning”: “If Iran continuously attacks, it may lead to tit-for-tat attacks with the US.”, “support_text”: “If Iran continuously attacks in the next hours, then the tit-for-tat attacks will return.” }, { “source”: “Iran”, “target”: “US”, “reasoning”: “Iran launched multiple ballistic missiles targeting US forces.”, “support_text”: “Iran launches ‘surprise attack’ on US base – CENTCOM Multiple ballistic missiles targeting American forces in Jordan were reportedly intercepted.” }, { “source”: “Iran”, “target”: “Islamic Revolutionary Guard Corps”, “reasoning”: “The missiles were fired by the Islamic Revolutionary Guard Corps.”, “support_text”: “The missiles were fired by the Islamic Revolutionary Guard Corps (IRGC) at around 5:45pm Eastern Time on Tuesday, CENTCOM said.” }, { “source”: “Iran”, “target”: “Islamic Revolutionary Guard Corps”, “reasoning”: “IRGC forces launched missiles from Iran.”, “support_text”: “Islamic Revolutionary Guard Corps forces launched multiple ballistic missiles from Iran in an attempted surprise attack on US forces based in the Middle East.” }, { “source”: “Iran”, “target”: “Israel”, “reasoning”: “Iran was reportedly discussed in a meeting between Trump and Netanyahu.”, “support_text”: “The attack came hours after Trump held a closed-door meeting with Israeli Prime Minister Benjamin Netanyahu at the White House, with Iran reportedly among the main subjects discussed.” }, { “source”: “Iran”, “target”: “Oman”, “reasoning”: “Tehran is communicating only with Oman about arrangements for the Strait of Hormuz.”, “support_text”: “Tehran has denied holding direct talks with Washington, saying it is communicating only with Oman about arrangements for the key waterway.” }, { “source”: “Saudi Arabia”, “target”: “Iran”, “reasoning”: “Saudi Arabia blamed Iran-backed militias for the attack on its oil infrastructure.”, “support_text”: “The Kingdom acknowledged that its oil infrastructure in Eastern Region had been targeted and blamed Iran-backed militias in Iraq.” }, { “source”: “Iran”, “target”: “US”, “reasoning”: “The attack comes amid a wider regional conflict involving Iran, Israel, and the US.”, “support_text”: “The attack comes amid the wider regional conflict involving Iran, Israel, and the US, with Iranian-aligned groups increasingly targeting US allies and energy infrastructure across the Middle East.” } ]
Very detailed! Perfect! But it gets better! At this point, I am so impressed I can barely think straight. I have fallen off the map. I am firmly in the future now. Let’s see what else we can do?
response = await agent.chat("Build the Story Graph related to immigrants, immigration, or ICE")
print(response)Important search! What’s up with ICE? Everyone wants to know!
Utterly incredible. I can create story graphs about anything I am curious about. Let’s investigate!
response = await agent.chat("From the Story Graph tell me about ICE")It answers!
[ { “source”: “9th Circuit Court of Appeals”, “target”: “ICE”, “reasoning”: “The 9th Circuit upheld a decision against ICE agents.”, “support_text”: “A panel of the 9th Circuit Court of Appeals upheld that decision.” }, { “source”: “U.S. Supreme Court”, “target”: “ICE”, “reasoning”: “The U.S. Supreme Court granted a stay to ICE’s temporary restraining order.”, “support_text”: “However, the U.S. Supreme Court ruled 6-3 to grant a stay to the temporary restraining order, allowing ICE agents to continue with the street raids that had largely been conducted based on perceived race or ethnicity.” }, { “source”: “ICE”, “target”: “Oregon State Police”, “reasoning”: “ICE is involved in the investigation along with Oregon State Police.”, “support_text”: “Jason Chudy, a spokesperson for ICE, confirmed that the Department of Homeland Security is involved in investigating the incident. The FBI and Oregon State Police are also part of the investigation.” } ]
That is what the news reported in the last hour. I notice the police, so I ask about them as well.
response = await agent.chat("From the Story Graph tell me about Oregon State Police")[ { “source”: “Oregon State Police”, “target”: “FBI”, “reasoning”: “Oregon State Police and the FBI opened an investigation into an incident involving federal immigration officers.”, “support_text”: “And most recently, Oregon State Police and the FBI opened an investigation into a July 17 incident in Woodburn in which three people allegedly impersonated federal immigration officers and detained and assaulted an individual, resulting in the person seeking medical treatment for injuries sustained during the incident.” }, { “source”: “ICE”, “target”: “Oregon State Police”, “reasoning”: “ICE is involved in the investigation along with Oregon State Police.”, “support_text”: “Jason Chudy, a spokesperson for ICE, confirmed that the Department of Homeland Security is involved in investigating the incident. The FBI and Oregon State Police are also part of the investigation.” }, { “source”: “Oregon State Police”, “target”: “Oregon”, “reasoning”: “Oregon State Police are providing advice to residents about confirming the identity of law enforcement.”, “support_text”: “Oregon State Police offered tips to ensure residents could confirm the identity of law enforcement pulling them over.” }, { “source”: “Oregon State Police”, “target”: “U.S. Department of Homeland Security”, “reasoning”: “Oregon State Police are stating what the Oregon law says in relation to federal law enforcement.”, “support_text”: “Chris Zohner, a spokesperson for the Oregon State Police, said the agency was ‘simply stating what the Oregon law says.’” } ]
I can ask about any node on the Story Graph and find out how it relates to any other node. I am literally connecting the dots of reality right now in front of you.
This is wild. Utterly wild. ARE YOU NOT ENTERTAINED?!!!!
But I’m still not done. I want to know about crime.
response = await agent.chat("Build the Story Graph related to scary happenings (crime, violence, etc)")Amazing. You already know I can dig deeper, so I’ll keep going.
Now I want to get back to more normal things. I then ask about events in the data.
response = await agent.chat("Show me the data related to events")
print(response)And I get an answer!
2026-07-29 03:02:47 - Miles Schon Concerts in San Francisco | Schedule & Tickets (san-francisco.events)
2026-07-29 03:02:47 - Kevian Kraemer Concerts in San Francisco | Schedule & Tickets (san-francisco.events)
2026-07-29 03:02:47 - Kim Gordon Concerts in San Francisco | Schedule & Tickets (san-francisco.events)
2026-07-29 03:02:47 - Moonchild Concerts in San Francisco | Schedule & Tickets (san-francisco.events)
2026-07-29 03:05:44 - PIPIRIN EN DALLAS , ZAGAR COMEDY BAR , Dallas, 10 October 2026 | AllEvents (allevents.in)
2026-07-29 03:06:51 - Art House Sessions, 4300 Cole Ave, Dallas, 17 September 2026 | AllEvents (allevents.in) Smooth! So I ask about one!
response = await agent.chat("Show me the story: Kevian Kraemer Concerts")
print(response)And I get an answer!
Kevian Kraemer Concerts in San Francisco | Schedule & Tickets
URL:
https://san-francisco.events/concerts/kevian-kraemer/
Summary:
Kevian Kraemer is scheduled to perform at Brick & Mortar Music Hall in San Francisco, CA, on July 29, 2026, at 8:00 PM. The venue has a seating capacity of 250 and is located at 1710 Mission Street, San Francisco, CA 94103. Ticket prices start at $47, with an average price of approximately $65, and there are currently 19 tickets remaining for the event. Additional information regarding venue location, seating options, parking, accessibility, and nearby dining is recommended for attendees.
Images:
https://api.san-francisco.events/media/city-events-calendar.png
https://api.san-francisco.events/media/concert.jpeg
https://san-francisco.events/images/location.svg
Text:
Kevian Kraemer concerts are scheduled at Brick & Mortar Music Hall in San Francisco, CA. Review venue location, seating sections, parking information, accessibility options, and nearby dining before attending the event. Kevian Kraemer Concerts in San Francisco Concert Dates, Ticket Prices, Seating & Venue Information. Kevian Kraemer has upcoming concerts in San Francisco. The next scheduled performance takes place at Brick & Mortar Music Hall on July 29, 2026. Browse concert dates, seating options, VIP packages, venue information, and ticket availability. Concert Schedule • Ticket Prices • Venue Information • Seating Options • Updated Daily Schedule, Tickets & Venue Details Browse dates, venues, start times, and ticket availability.- Jul2920268:00 PMWedKevian KraemerKevian KraemerBrick & Mortar Music Hall • 250 seatsBrick & Mortar Music Hall94103, 1710 Mission Street San Francisco, CA, US94103, 1710 Mission Street San Francisco, CA, USFrom $47Avg. price ~ $6519 tickets remaining!Tickets Kevian Kraemer Ticket Prices | Date | Price from | Available Tickets | |---|---|---| | Jul 29, 2026 Wed 8:00 PM | $47 | 19 | Kevian Kraemer Concerts by City Venue Information Kevian Kraemer San Francisco FAQ Is Kevian Kraemer coming to San Francisco? Yes. Browse upcoming Kevian Kraemer concert dates, venue details, and ticket availability in San Francisco. Where is Kevian Kraemer performing in San Francisco? Kevian Kraemer is scheduled to perform at Brick & Mortar Music Hall in San Francisco, CA. How can I buy Kevian Kraemer tickets? Compare available ticket options, seating locations, and pricing for upcoming Kevian Kraemer concerts. Are VIP tickets available for Kevian Kraemer? VIP and premium seating options may be available for select performances, subject to availability. What time do Kevian Kraemer concerts start? Start times vary by event date and venue. Check the concert schedule for performance details. How often is the Kevian Kraemer concert schedule updated? Schedules and ticket listings are updated regularly as new events are announced and added.Amazing. Aaaaaaaaaaaaaaand finally, I want the agent to just give me all of the data and data artifacts that were created during the investigation. I want a data dump.
response = await agent.chat("give me the data")
print(response)Do you see that? That’s json data. That means I can look at datasets that are in the response.
See? That’s a research graph. Those were the websites that link to each other.
See? These are the other datasets and artifacts that are part of the data dump!
See? That is enriched data, created during the investigation process.
And that’s it for now! That’s incredible. I can investigate anything. I am empowered like never before. On Friday, I am teaching how to build this far.
But I’m not teaching what I have in mind. I’m just scratching the surface here. I’m going much further and am going to build out powerful products. You could also be using my technologies to build out powerful products. I don’t know why you are not. It’s easy for me. Why don’t you try? What would you build with World AI’s Natural Language Endpoints? What would you build if I simply put THIS behind an API/MCP and sold access to you?
This awareness is beyond next level. Beyond beyond.
LOL cool. I was having ChatGPT commemorate our collaboration with an image and this is the first time I am seeing it, as I paste it here, now.
Perfect. OSINT is the hunt for information and insights that lead to better decision making. Stay ahead of danger. Capture opportunities before others if you want competitive advantage. That means you should tap into my technologies. What are you waiting for? I’m not giving this away for free. :)
That’s probably the last agentic article I’ll write for a bit. I move fast and solve problems. I needed this, so I built it. Now it’s here, and I get to use it for whatever I want. Beautiful day.



















Fascinating! Congratulations!🎉😁