← Back to Blog
Building in Public

The RAG Revelation: When Your Prototype Answers Back

christian crumlish•
A robot holding a worn cloth, piecing together retrieved context to make a prototype that finally answers back.
“Hello, world!”

The RAG Revelation: When Your Proof of Concept Answers Back

May 29, 2025

Before the rebuilds, before the domain models, before I knew what a circular dependency even was, there was a moment. That moment when your hacky prototype does exactly what you hoped it would do, and you realize you might be onto something.

Let me rewind to late May, when Piper Morgan was just an idea and some synthetic documents.

The setup: fake it till you make it

Claude had fabricated some generic “product documentation” — really just some made-up requirements docs, a fictional API spec, and a pretend project roadmap. Total fiction. Like writing a screenplay for a movie about product management (a boring movie).

Still, you don’t need real data to see how your machine handles data, just data. Fake data is till data.

The plan was simple:

  1. Chunk these fake documents
  2. Embed them with OpenAI
  3. Store them in a vector database
  4. See if I could get meaningful answers back

This is called RAG — Retrieval Augmented Generation. Fancy name for “find relevant stuff, then let the AI use it to answer questions.” Not revolutionary (nothing about this project is revolutionary), but potentially useful. (If you’ve got a blog, try to using RAG on your archives!)

The first real test

I fed my fake documents into the system. ChromaDB dutifully stored them. OpenAI created embeddings. Everything looked ready.

Time for the moment of truth. I ran the proof-of-concept python file (pm_agent_poc.py) and it started churning through some canned requests

I need a new feature for the user profile page. Add a dark mode toggle. This is for the Piper Morgan project.

And then Piper responded:

--- Processing request for repo 'mediajunkie/test-piper-morgan' ---
User Request: 'Add a dark mode toggle feature to the user profile page for the Piper Morgan project.'
Searching knowledge base with query: 'Add a dark mode toggle feature to the user profile page for the Piper Morgan project. Piper Morgan project'
Number of requested results 5 is greater than number of elements in index 1, updating n_results = 1
Generating structured issue data with LLM...
Claude structured query successful, JSON parsed.
Claude structured query successful, JSON parsed.
Generated issue data: Title='Add dark mode toggle to user profile page', Labels=['feature', 'enhancement', 'UI/UX']
✅ Successfully created issue: 'Add dark mode toggle to user profile page'

Holy crap. It worked.

Why this mattered

Now, I know what you’re thinking. “Congrats, you built a toy github machine.” And yeah, fair. But here’s what made this different:

The response wasn’t just regurgitating text. It had:

  • Combined information from multiple document chunks
  • Structured it coherently
  • Added context that made sense
  • Formatted it like an actual PM would

This wasn’t keyword matching. It was understanding. Perhaps a primitive, limited form of understanding, but understanding nonetheless.

What RAG actually means

Here’s the thing about Large Language Models: they’re brilliant and they’re liars. Ask GPT about your company’s API and it’ll confidently make up endpoints that sound plausible but don’t exist.

RAG fixes this by grounding the AI in actual documents instead of vague Internet- (and pirated book-) sourced generalities:

  1. Find relevant chunks from your knowledge base
  2. Pass them as context to the LLM
  3. LLM answers based on that specific context
  4. No hallucination about things not in the documents

It’s like the difference between asking someone to guess your product requirements versus handing them the spec and asking them to summarize it.

The aha moment

The real revelation wasn’t that RAG worked — smarter people than me had already proven that. The revelation was what it meant for Piper Morgan:

  • PMs could upload their actual documents
  • Piper could answer questions about specific projects
  • Knowledge would accumulate over time
  • Context would be real, not imagined

This reinforced the potential of a core element of the vision: a knowledge-aware assistant that actually understood your product context.

It’s also when I started thinking this thing could really work someday.

The validating power of proving a concept

That evening, with my fake documents and real answers, I knew two things:

  1. The technical approach was sound
  2. I had no idea how to build this properly

The POC was held together with string and good intentions. Directory structure? What’s that? Error handling? That’s future me’s problem. But it proved the core concept.

Sometimes you need that ugly prototype that barely works just to validate that the idea isn’t crazy. RAG + PM documents = contextual intelligence. Simple equation, powerful result.

What came next

This successful test is what justified everything that followed:

  • The prototype hack-a-thon I spent the rest of the week on
  • The pause to document and reconsider
  • The decision to do a complete rebuild with proper architecture
  • The domain-driven design approach
  • The learning infrastructure
  • All those hours fighting Python imports

Without this moment — when synthetic documents produced real insights — none of that would have happened.

The lesson that sticks

Building AI products is weird because the gap between “doesn’t work at all” and “basically magic” is sometimes just getting your vectors aligned correctly. One day you’re failing to retrieve anything relevant. The next day your prototype is answering questions like it actually understands your fake product.

The RAG revelation taught me: start with the core intelligence. Everything else — the architecture, the infrastructure, the fancy features — only matters if the fundamental approach works.

Good thing I tested that first. Even if it was with completely made-up documents.

← Back to BlogAlso available on Medium