From Idea to Working AI POC in 10 Days

Most AI proofs of concept fail not because the model is wrong, but because the scope is wrong. Someone pitches "an agent that handles customer support," ten days later the team has a half-built product with three integrations, no eval harness, and nothing you can show a decision maker without apologizing. I've run this loop dozens of times, both as a senior engineer and while building BizFlowAI. What follows is the exact playbook I use to get from an idea to a defensible, demo-able POC in ten working days, and, more importantly, what I cut to keep it a POC instead of a doomed mini-product.
Day 0: Freeze the scope to one decision you can defend
Before I write a line of code, I write one sentence: "By day 10, this POC will show that [specific capability] works on [specific data] at [measurable bar], for the purpose of deciding [go/no-go on X]." If the sponsor cannot agree on that sentence, the POC is not ready to start.
Concretely, I force three cuts:
- One user, one workflow, one data source. Not "support," but "tier-1 refund questions from Zendesk tickets in English." Not "all invoices," but "PDF invoices from these five vendors."
- No production integrations. If it requires writing back to Salesforce, that's a pilot, not a POC. The POC reads data and produces output; humans handle the write-back.
- A binary success bar. "Answer is correct and cites the right policy passage on 80% of 50 held-out tickets." Not "improves CSAT." You cannot measure CSAT in ten days.
I've watched more POCs die from a fuzzy success bar than from any technical issue. If the sponsor pushes back on making the bar concrete, that's the real signal: they don't actually know what "good" looks like, and no model will save you from that.
Day 1-2: Sample the data before you touch a model
The single highest-leverage thing you can do in the first 48 hours is stare at data. Not a spec, not a slide, the actual raw inputs the system will face.
My rule: pull 100 real examples, hand-label 50, and read all 100. For a support POC, that's 100 tickets. For an invoice POC, 100 PDFs. For a RAG POC over internal docs, 100 real user questions (get them from Slack, sales calls, or a quick form; don't invent them).
While reading, I'm looking for the things that kill POCs:
- Class imbalance. "90% of the tickets are password resets" changes the whole design.
- Junk inputs. Empty tickets, forwarded email chains, mixed languages, OCR garbage.
- Ambiguous ground truth. Two reasonable humans disagree on the answer. If that's more than ~15% of your set, your eval bar has to change or your scope has to shrink.
- Edge cases that will show up in the demo. The CEO will click the weirdest ticket in the pile. Assume it.
The 50 hand-labeled examples become your eval set. Freeze them on day 2 and do not touch them again except to grade against them. If you tune on your eval set, you no longer have one.
Day 3: Pick the model with a one-page decision, not a debate
I decide model choice on day 3, once, based on the data I've seen. Here's the actual matrix I use.
| Factor | Hosted frontier (Claude, GPT) | Hosted mid-tier (Haiku, GPT-mini) | Local (Llama, Qwen via Ollama/vLLM) |
|---|---|---|---|
| Time to first working prompt | Hours | Hours | 1-2 days |
| Cost per 1k POC runs | $$$ | $ | ~$0 after setup |
| Data residency / air-gapped | No | No | Yes |
| Quality ceiling on hard reasoning | Highest | Good | Task-dependent |
| Right for POC? | Almost always yes | For high-volume/simple tasks | Only if residency is mandatory |
For a 10-day POC, the default is: start with the strongest hosted model you can access, then measure whether you can drop down. Optimizing for cost or latency in a POC is premature. You are proving the capability, not the unit economics. If the frontier model can't hit the bar, a smaller or local model definitely won't, and you've saved yourself four days of infrastructure work to learn that.
The one exception is when data residency is a hard "no" from legal. Then I go local from day 1, usually with a Qwen or Llama variant behind Ollama for the POC, and I write it into the success bar that we're measuring the local model, not a cloud one. Don't mix.
Day 4-6: Build the thinnest possible pipeline
Three days to a working end-to-end pipeline. Not pretty, end-to-end. My structure is almost always the same:
input -> preprocess -> retrieve (if RAG) -> prompt -> LLM -> parse -> output + trace log
A few things I've learned to do early because skipping them costs a day later:
- Log every trace to a JSONL file from run one. Input, retrieved context, prompt, raw output, parsed output, latency, cost. This is your debugging surface for the rest of the POC. A hundred lines of Python beats any tracing platform for ten days.
- Structured output from the start. JSON schema, Pydantic, or Zod. Free-form text answers create ambiguity in the eval. Even for "generate a response," return
{"answer": "...", "citations": [...], "confidence": "..."}. - Retrieval is where POCs actually die. If it's a RAG POC, spend day 4 entirely on chunking and retrieval. Hybrid search (BM25 + embeddings, fused with RRF) beats pure vector search on most business corpora. I've had cases where switching from cosine-only to hybrid moved answer accuracy from 62% to 84% with no prompt changes.
- One prompt file, versioned. Not scattered across notebooks. When you look back at day 10 and ask "which prompt got us to 78%?" you want the answer, not a guess.
By end of day 6, the pipeline runs end-to-end on a single input from the command line. That's it. No UI yet.
Day 7: Build the eval harness (the thing that makes this defensible)
This is the day that separates a POC from a demo. I run the pipeline over the 50-example eval set and grade the output.
For grading, I use two layers:
- Deterministic checks where possible. Did it return valid JSON? Did the classification match? Did the extracted invoice total match to the cent? These are cheap and reliable.
- LLM-as-judge for open-ended outputs, with a strict rubric. I use a different model than the one being evaluated (if I'm testing Claude, I judge with GPT, or vice versa) and I calibrate the judge against 20 of my own human grades before I trust it. If the judge disagrees with me on more than ~10% of that calibration set, I rewrite the rubric.
The output of day 7 is a one-page report: accuracy by category, failure examples grouped by root cause, cost per run, latency per run. That report is what you show the sponsor on day 10, not just the demo.
If the numbers are bad, day 7 tells you why. In my experience, the failures cluster into three buckets almost every time: retrieval missed the right chunk, the prompt was ambiguous, or the ground truth was itself wrong. All three are fixable in 2-3 days. What's not fixable is discovering on day 10 that you never measured anything.
Day 8-9: Fix the top failure cluster, then stop
You will be tempted to keep improving. Resist it. Pick the single biggest failure cluster from day 7 and fix that, then re-run the eval. That's the loop.
A concrete example from a document-Q&A POC I ran: day 7 eval showed 68% accuracy, with 22 of the 32 correct answers coming from the top-3 retrieved chunks and 16 of the 18 failures being "right document, wrong section." The fix wasn't a better prompt or a bigger model. It was smaller chunks (from 1,000 to 400 tokens) with 20% overlap, plus a rerank step. Day 8 rebuild, day 9 re-eval: 84%. Done.
The second thing I do on day 9 is build the demo surface. Usually a tiny Streamlit or Next.js UI, one input field, one output panel, one "show trace" button. The trace button is the single most important element in the demo. When a technical stakeholder asks "why did it say that?", you click, they see the retrieved context and the prompt, and you look like you know what you're doing (because you do).
Day 10: Demo, decision, and the honest limits slide
The demo itself takes 15 minutes. The framing takes 30.
My demo structure:
- The success bar we agreed on day 0. Show the sentence verbatim.
- Three live examples. One easy, one medium, one that fails. Always show a failure. POCs that only show wins are not trusted, and rightly so.
- The eval numbers on the held-out set. Accuracy, cost per run, latency. Not projected, measured.
- The honest limits slide. What this POC does not cover, what would break at production scale, what the next 30-60 days would need to look like to turn this into a pilot.
- The go/no-go recommendation from you. Not from them. You did the work, you have a view, state it.
The "honest limits" slide is the one that gets you hired for the next phase. Everyone else is pitching. You're the person who told them what would go wrong, which means when things go wrong later, they'll trust you to fix it.
What I cut, every single time
The list of things I refuse to build into a 10-day POC:
- Auth and user management. Localhost or a shared password.
- Any write-back to production systems. Read-only.
- Retraining or fine-tuning. Prompt engineering and retrieval get you 90% there in a POC.
- Monitoring, dashboards, alerting. The trace log is enough.
- More than one model provider. Pick one, evaluate it, move on.
- A pretty UI. One page, functional, done.
- Handling more than one language, one document type, or one user role.
Every one of these is legitimate work. None of it belongs in the POC. All of it belongs in the pilot, if the POC earns one.
What I'd do if I had 5 days instead of 10
Same playbook, compressed: skip local model consideration entirely, use a hosted frontier model, cut the eval set to 25 examples, skip the fix-and-reeval loop (accept the day 7 numbers as the answer), and be extra brutal on scope. A 5-day POC can still be defensible if you're honest that you measured 25 examples, not 50. What you cannot do in 5 days is a rigorous eval and a fix cycle. Pick one.
Close
The reason this playbook works isn't that the steps are clever. It's that each day has a single deliverable, and every deliverable is something you can show a sponsor. Ten days of visible progress beats thirty days of "we're still integrating." If you're staring down a POC that's about to become an unfunded side quest, or you want a second pair of eyes on scoping one properly, get in touch. I write more about the messy middle of shipping AI systems on the blog.
Frequently asked questions
How long does it take to build an AI proof of concept?
In my experience running dozens of these projects, a defensible, demo-able AI POC can be built in 10 working days if the scope is disciplined. The key is not the model or the tooling, it's freezing scope to one user, one workflow, and one data source before writing any code. Most POCs that drag on for months failed on day zero because the sponsor couldn't articulate a binary success bar. Ten days is enough to prove a capability; it is not enough to build a product.
How do I define success for an AI proof of concept?
I write one sentence before starting: 'By day 10, this POC will show that [specific capability] works on [specific data] at [measurable bar], for the purpose of deciding [go/no-go on X].' The success bar must be binary and measurable on a fixed eval set, for example 'correct answer with correct policy citation on 80% of 50 held-out tickets.' Avoid business metrics like CSAT or revenue lift, since you cannot measure those in ten days. If the sponsor resists making the bar concrete, that itself is the signal that they don't yet know what 'good' looks like.
Should I use a frontier model or a smaller/local model for an AI POC?
For a 10-day POC, start with the strongest hosted frontier model you can access (Claude, GPT), then measure whether you can drop down to a mid-tier or local model. Optimizing for cost or latency during a POC is premature because you are proving capability, not unit economics. If the frontier model cannot hit the success bar, a smaller model almost certainly won't either, and you'll have saved days of infrastructure work. The one exception is when data residency is a hard legal requirement, in which case go local from day 1 with something like Qwen or Llama on Ollama, and write that constraint into the success bar.
How much data do I need to evaluate an AI proof of concept?
I pull 100 real examples, hand-label 50 of them, and read all 100 before touching a model. The 50 labeled examples become the eval set and get frozen on day 2, never to be tuned against. Reading the full 100 surfaces the things that actually kill POCs: class imbalance, junk inputs, ambiguous ground truth, and edge cases the CEO will click during the demo. If more than about 15% of examples have ambiguous ground truth, either the eval bar or the scope has to change.
What are the best practices for building a RAG or LLM pipeline in a POC?
Keep the pipeline thin and end-to-end: input, preprocess, retrieve if RAG, prompt, LLM, parse, output, plus a trace log. Log every run to a JSONL file from day one (input, retrieved context, prompt, raw output, parsed output, latency, cost) because that becomes your debugging surface. Force structured output with JSON schema or Pydantic from the start to make evaluation unambiguous. For RAG, invest heavily in retrieval: hybrid search (BM25 + embeddings fused with RRF) typically outperforms pure vector search on business corpora, I've seen accuracy jump from 62% to 84% with no prompt changes. And keep prompts in a single versioned file, not scattered across notebooks.
Building something hard with AI or automation? I am open to talk.
Get in touch