Inspiration
Every codebase is a knowledge base that nobody can query.
The architecture decisions, business rules, and the "why did we build it this way" are all in there, scattered across hundreds of files. When a new engineer joins, you return to a service months later, or someone asks "how does auth work?" you end up grepping, reading, and hoping you find the right file.
And it gets worse when you bring AI into it. Agents that search codebases re-read thousands of lines on every single query. That gets expensive fast, and it still does not persist anything. Next query, same scan. I wanted to fix both problems. Not with more documentation (nobody writes it). Not with a chatbot that hallucinates. With a system that reads your code once, extracts what it actually knows, indexes it permanently, and lets anyone ask questions with citations they can verify.
Engineers get answers in seconds. AI agents get a persistent, sourced knowledge base they can query for a single embedding call instead of re-scanning the entire repo.
NovaLore becomes that librarian for your codebase.
What it does
NovaLore ingests a codebase or documentation folder and turns it into a searchable knowledge base that you can query in natural language.
Ingest tab -- watch live per-file progress as each file moves through extracting, indexing, done.
Knowledge tab -- browse every extracted fact, grouped by type (business rules, behaviors, constraints, architecture decisions), with full-text search.
Ask tab -- ask questions and receive a synthesized answer grounded in citations pointing back to specific source files.
Powered entirely by Amazon Nova via AWS Bedrock -- extraction, embeddings, and synthesis all run through Amazon Nova models. No third-party AI APIs involved.
Everything runs locally via Docker. No data leaves your machine except the AWS Bedrock API calls.
How we built it
Three Amazon Nova touchpoints, end to end:
1. Extraction -- Nova Lite
Each file is chunked and sent to Nova Lite with a carefully engineered prompt that instructs it to extract only explicit, self-contained factual knowledge statements -- business rules, constraints, architectural decisions, and behaviors. Not summaries. Not paraphrases. Facts that stand alone.
2. Embeddings -- Nova Multimodal Embeddings
Each extracted fact is embedded into a 1024-dimensional vector using Amazon Nova's multimodal embedding model and stored in ChromaDB with the source file path as metadata.
3. Synthesis -- Nova Lite
At query time: embed the question, vector search retrieves the most relevant facts, pass them to Nova Lite with a synthesis prompt that instructs it to give a direct answer grounded strictly in those facts, with source citations.
The system is intentionally lightweight: a Go backend, a Next.js frontend, and Docker Compose so onboarding is:
docker compose up --build

Challenges we ran into
Chunk sizing -- context vs. focus
Sending an entire file to Nova Lite caused the model to extract vague generalities instead of precise facts. But chunking too aggressively removed important context. A function validating a drone state transition only makes sense if the chunk includes the allowed states defined above it.
The solution was a context-aware chunker that splits files on natural code boundaries and prepends constant blocks to every function chunk so Nova always sees the full picture.
Specificity -- facts that stand alone
Early extractions produced statements like "Transition from one status to another is not allowed." Technically correct, completely useless.
The extraction prompt went through many iterations to enforce specificity: every fact must name the exact entity, role, state, or value involved. The difference between noise and knowledge.
Accomplishments that we're proud of
- A fully working RAG pipeline powered entirely by Amazon Nova -- extraction, embeddings, and synthesis
- Per-file ingestion telemetry so users see exactly which files are analyzed and how many facts were extracted
- Extraction quality that surfaces real domain knowledge -- role-based access rules, state machine transitions, architectural constraints
- Engineers can answer questions about a system in seconds instead of searching across dozens of files
- The entire system runs with a single
docker compose up --build
What we learned
Nova Lite is remarkably good at structured extraction when the prompt is precise. The difference between a vague prompt and a well-engineered one is the difference between:
"status transitions are validated"
and
"A drone cannot transition from reserved directly to delivered -- it must pass through picked_up first."
Prompt engineering for extraction is a different discipline than prompt engineering for generation. You are not asking the model to be creative -- you are asking it to be a precise, faithful reader.
I also learned that Bedrock rate limits are real, especially for embedding generation. Reliable pipelines sometimes require predictable pacing rather than aggressive concurrency.
What's next for NovaLore
- Change-aware ingestion -- only re-index files that changed since the last analysis
- Runtime data ingestion -- upload new repos, files, or doc folders directly through the UI; add a GitHub URL and NovaLore pulls and indexes it live
- Slack and IDE integrations -- ask NovaLore questions without leaving your workflow
- Graph visualization -- explore relationships between services and concepts discovered during extraction
- Rule monitoring -- detect when new commits change critical system rules and alert the team
Your codebase has lore. NovaLore surfaces it.
Built for the Amazon Nova AI Hackathon 2026. #AmazonNova
Log in or sign up for Devpost to join the conversation.