Inspiration

Today, we consume and generate information at a breakneck pace: quick voice memos, photos of whiteboards, screenshots, and random thoughts. The problem is that organizing all of this into traditional folders creates too much friction. We were inspired by the "Second Brain" concept—a smart "junk drawer" for your mind. We wanted to build a unified space where you can dump any piece of information regardless of its format, trusting that the underlying technology will process and organize it.

What it does

Kelea Notes is an intelligent, omnichannel note-taking application designed to remove the barrier between your thoughts and your devices.

  • Frictionless Capture: Save raw text, record audio that is automatically transcribed, or snap pictures/handwritten notes from which the app extracts text using state-of-the-art OCR.

  • AI-Driven Normalization: The system acts as a smart filter, taking messy, unstructured inputs (voice memos, images "in the wild") and transforming them into clean, standardized, and accessible digital text formats.

How we built it

We designed a robust, microservices-oriented architecture:

  • Backend: Powered by Java and Spring Boot, acting as the main orchestrator for the entire data pipeline.

  • Artificial Intelligence: We integrated the Florence foundational model via Azure AI Vision (v4.0) for highly accurate OCR, capable of reading handwritten text and skewed images. For audio, we deployed a local Whisper container to handle high-quality transcriptions.

  • Infrastructure: The entire environment is containerized using Docker Compose for seamless and isolated deployment.

  • Frontend: Built a fluid mobile client to capture different media types and send them efficiently to our backend for processing.

    Challenges we ran into

    Our biggest technical hurdle was the data architecture and integrating the frontend with the backend. We had to design a unified data model capable of ingesting entirely different input formats (raw images, audio blobs, and plain text) and normalizing them into a single, structured flow. Handling AI processing was also tricky. We had to manage API timeouts, deal with the "Cold Start" of our local Whisper model, and navigate sudden breaking changes in cloud APIs (like the URL and JSON structure overhaul in Azure Vision v4.0) under the extreme time pressure of the hackathon. Synchronizing the communication between the frontend and the Spring Boot API while waiting for these heavy AI tasks to complete required heavy debugging.

Accomplishments that we're proud of

  • Successfully integrating a highly complex stack (Spring Boot, Azure AI, local Whisper models, and Docker) in less than 24 hours and getting it to run smoothly.

  • Building a backend that successfully hides all the complex AI processing from the user, providing a clean and frictionless experience.

  • Our team's resilience: effectively splitting the workload across infrastructure, backend, and frontend domains, and solving critical deployment bugs at 6:00 AM!

    What we learned

  • Managing AI "Cold Starts" is crucial for user experience. We learned how to implement model warming techniques for our Whisper container so that the first user request doesn't hang.

  • The importance of defensive programming in Java—building resilient services that gracefully handle crashes, timeouts, and unexpected payloads when interacting with external cloud APIs.

    What's next for Kelea Notes.

    This is just the foundation of our Second Brain. Our roadmap would include:

  • Semantic & Vector Search: Now that we have all this normalized data, the next step is implementing an ultra-fast search engine (like Meilisearch) or a vector-based engine. This will allow users to search by "concept" rather than exact keywords.

  • Integrated LLM Chatbot (RAG): Adding a conversational AI assistant that lives inside your notes. You will be able to ask Kelea: "What did we agree on during yesterday's architecture meeting?" and the AI will read your audio transcripts and OCR notes to generate a synthesized answer.

Built With

Share this project:

Updates