
MariHacks 2024 at Marianopolis College
Linky
A chatbot that reads the links you give it and answers only from them. Marcus Lee and I built it overnight at MariHacks 2024 without sleeping, and it ended up being my first hackathon win.
- Built in
- One night, no sleep
- Approach
- Retrieval-augmented generation
- Result
- Prize winner

Context
From a showcase straight to a hackathon
On April 5, 2024, I presented TradeMind at the end of AI Launch Lab's Winter 2024 R&D program, and it got called out as the best project of the cohort. Right after presenting, I headed straight to MariHacks, Marianopolis College's hackathon, with my friend Marcus Lee. It was one of my earlier hackathons, and it ended up being my first win, so a pretty big moment for me.
We showed up with an idea already. About a week and a half earlier, Marcus had sent me a paper on retrieval-augmented generation and said we should build something from it. Mind you, chatbots and AI wrappers were still pretty new at hackathons back then, and models weren't general enough to just answer anything. You really had to feed them the right context.
Linky is a chatbot that answers from the links you share with it. You give it a link, it reads the page, and it answers your questions using only what it read. If the page doesn't have the answer, it tells you.
The night
Built overnight, away from the cafeteria
Hacking was in the school cafeteria right by the food lines, and it was loud, with people walking past our screens all the time. We didn't want to leak our idea, so the Fundica team let us work out of their office, and we built there overnight. We didn't sleep or have any caffeine, and we watched the sunset and the sunrise while we were building.

The repo tells the story of the night: 78 commits between 6 pm and 12:40 pm the next day, 36 of them mine. Things peaked at 6 am, which is when we were fixing the mobile layout.
How it works
Crawl, chunk, embed, retrieve, answer
We started from Pinecone's Vercel RAG example. Linky crawls the link, converts the page to Markdown, and splits it into 256-character chunks. Each chunk gets embedded with OpenAI's text-embedding-ada-002 and stored in Pinecone.
When you ask a question, Linky embeds it, keeps the top three chunks that score above 0.7, and passes up to 3,000 characters of them to gpt-3.5-turbo inside a context block. The answer streams back through Vercel's AI SDK.


The system prompt tells Linky to only answer from that block, and it didn't always listen, so at 8:21 am I rewrote that rule in all caps with the commit message “LINKY LISTEN TO ME YOU LITTLE CREATURE.”
My contribution
The interface, and making it work on a phone
Marcus restructured the starter and wired up the retrieval. I built the interface around it: the navigation, the landing page, the source cards that show each crawled link, and the little Linky mascot icon.
From 5:40 am on, I was on mobile. Long retrieved text was overflowing the screen, so I fixed the wrapping and widths over eight commits in two hours. Mobile support ended up as one of the accomplishments in the README, which I drafted.

Outcome
My first hackathon win
In the morning we walked back to Marianopolis, and since we hadn't slept and I like to brush my teeth, I brushed them with a water bottle on the way up the hill. At the venue we talked to other teams to scope out the competition, and a lot of them said they'd been scrambling to finish, so we started feeling pretty confident.
The demo went great, and a few judges came up to us afterward to get a deeper understanding of how the retrieval worked. We made the cut after the first round of judging and ended up winning a prize, my first hackathon win. We were really tired, but we crushed it.
The hackathon build has its limits. The crawler only reads one level deep, retrieval returns at most three chunks, and we never measured answer accuracy. In December 2024, Marcus moved Linky to Mistral and gave each user their own context.