WeInstaReply - automatic AI responses to your Microsoft Teams messages
This project combines the GPT-4 LLM with the Graph API to automate replies to your Microsoft Teams messages.
The application is registered as multi-tenant, allowing any user to connect their Microsoft work or school account. It's restricted to these accounts, due to the permissions required by the Graph API when interacting with Teams. The Microsoft Identity Library is utilised for token acquisition and L2 distributed token caching is used to store access and refresh tokens in SQL Server cache. This way, these tokens are never exposed to the client as the Firebase access token is used to authenticate the client application and API.
The bulk of the functionality is handled by a scheduled job. It carries out a few steps:
You can checkout the launch on Product Hunt
Muchtodo AI - an alternative to Todoist
This project aimed to create an app similar to Todoist, but with the added feature of speech-to-text for creating projects, tasks, and notes. The speech-to-text supports 57 different languages. (For the demo, I decided to spare everyone's ears from hearing me attempt another language).
At its core, it uses the GPT-4 LLM to convert the user's audio to text, which is then further processed by the LLM to determine the type of JSON object (project, task, or note) to return. Within the API, I have defined the properties each JSON object should include. For example, for a new task, the properties include title, description, due date, priority, and project. The LLM extracts the relevant information from the transcribed text to populate these properties. Feels obvious to state, but this entire process is handled aysnc of course. The JSON object is then returned to the client to enable users to make any adjustments, if needed.
As referenced in the demo, one of the methods to implement a task board that supports re-ordering, includes Jira's implementation of LexoRank. For this project, we utilised a Linked List to develop the boards because of its simplicity, the lack of need for rebalancing and no requirements to scale the project.
This application's hosting architecture mirrors WeInstaReply
You can checkout the launch on Product Hunt
At this moment, I have taken down the site due to limited time available to maintain it (customer requests, support, etc.).
MailAmplify - a tool for email marketing
MailAmplify provides tools to capture subscribers by allowing users to create and embed customisable signup forms on their websites. It enables sending custom email marketing campaigns through an intuitive drag-and-drop email builder.
Newsletter: A tool to build and customise emails, which includes a drag-and-drop builder provided by Unlayer.
Modal Designer: Here users can customise their own sign up form to embed into their own website.
Subscribers: Maintains the list of subscribers who will receive an email.
This application's hosting architecture mirrors WeInstaReply
*At the time of recording, the Postmark subscription was cancelled, so a previous email was shown. *
At this moment, I have taken down the site due to limited time available to maintain it (customer requests, support, etc.).
International Space Station tracker
A live tracker of the International Space Station that is powered by Where The ISS At. This live tracker uses the API to fetch the station's TLEs, which help interpolate its position and velocity. Therefore, I don't need to continuously poll the API to determine the current location. I mean how terrible would that be?
The 3D-rendering is handled by CesiumJS which is an open-source JavaScript library designed for creating 3D globes and 2D maps on the web.
The 'Go to current location' button renders a pin and moves the camera to the user's current location. This would be used to track where the ISS is in relation to your location.
Minimax is a decision rule used in artificial intelligence, decision theory, game theory, statistics, and philosophy for minimizing the possible loss for a worst case (maximum loss) scenario.
In the context of Tic Tac Toe, the Minimax algorithm evaluates all possible moves by simulating future game states using a Tree data structure. It alternates between maximizing the AI's advantage (Max) and minimizing the opponent's advantage (Min). Each game state is assigned a score: -1 for a loss, 0 for a draw, and 1 for a win. By generating all possible board states, the algorithm selects the optimal move for the AI. This ensures that the chosen move maximizes the AI's chances of winning or, at the very least, minimizes the potential loss if the opponent also plays perfectly.
When both players play optimally, the game will always end in a draw.