Inspiration
I was inspired by my very own bookmarks folder, which was a mess of jumbled articles and resources. I started this project to solve my issue of being unable to properly use my bookmarks folder.
What it does
The user can upload their exported bookmarks file, then OpenAI's reasoning model accurately transforms the data into a new categorised list.
How I built it
I built it through first constructing the backend, ensuring that the HTML format of a bookmark export file would be correctly transformed into a more manoeuvrable JSON. This would then be fed to OpenAI and returned in a structure to be converted back into a HTML file.
Lastly, I used Next.JS to integrate the frontend and backend with server API routes. This involved using React, TS and Vercel for hosting.
Challenges I ran into
I found data validation difficult, as without it AI can be unpredictable. I used the Zod library but still found that it was difficult to type a structure that can have infinite children.
I also was unsure of security vulnerabilities and configuration troubles with hosting an ExpressJS server, so settled on Next.js for everything. However this comes at increased server costs.
Accomplishments that I'm proud of
I'm happy to say that I have developed a prototype, and it can be accessed at sortbookmarks.com
What I've learned
For constructing the backend I implemented Jest testing prior to coding, allowing me to be confident in API and processing capabilities. This was new to me and allowed me to be more precise and efficient in my construction. I also learned about transferring files over API requests. Now in future projects I can be more confident about file transfer and creation.
What's next for AI Bookmarks Sorter
I aim to develop cost saving strategies, as currently Vercel hosting and OpenAI pricing is too expensive to be profitable. This will involve using the Express JS prototype I developed prior to settling on Next.js and changing model providers.
Built With
- next.js
- openai
- typecript
- zod
Log in or sign up for Devpost to join the conversation.