Inspiration
One of the issues I've always struggled with is being able to start work as I have a tendency to heavily procrastinate. Through the years of the methods I've found to be the most effective are Pomodoro timers. However the static nature of most Pomodoro timer means that the timer isn't reflective of your own productivity levels, something that can leads to breaks mid peak productivity or a lack of breaks when you're in a slump.
What it does
PaceMate uses a ML model to analyze your keystrokes, mouse activity, website usage, and more to calculate your productivity levels and automatically adjust breaks accordingly. PaceMate features a simple clean UI that displays the timer and statistics such as productivity over the last 5 minutes, site usage levels and productivity on each.
How I built it
PaceMate has three components, the NextJS UI, the Bun.js webserver that runs the TensorFlow model, and any plugin that provide the model the data. The Bun.js web-server contains a normal HTTP API endpoint that plugins can provide data through POST requests and a web-socket that provides data to the UI. The included browser extension plugin uses a simple Manifest V2 extension to collect all the required data while polling the server with the data.
Challenges I ran into
Being the first project I've really used any form of AI on, creating the model was particularly tricky, especially due to on major constraint: A lack of training data. In order to collective training data I ended up recording my own browser usage and hand labeling the data. While this method could generate basic data, it couldn't generate large scale amounts. This limitation on data amount meant that a RNN or CNN model that would more accuracy predict productivity by analyzing trends was impractical, something I found out the hard way. Instead I stuck to basic ML model and used a simple moving average to smooth out spikes or drops leading a generally consistent productivity trend.
Accomplishments that I'm proud of
I'm proud of how far I've been able to come with the project, going from no experience at all to a fully functional minimal working project with an easily expandable structure through the plugin system.
I was also able to create a real clean and minimal UI that provided all the necessary information and additional statistics in a easily understandable format.
What I learned
By completing this project I was able to learn how to create and utilize custom basic ML models as well as keeping an AI project performant enough that it could run real-time without issues.
What's next for PaceMate
Many ideas for PaceMate were discarded throughout the development process due to time constraints. Some of the more notable ones include:
- Proper CNN model with real-time training allow more accuracy predictions and being able to adapt to the user's habits.
- Update the model to consume more metrics for a more accurate prediction
- Allowing custom models or plugins that provide their own productivity measure instead of data
- More included plugins such as an OS program for both Windows and Linux, code editor extensions, etc
- Native UIs to get around the limitations off browser based UIs for end users
- Changing the API endpoint to another web-socket for better performance
Built With
- nextjs
- tensorflow
- typescript

Log in or sign up for Devpost to join the conversation.