The quotes and booking process between airline and freight forwarder is still very manual and goes through emails or phone. There have been a lot of various initiatives for over 20 years with EDI first and now booking portals for some airlines but there are still a lot of inefficiencies if we compare to other industries. We wished to simplify this process by connecting Forwarders and Airlines on one platform.
What it does
Currently, we offer functionalities to search for flights from various airlines for transportation of cargo. Filters are offered for sorting by price, travel time etc., which helps forwarders to decide on their ideal flight after which they can book the flight from our portal.
How we built it
We started by exploring the different APIs, until we were knowledgeable enough to define a standard flow, and data format. After that, we started defining the infrastructure with a set of dummy functions, with no logic inside but connected as per our flow. As time passed during the hackathon we were able to fill them until we reached a functional product.
The frontend is written in React.js, with the material components. We store the static objects in an S3 bucket, which is configured as an origin for a CloudFront distribution (CDN).
We also used the subscription feature of GraphQL to load the APIs results in real-time (displaying the results as soon as possible from the airlines APIs).
We rely entirely on AWS, so we chose to do everything thoroughly on serverless services. To deploy it we created a CloudFormation template using SAM, so it's easy to update for the developers, and they can even create an entire copy of it if they need to do risky work.
The application uses a GraphQL API as the single entry point to our data. Every request that the frontend does is validated against our data model's schema. The GraphQL service then calls different lambdas, and a database to gather the right information.
We use AWS Lambda to implement the logic to connect to the different airlines APIs, each Lambda is independent and can be deployed by its developer, they can also be in different programming languages. Here we use Go and Python.
Finally we store state for the shipment and bookings in DynamoDB.
Challenges we ran into
The main challenge was to gather heterogeneous data from various APIs and render them in a consolidated and visually appealing format. Another interesting challenge was to work together as a team, on different time zones and all in remote (France, Singapore, India)
Accomplishments that we're proud of
We're mainly proud of all we learned about the different technologies we used for this project. Being able to go this further while we were still discovering those technologies was a big accomplishment for all of us, particularly in a short time.
What we learned
- We learned that to test is to doubt.
- For some of us, we learned new languages (GraphQl, Golang)
- For others, we learned how to use AWS serverless infrastructure.
What's next for CargoAI Quote & Book
Next for CargoAI Quote & Book to create a platform for both Forwarders and Airlines with or without API to connect and provide advanced functionalities like booking data analytics, real-time demand information, and cargo tracking