We will be undergoing planned maintenance on January 16th, 2026 at 1:00pm UTC. Please make sure to save your work.

Inspiration

Preventing air collisions is a critical necessity in today’s increasingly crowded skies, where even a single misstep can lead to catastrophic consequences. By developing an open, synchronized system for real-time approval and disapproval of no-fly zones, we can ensure safer airspace management and prevent potential disasters. Such a system would enable seamless communication between aircraft, air traffic control, and regulatory bodies, allowing for swift adjustments to flight paths in response to dynamic conditions. Such a system would not only enhances safety but also saves lives by minimizing human error and optimizing airspace utilization.

Happy to connect on LinkedIn!

Problem Statement

Ask the system to approve/disapprove a "no fly zone" area request at a position of the specified radius for a particular duration.

My background

I am a Software Developer specialized in Angular Front-End Development, with a Bachelor’s in Software Engineering and a Master’s in Project Management. Currently I am also pursuing a Master’s in Computer Information Sciences with Cybersecurity specialization. I am expanding my software expertise into emerging technologies like graph databases and AI. I have light experience with Neo4j from past projects and am eager to deepen my knowledge in these areas to build innovative, impactful solutions. ArangoDB is the only other graph database I tried working on.

My journey with SafeFlights

This project has been a bitter-sweet experience. On the sweet side, I had the opportunity to learn and work with new databases like ArangoDB and its query language, AQL, as well as explore NetworkX and Langchain for the first time. On the bitter side, my lack of experience with graph databases and Langchain AI limited my ability to develop the most optimized solution. Despite the challenges, it has been a rewarding learning experience.

The journey began with DATA

I worked with two sets of synthetic data.

The first data I created was a more a complex structure and large amount of data. The graph had 280055 nodes and 284475 edges. It had airport and waypoint as nodes and routes as edges.

  • The airport node had position (latitude and longitude coordinates), type and city data.
  • The waypoint node had position (latitude and longitude coordinates), type and list of routes (route_name, distance_left, fuel_left, time_to_reach) passing through the waypoint data.
  • The routes edge had route_name, distance, fuel_quantity and traffic score.

The following is the graph visual. ArangoDB could only show 260 nodes.

Complex graph data in ArangoDB

The reason to create a detailed graph was to determine if there are flight collisions at a particular period of time then look for re-route options (within the the fuel limit). If there is no way to avoid collision then disapprove the no-fly-zone area request.

I was able to query this data using AQL, however, using it with Langchain was challenging for me. (More on this in challenges).

Since, I was having a tough time to make Langchain identify the schema well, I thought of reducing the data and simplifying the structure.

My second dataset has only 1 type of node; locations (combined airport and waypoint into one) and 1 type of edge wp_routes.

  • The locations node has isCity/isWaypoint boolean, city_name and position coordinates.
  • The routes edge has route_name, distance, fuel required and time required.

This newer structure was easier to make my Ollama LLM understand the structure.

The following is the simpler graph visual.

The graph of the new structure.

The Agentic App

I developed an Agentic App by leveraging custom made tools like route_for_location, no_fly_zone_check, and routes_between_locations to create an intelligent system for airspace management.

  1. The app uses route_for_location to get all the incoming and outgoing waypoints of the city location.
  2. The app uses routes_between_locations to find the list of all the list of routes.
  3. The app uses no_fly_zone_check to approve or disapprove restricted zones in real-time.

By integrating these tools, the app ensures to create . This innovative solution demonstrates the power of combining graph databases, AI, and real-time decision-making to address complex challenges in aviation.

The Challenges

  • Load NetworkX graph in ArangoDB: NetworkX Directed graphs were not loading in ArangoDB properly. Some of the edges were getting reversed in directions.
  • Ollama LLM: Ollama was difficult to train and did not stay consistent in its response. It requires more experimentation or change of model for better response.

What's next for SafeFlights

  • A more robust LLM is required for consistent responses. It is necessary that the responses are consistent as the nature of the problem statement does not tolerate ambiguity or errors, especially when dealing with critical decisions like airspace management and flight safety.
  • Include more complex data structures as this requires data like fuel, weather, weight, distance and more.

Code

The code submitted for the project. Submission code

My experiments with complex data and Ollama agent. Old/Experiment code

Built With

Share this project:

Updates