A semantic cache for LLM calls: if an equivalent question has already been answered, it returns the stored answer instead of paying to generate it again. Built in a weekend at TartanHacks 2026.
Reprompted is a semantic cache that sits in front of a language model. The premise is that a large share of prompts have effectively been asked before, and every repeat costs money, energy, and water to answer from scratch. Instead of calling the model again, Reprompted checks whether an equivalent question already has an answer and returns that. It was built over a weekend at TartanHacks 2026.
Matching works on meaning rather than characters. An incoming prompt is first canonicalized into a structured form (task, domain, expected output, constraints, and content keywords), and it is that normalized string, not the raw text, that gets embedded into a 3072 dimension vector. Pinecone stores the vectors and answers the nearest neighbour query.
Cosine distance alone is not decisive in the middle of its range, so a repeat is judged on two signals. A cosine score at or above 0.9 accepts and 0.8 or below rejects; in the band between them, Jaccard overlap of content words settles it. The stop word list is pointedly not generic: phrases like "is this correct", "verify", and "double check" are kept rather than stripped, because two prompts differing only by a request to check the work are not the same question.
Storage is split by what each system is good at. Pinecone holds the prompt vector, the raw and normalized prompt, and a response id; MongoDB holds the response itself and the tokens it cost. Many prompts can point at one output, so paraphrases collapse onto a single cached answer. On a miss the prompt goes to a model through the Dedalus gateway, which returns the text along with its token count, and the prompt is indexed either way, so the cache gets better the more it is used.
Savings are the whole point, so they are made visible rather than logged: the frontend totals the tokens avoided across the database and renders them as a growing garden, which gives the demo something to show beyond a counter. Demo video: https://www.youtube.com/watch?v=AdpoTj7sH4s

Canonicalization: the raw prompt becomes a structured string, and that is what gets embedded.

Pinecone carries the vectors and a response id; MongoDB carries the answer and what it cost.