Rapid Agent Prototype Pattern (RAPP)
Compress 3-6 month development cycles into days using the "Buzz Saw + Human Taste" methodology.
Executive Summary
The Rapid Agent Prototype Pattern (RAPP) represents a fundamental shift in how AI agents are built, tested, and deployed at enterprise scale. Traditional software development is like a handsaw - slow, manual, laborious. RAPP is the buzz saw - fast, tireless, scalable.
The Core Philosophy: Let AI do the heavy lifting (the "buzz saw"), but humans provide the judgment that separates good code from production-ready solutions (the "taste").
Comprehensive Documentation
This documentation provides a complete view of the Rapid Agent Prototype Pattern (RAPP), combining:
- Technical Implementation - Code examples, architecture details, and deployment specifics for developers
- Business Context - ROI metrics, process workflows, and strategic value for executives
- Practical Guidance - Step-by-step instructions and real-world examples for all team members
All content is presented in a unified, comprehensive format to give you the complete picture.
The AIBAST RAPP pattern: shell templates around a live process
Everything in this guide builds one kind of thing: a shell template. The template is the shell, the agent's shape for one business job (what it asks, what it reads, what it hands back). The customer's specific business process is the content it wraps around, in real time, from the first minute. The Brainstem, RAPP and every AI Agents Library template follow this pattern.
Two rules carry through all 14 steps: the shell is the same for every customer with that job, and the shell never owns or copies the customer's business data. It reads the live process and writes back through the customer's own system of record. Read the pattern on one page, with a worked example.
What RAPP Delivers
- Discovery to MVP in Days: Convert customer conversations into working prototypes overnight
- Infinite Scalability: Work on 20+ projects simultaneously with the same team
- Zero Code Dependency: Agents hot-load from Azure File Storage - no redeployment needed
- Universal Architecture: Works in Teams, web, mobile, voice - same AI, same context
- Production-Ready Quality: Most generated agents pass human review on first attempt
- Streamlined Video Generation: Turn prototypes into customer-ready demos (manual process with automation roadmap)
RAPP 14-Step Process
Every project follows this standardized workflow, with 6 human quality gates preventing scope creep and ensuring value. Each step fills the shell with a little more of the customer's live process: discovery finds the process, the MVP names what the shell wraps, the agent code is the shell itself, and deployment points it at the real system of record.
| Step | Type | Duration | Owner |
|---|---|---|---|
| 1. Discovery Call | MANUAL | 30-60 min | Field Team |
| 2. Transcript Analysis | AUDIT | 15 min | Delivery Team |
| 3. Generate MVP "Poke" | MANUAL | 1-2 hours | Delivery Team |
| 4. Customer Validation | AUDIT | 1-2 days | Field Team |
| 5. Generate Agent Code | MANUAL | Days-Weeks | Technical Team |
| 6. Code Quality Review | AUDIT | 30-60 min | Technical Team |
| 7. Deploy Prototype | MANUAL | 1-2 hours | Technical Team |
| 8. Demo Review | AUDIT | 30 min | Delivery Lead |
| 9. Generate Video Demo | MANUAL | 3-4 hours | Delivery Team |
| 10. Audit: Final Demo Review | AUDIT | 30-60 min | Delivery Lead |
| 11. Production Planning | MANUAL | 3-7 days | Technical Team |
| 12. Audit: Security & Compliance Sign-off | AUDIT | 1-3 weeks | Customer IT and Security |
| 13. Production Deployment | MANUAL | 1 day | Technical Team |
| 14. Post-Deployment Review | AUDIT | Ongoing | Success Team |
Key Insight: The Risk Elimination Pattern
Traditional software development risk: spending 6 months on a problem no one cares about. This framework is designed to make that go away.
How? Multiple customer validation checkpoints before significant time investment. The MVP "poke" at Step 3 gets customer feedback before any real work begins. By Step 6, you have code locked in scope with customer sign-off.
System Architecture
A 4-layer universal intelligence system designed for infinite scale and zero-downtime updates.
Why Architecture Matters (Business View)
The architecture enables rapid agent updates with zero downtime, infinite horizontal scaling for concurrent users, and universal memory so context persists across Teams, Web, and Mobile. This translates to faster iteration cycles, lower operational costs, and seamless user experiences.
The Four Layers
The architecture separates concerns into four distinct, independently scalable layers. This design allows agents to hot-load without redeployment, context to persist across all channels, and the system to degrade gracefully when components fail.
| Layer | Responsibility | Technology |
|---|---|---|
| 1. Interface Layer | User interaction channels | M365 Copilot, Teams, Web, Mobile, Voice |
| 2. Orchestration Layer | Conversation management, routing, history | Copilot Studio + Power Automate |
| 3. Intelligence Layer | Agent execution, decision-making, tool calling | RAPP Brainstem on your machine (~3,500 lines), or the Azure Function App in the cloud (~1,000 lines) |
| 4. Storage Layer | Agent code, user memory, workflow definitions | Azure File Storage |
↯ Why This Architecture Wins
1. Hot-Loading Without Redeployment
Problem: Traditional deployments require downtime, testing pipelines, and approval processes. Making a small agent tweak could take days.
Solution: Locally, the Brainstem re-reads the agents folder on every request, so a saved file is live on the very next question. In the cloud, agents live in the Azure File Share's agents/ directory and the Intelligence Layer refreshes them on a five-minute cache. Drop in a new Python file, and it's live instantly.
Real-World Example: Field Sales Route Optimization
Scenario: Customer requests a change to route optimization logic at 2 PM.
Traditional Approach: 3-5 days for code change → testing → approval → deployment.
This Architecture:
- Update
dynamic_route_planning_agent.pylocally - Save it in the Brainstem's agents folder, or upload it to the Azure File Share's agents/ directory
- Locally the next request loads it immediately; in Azure it is live within five minutes
Result: Customer sees the change in minutes with zero downtime.
2. Universal Context Across All Channels
Problem: User tells AI something at work. They go home and use a different app. The AI has amnesia.
Solution: Memory is stored by user_guid in Azure File Storage, not tied to any interface. Whether they're in Teams at work, using a web app at home, or talking on their Apple Watch in the car, the AI has full context.
memory/
├── abc123-user-guid/
│ ├── conversation_history.json
│ ├── preferences.json
│ ├── agents/
│ │ ├── custom-agent-1.py
│ │ └── custom-agent-2.py
│ └── workflows/
│ └── daily-routine.json
└── xyz456-user-guid/
├── conversation_history.json
└── ...
3. Stateless Intelligence Layer = Infinite Scale
The Azure Function that powers the Intelligence Layer is completely stateless. Every request is self-contained:
- Load user memory from Storage Layer
- Load required agents from Storage Layer
- Execute agent logic
- Save updated memory back to Storage Layer
- Return response
Benefit: Horizontal scaling is trivial. Need to handle 10,000 concurrent users? Spin up 10,000 function instances. Azure handles it automatically.
4. Graceful Degradation
Because agents are modular and loaded independently, failures are isolated:
- One agent breaks? Only that capability is lost. Other agents still work.
- Copilot Studio goes down? Backend still works. Connect via direct API.
- File Storage has latency? Implement local caching in the function.
Real-World Example: Production Resilience
Every morning, the developer runs diagnostic tests to verify system health - asking "how capable are you today?" like the Blade Runner test. If an expected test doesn't trigger, the modular architecture makes it immediately clear which layer has failed: is the agent not loading from storage? Is the Copilot routing broken? Or is there a Power Automate connection issue?
The user can diagnose exactly which layer failed:
- Assistant working, memory working, but agent not loading? → Storage Layer issue
- Agents loading but wrong responses? → Intelligence Layer prompt issue
- Can't route to Teams? → Orchestration Layer configuration
Technical Implementation Details
Intelligence Layer: The "Waiter" Pattern
The core intelligence is modeled like a restaurant:
- The Assistant is the waiter - talks to the customer (user)
- The Agents are the kitchen staff - make the pizza, burger, etc.
- The User doesn't need to know how the kitchen works
Why this matters: Context efficiency. The waiter's conversation with the kitchen (agent calls) is completely separate from the conversation with the customer. The user doesn't see "Calling DynamicRoutePlanningAgent..." debug logs.
# Stateless Azure Function (~1,000 lines total)
def handle_request(user_message, user_guid):
# 1. Load context
memory = storage.read_file(f"memory/{user_guid}/conversation_history.json")
# 2. Dynamically load agents
available_agents = []
for agent_file in storage.list_files(f"memory/{user_guid}/agents/"):
agent = dynamically_import(agent_file)
available_agents.append(agent)
# 3. Build system prompt with agent metadata
system_prompt = f"""
You are an AI assistant. You have access to these tools:
{json.dumps([agent.metadata for agent in available_agents])}
Use tools when needed by outputting:
TOOL_CALL: agent_name(param1="value1", param2="value2")
"""
# 4. LLM decides which agent to call
llm_response = openai_client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_message}
]
)
# 5. If tool call detected, execute agent
if "TOOL_CALL:" in llm_response:
agent_call = parse_tool_call(llm_response)
agent = next(a for a in available_agents if a.name == agent_call.name)
result = agent.perform(**agent_call.params)
# 6. Feed result back to LLM for user-friendly response
final_response = openai_client.chat.completions.create(
messages=[
...memory,
{"role": "assistant", "content": llm_response},
{"role": "tool", "content": result},
{"role": "user", "content": "Provide a user-friendly summary"}
]
)
# 7. Save updated conversation
memory.append({"role": "user", "content": user_message})
memory.append({"role": "assistant", "content": final_response})
storage.write_file(f"memory/{user_guid}/conversation_history.json", memory)
return final_response
Agent Metadata: Self-Documenting Tools
Every agent describes itself using JSON Schema. The Intelligence Layer reads this metadata and generates the system prompt dynamically.
class DynamicRoutePlanningAgent(BasicAgent):
def __init__(self):
self.name = "DynamicRoutePlanning"
self.metadata = {
"name": self.name,
"description": "Optimizes field sales routes based on priority, location, and time constraints",
"parameters": {
"type": "object",
"properties": {
"salesperson_id": {
"type": "string",
"description": "ID of the salesperson"
},
"date": {
"type": "string",
"description": "Date for route planning (YYYY-MM-DD)"
},
"priority_accounts": {
"type": "array",
"description": "List of high-priority account IDs",
"items": {"type": "string"}
}
},
"required": ["salesperson_id", "date"]
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs):
# Implementation here
salesperson = kwargs.get('salesperson_id')
date = kwargs.get('date')
priorities = kwargs.get('priority_accounts', [])
# Business logic: optimize route
optimized_route = calculate_optimal_route(salesperson, date, priorities)
return f"Optimized route for {date}: {optimized_route}"
Key Insight: Because agents self-document, the LLM automatically knows when to call them. You can add 100 new agents and the system adapts with zero code changes to the Intelligence Layer.
Why Not Use Copilot Studio's Built-In AI Capabilities?
Problem: No access to the full system message in Copilot Studio. Can't fully control the prompt engineering that makes agents work reliably.
Key insight: The fundamental limitation of Copilot Studio's built-in AI is the lack of system message control. Without access to customize the system message, you cannot fine-tune the prompt engineering that makes agents perform reliably in this RAPP framework.
Solution: Use Copilot Studio for what it's great at (channels, UI, routing) and keep intelligence in a custom Azure Function where you have full control.
Core Principles
The "Buzz Saw + Human Taste" philosophy that makes this framework work at scale.
The Buzz Saw: Heavy Lifting (Building Toward Automation)
Current State
This framework is currently manual-first with a roadmap to automate key steps. We're building the "buzz saw" step by step, proving each process manually before automating it.
Traditional development is like a handsaw. Slow, manual, requires constant human energy. You can only cut so fast, and you get tired.
The vision: AI automation as a buzz saw. Fast, tireless, and you can just "lay on it" with more work. Feed it transcripts, feed it MVPs, feed it feedback - it keeps processing.
Real-World Example: The 60 Agent Test
Challenge: Generate 60 agents to prove the automation works.
Timeline: When leadership provided a list of 60 agents to test the automation capability, the developer generated all 60 production-ready agents during a lunch break - proving the system could scale agent creation from months to hours.
Result: 60 production-ready agents in ~1 hour while eating lunch. Manual development would have taken months.
Where We're Building Automation (Automation Roadmap):
- Transcript → Project JSON: Extract customer name, stakeholders, MVP, competing solutions, timeline from raw transcript (currently manual)
- MVP → Agent Code: Generate 6-10 Python agents from a validated MVP use case (currently manual)
- Prototype → Video Demo: Create narrated demo video with Azure TTS from prototype walkthrough (currently manual)
- Customer Feedback → Code Updates: Adjust agent logic based on feedback without rewriting from scratch (currently manual)
- Parallel Processing: Work on 20+ projects simultaneously with tooling and documentation (building capacity)
Human Taste: The Critical Quality Gates
The Problem: AI can generate code fast, but it doesn't have judgment. It doesn't know if the code solves a real problem, if it's secure, or if customers will actually pay for it.
The Solution: 6 human "quality gates" where experienced team members apply taste, judgment, and experience to keep the project on track.
Key Insight
It's not about avoiding manual work - it's about avoiding tedious, low-value manual tasks. What's critical is maintaining control over quality and judgment calls. Having good taste matters. The key questions are: Is this actually useful? Based on experience, does this truly solve the problem we're facing?
The 6 Quality Gates:
| Gate | Human Decision | Why It Matters |
|---|---|---|
| Gate 1: Transcript Audit | Did we extract the right problem? | Prevents building the wrong thing from day one |
| Gate 2: Customer MVP Validation | Does the customer agree this is the MVP? | Locks scope before any code is written - eliminates 3-week wasted cycles |
| Gate 3: Code Quality Review | Are the generated agents secure and correct? | Catches logic errors, security issues, integration problems (high pass rate) |
| Gate 4: Demo Review | Is this ready to show the customer? | "First impressions matter" - polish messaging and flow before customer sees it |
| Gate 5: Final Demo Review | Is this feedback in scope or scope creep? | Prevents endless iterations - decide what's in/out of MVP |
| Gate 6: Security & Compliance Sign-off | Will IT, Security and Compliance let this go live? | Blocks a prototype from becoming a production liability. Step 14 then tracks usage, bugs and satisfaction after launch. |
The Magic: Each gate takes 15-60 minutes of human time, but prevents days or weeks of wasted AI cycles.
The Risk Elimination Pattern
The biggest risk in traditional software development: spending 6 months on a problem no one cares about.
How This Framework Eliminates That Risk:
Traditional Approach
- Week 1-2: Requirements gathering
- Week 3-6: Design and architecture
- Week 7-20: Development
- Week 21-24: Testing and bug fixes
- Week 25: Customer says "This isn't what we meant"
This Framework
- Day 1: Discovery call (transcript)
- Day 2: Send MVP "poke" to customer
- Day 3-4: Customer validates or provides feedback
- Day 5: Generate agents based on locked MVP
- Day 6: Customer sees working prototype
- Day 7-10: Iterations based on real feedback
Key Insight: By getting customer validation at Step 3 (MVP "poke") and again at Step 8 (working demo), you've had 2 major checkpoints before investing serious time. If they don't like it, you've only spent a few days, not months.
Real-World Example: The "Poke" Methodology
What is a "poke"? A deliberately lightweight MVP summary sent to the customer before any code is written.
The concept: Create a stripped-down MVP summary to send to the customer - a "poke" that says "this is what I think I heard." This lightweight validation serves two purposes: it confirms understanding before any code is written, and the customer's response provides feedback that informs what the AI will build. This early engagement catches misunderstandings before they become expensive mistakes.
Why it works: Customer can respond with "Yes that's it" or "No, you misunderstood - here's what we actually need." Either way, you know BEFORE writing code.
Iterations ≠ Experience - It's About Cycles
Traditional Thinking: "I've been doing this for 10 years, so I have 10 years of experience."
Reality: Experience isn't measured by time spent - it's measured by the number of learning cycles completed. Ten years with few iterations is less valuable than two years with hundreds of rapid feedback loops.
The Iteration Advantage
Scenario A: Developer with 10 years experience, working on 1 project per year = 10 iterations total
Scenario B: Developer using this framework, working on 20 projects in parallel per month = 240 iterations per year
Result: Scenario B gains 24x more learning in the same time period. This compounds exponentially.
How This Framework Maximizes Iterations:
- Parallel Processing: Work on 20+ projects simultaneously
- Fast Feedback Loops: Days instead of months per cycle
- Structured Quality Gates: Spot issues early, iterate faster
- Pattern Recognition: See the same problems across multiple industries, learn universal solutions
Real Impact: In 6 months using this framework, you'll encounter more edge cases, customer objections, integration challenges, and solution patterns than most developers see in 5 years of traditional development.
Common Pitfall: Skipping the Quality Gates
Temptation: "The AI generated the code in 5 minutes, let's just ship it!"
Reality: Without human quality gates, you'll ship code that:
- Solves the wrong problem (no MVP validation)
- Has security vulnerabilities (no code review)
- Fails customer expectations (no demo review)
- Never gets used (no post-deployment metrics)
The Fix: Think of quality gates as "compression points" where you invest 15-60 minutes to save days or weeks of rework.
Gut Check: Core Principles
What is the PRIMARY purpose of the 6 human quality gates in this framework?
Step 1: Discovery Call
Capture the customer's biggest problems in their own words - this transcript becomes the foundation for everything.
MANUALObjective
Record and transcribe a customer conversation that identifies: (1) their biggest business problems, (2) the data sources they have access to, and (3) how they currently solve the problem manually.
Duration
30-60 minutes - One focused conversation with the decision maker(s)
Owner
Field Team (Team Members A, B, C, D) - Anyone who interfaces with customers
The Three Critical Questions
Discovery Philosophy
The approach is to start with open-ended business problem discovery: "What are the biggest problems with your business?" This question creates a crucial mindset shift - focusing on business pain points rather than technology solutions. By leading with problems instead of AI capabilities, you ensure the automation serves real business needs.
Question 1: What are your biggest problems?
Why this matters: Focuses on business value, not technology. Customer describes pain in their own language.
Real-World Example: Field Sales Operations
Customer's problem statement: Field sales representatives struggle with three critical questions every day: Where should we go? What order should we visit our stops? And what should we do when we get there?
Why this is perfect: Specific, measurable, impacts daily operations. Not "we need AI" or "we want to innovate."
Question 2: What data sources do you have?
Why this matters: AI without data is useless. Need to know what's realistic to access.
Key point: Identify what data sources are required to solve the problem, with a clear caveat up front: if data access isn't available, the project's potential is severely limited. AI systems need data to function effectively - this is a non-negotiable requirement that must be established during discovery.
- CRM systems: Dynamics 365, Salesforce, custom systems
- Document repositories: SharePoint, OneDrive, file shares
- Operational systems: Inventory, scheduling, ticketing systems
- External APIs: Weather, traffic, market data
Question 3: How do you solve this manually today?
Why this matters: The manual process is the blueprint for automation. You're scaling what they already do, not inventing something new.
Key point: The core principle is scaling and automating the existing manual process - not inventing an entirely new workflow. This approach reduces risk and increases adoption because users recognize their familiar process, just faster and more consistent.
Detailed Example: Job Matching Process
Customer description: The company offers numerous job opportunities and uses WhatsApp as their primary applicant communication channel. They need a bot that can analyze applicant resumes (from LinkedIn or uploaded files) and match them with the most suitable job opportunities from their extensive catalog.
Manual process breakdown:
- Receive resume via WhatsApp
- HR person reviews resume manually
- Searches job database for matching criteria
- Sends 3-5 job options back to candidate
- Candidate selects one, HR submits to internal system
This becomes the automation blueprint.
How to Conduct the Call
Before the Call:
- Ensure recording is enabled (Teams auto-transcribe, or use Otter.ai)
- Inform participants the call will be recorded
- Have 1-2 key decision makers on the call (not 10 people)
During the Call:
- Let them talk: Your job is to extract their knowledge, not pitch technology
- Ask clarifying questions: "Walk me through exactly what the end user does when they get this request"
- Get specific: Not "we have inefficiencies" but "it takes 20 hours per week to process NDAs manually"
- Note competing solutions: "We looked at Salesforce Agentforce" - this goes into project tracking
- Confirm data access: "Can you give us read access to your Dynamics environment?"
Red Flags to Watch For:
Warning Signs This Won't Work
- "We just want to try AI" - No specific problem = no MVP
- "We can't share any data" - AI needs data to work
- "We have 50 different problems" - Need ONE focused MVP to start
- "We're not sure who the decision maker is" - Get the right person on the call
Output
Deliverable
- Recording file: MP4 or audio file from Teams/Zoom
- Transcript file: Auto-generated .txt or .docx from meeting platform
- Key stakeholders identified: Names and roles mentioned in call
File format: Plain text transcript is ideal. If using Teams, the .vtt file works. Just needs to be readable by the next step's automation.
Pro Tip: The "Can We Solve This?" Litmus Test
At the end of the call, ask yourself: "If I had 6 Python agents and access to their data, could I build a prototype that solves this problem?"
If yes → Move to Step 2 (Audit)
If no → Schedule follow-up to get more specific requirements
Go deeper: Step 1 in the RAPP/1 reference vault, with the protocol behind it.
Step 2: Audit - Transcript Analysis
Quality Gate #1: Verify we extracted the right problem before building anything.
QUALITY GATE #1Objective
Use the Transcript-to-Project Agent to automatically extract structured project data from the raw transcript, then human audit to verify accuracy before proceeding.
Duration
15 minutes - AI processes transcript instantly, human reviews output
Owner
Delivery Team (Team Members A, B) - People who will build the solution need to confirm they understand the problem
Automation Tool: Transcript-to-Project Agent
Type: M365 Copilot Studio Declarative Agent
Location: Open Transcript-to-Project Agent
You are a project data extraction assistant. Analyze the meeting transcript below and extract structured project information in JSON format that can be imported into the AI Agent Implementation Tracker.
**REQUIRED OUTPUT FORMAT:**
Return valid JSON with this exact structure (copy this template and fill in the values):
{
"projects": [{
"id": "[current Unix timestamp - use Date.now()]",
"customerName": "[Legal entity name of the customer]",
"status": "[MUST be one of: planning, poc, active, production, completed]",
"type": "[MUST be one of: legal, hr, it, compliance, customer-service, sales, finance, other]",
"description": "[One sentence describing the overall AI implementation]",
"stakeholders": "[Names with titles, comma-separated. Example: John Smith (VP Legal), Jane Doe (IT Director)]",
"competingSolution": "[What solution are they comparing us to? e.g., Salesforce, ServiceNow, or leave empty if none]",
"agents": ["[AgentName1]", "[AgentName2]", "[etc - PascalCase, no spaces]"],
"mvpUseCase": "[The single focused first use case name, e.g., 'NDA Automation Bot']",
"mvpDescription": "[2-3 sentences: What will the MVP specifically do?]",
"mvpTimeline": "[Target deadline or timeframe, e.g., '6 weeks POC' or 'Q2 2025']",
"notes": "[Important context: competing details, latency requirements, risk factors, strategy notes]",
"createdDate": "[Today's date in YYYY-MM-DD format]",
"updatedDate": "[Today's date in YYYY-MM-DD format]"
}]
}
**INSTRUCTIONS:**
1. Extract ALL relevant information from the transcript
2. For "agents" array: List agent names in PascalCase (e.g., ContractGeneration, not "contract generation")
3. For "status": Use "planning" unless they explicitly said POC has started
4. For "type": Choose the closest match from the allowed values
5. Be specific in mvpDescription - what exactly will the MVP do?
6. Include contract/budget details even if approximate
**TRANSCRIPT TO ANALYZE:**
[PASTE YOUR MEETING TRANSCRIPT HERE]
After you provide the JSON, I will copy it and import it into the Project Tracker Tool.
What it does: Extracts customer name, stakeholders, competing solutions, MVP use case, timeline, and generates structured JSON for project tracking.
How to Use:
- Open Copilot Studio and load the Transcript-to-Project Agent
- Paste the entire meeting transcript into the chat
- Agent returns structured JSON with all extracted fields
- Copy JSON to project tracking system or save as
[customer]-project.json
Analyze this transcript: Met with Acme Insurance today about their legal operations. VP Legal and Legal Operations Manager discussed replacing their current contract system. They want to start with NDA automation as the MVP. Main concern is contract routing and approval workflows. They want a POC in 6 weeks focusing on contract generation, analysis, and automated routing.
{
"id": "1735840999",
"customerName": "Acme Insurance",
"status": "planning",
"type": "legal",
"description": "Legal operations AI bot for contract automation",
"stakeholders": "VP Legal, Legal Operations Manager",
"competingSolution": "Salesforce",
"agents": ["ContractTemplate", "ContractAnalysis", "ContractRouting"],
"mvpUseCase": "NDA Automation Bot",
"mvpDescription": "Automated NDA generation, analysis, and routing with approval workflows",
"mvpTimeline": "6 weeks POC",
"notes": "Competing with Salesforce, focus on contract automation. Latency requirement under 2 seconds.",
"createdDate": "2025-10-15",
"updatedDate": "2025-10-15"
}
✓ Human Audit Checklist
The AI extracted data - now verify it's correct:
- Customer name: Is this the correct legal entity name?
- Stakeholders: Are all decision makers captured with correct titles?
- MVP use case: Does this match what the customer actually said?
- Competing solutions: Did we note who they're comparing us to?
- Timeline: Is the deadline realistic and confirmed by customer?
- Data sources: Are the systems they mentioned captured?
Common Corrections Needed
- AI says: "ContractManagement" agent | You correct: Need 3 separate agents (Generation, Analysis, Routing)
- AI says: Status = "active" | You correct: Status = "planning" (not building yet)
- AI says: Timeline "ASAP" | You correct: Timeline "6 weeks for POC, Q1 2025 for production"
Decision Point
Pass: JSON accurately represents the customer problem → Proceed to Step 3
Fail: Key information missing or incorrect → Schedule follow-up call to clarify
Do NOT Proceed If:
- MVP use case is vague ("improve efficiency" - not specific enough)
- No data sources identified (AI needs data)
- Decision maker not on the call (need buy-in from the person who signs contracts)
- Problem is "nice to have" not "must solve" (won't get budget/priority)
Better to stop here than waste 3 weeks building the wrong thing.
Output
Deliverable
- Validated project JSON: Saved as
[customer]-project.json - Audit sign-off: Team member initials + timestamp confirming accuracy
- Go/No-Go decision: Documented for next step
Why This Gate Matters
Time saved: 15 minutes here prevents 3 weeks of building the wrong solution.
Real impact: Traditional software development risks spending months building solutions for problems that don't actually matter to stakeholders. The audit gate eliminates this risk by validating stakeholder commitment and problem importance before any development begins.
Go deeper: Step 2 in the RAPP/1 reference vault, with the protocol behind it.
Step 3: Generate MVP "Poke"
Send the customer a lightweight MVP summary to confirm we heard them correctly - BEFORE writing any code.
MANUALObjective
Generate a clear, concise MVP summary and send it to the customer for validation. This "poke" tests if we understood their problem correctly before investing time in development.
Duration
1-2 hours (manual) - Team member drafts MVP document from project JSON using templates and examples
Owner
Delivery Team - Manual process with plan to automate using LLM-based generation
What is a "Poke"?
A poke is a deliberately lightweight MVP summary - usually 1-2 pages - that describes what you think the customer needs in plain business language.
The "Poke" Concept
The "poke" is a deliberately lightweight MVP summary sent to validate understanding: "This is what I think I heard - is this correct?" This simple document serves as both a customer validation checkpoint and the exact specification that guides AI prototype generation. Getting customer confirmation on the poke ensures the AI builds the right solution.
Why "Poke" Instead of "Requirements Document"?
- Lightweight: 1-2 pages, not 20 pages of requirements
- Plain language: Written for business stakeholders, not engineers
- Invites feedback: "Did we hear you right?" not "Sign off on these requirements"
- Fast turnaround: Sent within 24 hours of discovery call
What Goes In The Poke
Section 1: Problem Statement (2-3 sentences)
Example: Field Sales Route Planning
"Your field sales teams currently spend 2-3 hours per day planning routes manually and deciding which accounts to visit in what order. This results in inefficient routes, missed high-priority accounts, and inconsistent coverage. We heard that solving this routing problem would save each salesperson 10-15 hours per week."
Section 2: Proposed MVP Solution (3-4 bullet points)
- What it does: AI agent that generates optimized daily routes based on account priority, location, and time constraints
- Key capabilities:
- Pulls account data from your CRM automatically
- Prioritizes high-value accounts and urgent visits
- Generates turn-by-turn route with estimated times
- Accessible via Teams mobile app (no new app to install)
- What it doesn't do (scope boundaries): Not replacing your CRM, not doing GPS navigation, not scheduling appointments (just optimizing visits)
Section 3: Data Requirements (simple list)
- Read access to Dynamics 365 Sales (account locations, priority flags)
- Last visit date per account
- Salesperson territories and working hours
Section 4: Success Metrics (how we'll measure success)
- Reduce route planning time from 2-3 hours/day to 5 minutes/day
- Increase daily store visits from average 6 to 8-9 per salesperson
- 100% coverage of high-priority accounts weekly (currently 70%)
Section 5: Timeline & Next Steps (simple roadmap)
- Week 1-2: Build prototype with 1 salesperson territory as test
- Week 3: Demo to your team, gather feedback
- Week 4-6: Refine based on feedback, pilot with 5 salespeople
- Week 7-8: Full rollout to all field sales teams
Automation Process
This step uses the project JSON from Step 2 and an LLM prompt template to generate the poke document:
Generate an MVP "poke" document based on this customer project JSON: [Insert validated project JSON from Step 2] The document should be: - 1-2 pages maximum - Written in plain business language (not technical jargon) - Structured as: Problem Statement, Proposed Solution, Data Requirements, Success Metrics, Timeline - Specific and measurable (not vague "improve efficiency") - Include scope boundaries (what we're NOT building) - End with clear next steps for customer to respond Tone: Professional but approachable. We're confirming we heard them correctly, not pitching a solution.
Output: LLM generates a formatted document (Word .docx or PDF) ready to send to customer
Delivery to Customer
Field team (whoever did the discovery call) sends the poke via email:
Example Email Template
Subject: Retail Field Sales Routing - MVP Summary for Review
Body:
Hi [Stakeholder],
Thanks for the great discussion yesterday about optimizing your field sales routes. I've attached a brief summary of what I heard as the MVP we'd build to solve this problem.
Can you review and let me know:
- Did we capture the problem correctly?
- Is this MVP scope what you had in mind, or should we adjust?
- Are the data sources we listed accessible?
- Any concerns or questions before we proceed?
If this looks good, we can have a working prototype ready to demo in 2 weeks.
Best,
[Your name]
Output
Deliverable
- MVP Poke Document: 1-2 page summary in Word/PDF format
- Email to customer: Sent with document attached, awaiting response
- Timeline started: Clock starts on customer response SLA (usually 2-3 days)
Why This Step is Critical
Time investment so far: 1 hour discovery call + 15 min audit + overnight automation = 1.25 hours of human time
Potential time saved: If customer says "no that's not what we meant," you've saved 3-6 weeks of building the wrong thing
Important principle: The customer's response to the poke becomes crucial feedback for agent development. Any additional details they provide - like "our HR system is actually split across 3 instances" - represents the first feedback cycle before a single line of code is written. This early correction prevents building on faulty assumptions.
Go deeper: Step 3 in the RAPP/1 reference vault, with the protocol behind it.
Step 4: Audit - Customer Validation
Quality Gate #2: Customer signs off on MVP scope before any code is written.
QUALITY GATE #2Objective
Get explicit customer confirmation that the MVP poke accurately describes what they need. Lock in scope with stakeholder sign-off.
Duration
1-2 days - Waiting for customer to review and respond to the poke
Owner
Field Team - Manages customer communication and captures feedback
Three Possible Outcomes
Outcome 1: ✓ "Yes, that's exactly right"
Next steps:
- Document customer sign-off (email confirmation + stakeholder names)
- Lock MVP scope in project tracker (mark as "Approved - Ready for Development")
- Proceed immediately to Step 5 (Generate Agent Code)
Perfect Customer Response Example
Email reply: "Yes, this MVP captures exactly what we discussed. The scope looks right, data access is no problem, and the 2-week timeline for a prototype works for us. Go ahead and build it!"
Why this is ideal: Explicit approval, no scope changes, confirmed data access, agreed timeline. Ready to build.
Outcome 2: "Close, but here's what needs to change"
Next steps:
- Capture ALL feedback in writing (don't rely on verbal/phone conversation)
- Feed feedback back to LLM: "Update MVP poke with these customer corrections: [paste feedback]"
- Generate revised poke v2 and re-send to customer
- Repeat Step 4 until you get Outcome 1 (customer approval)
Feedback Handling Example
Customer feedback: "The route optimization part is right, but we also need the agent to check inventory levels at each store and suggest which products to stock up. Can that be in the MVP?"
Your decision tree:
- Option A: "Yes, we can add inventory checking to MVP" → Update poke, re-send
- Option B: "That's a great idea for Phase 2, but let's start with just route optimization to get you value faster" → Negotiate scope
Key principle: New requirements often change the agent architecture. What started as 5 agents might become 6 agents, with a new specialized agent handling the additional requirement. This modular flexibility allows you to adapt the design based on customer feedback without rearchitecting the entire system.
Outcome 3: ✗ "This isn't what we need"
Next steps:
- Schedule follow-up discovery call to re-clarify requirements
- Go back to Step 1 - you missed something fundamental in the initial conversation
- DO NOT proceed to development - you'll build the wrong thing
Red Flag: Scope Creep Starts Here
Warning signs:
- "Can we also add [10 more features]?"
- "Actually, now that I think about it, we need [completely different thing]"
- "My boss just told me we also need [out-of-scope requirement]"
Solution: Use the poke as a scope boundary tool. Say: "Great ideas for Phase 2, but let's lock in this MVP first, get it deployed and working, then we can expand."
Audit Checklist Before Proceeding
Before marking this step complete and moving to Step 5, verify:
- Written confirmation: Customer email/message explicitly approving MVP scope
- Stakeholder sign-off: Decision maker (person who approves budget) has approved, not just end users
- Data access confirmed: Customer confirmed we'll get access to the data sources listed
- Timeline agreed: Customer understands and accepts the prototype delivery timeline
- Scope locked: No vague "we'll figure it out later" items - everything is defined
Output
Deliverable
- Customer approval email: Saved to project folder as proof of scope agreement
- Final MVP poke v2/v3: With all customer feedback incorporated
- Updated project JSON: Status changed to "mvp-locked" with approval date
- Green light for development: Official go-ahead to generate agent code
This is The Most Important Gate
Why: Every subsequent step builds on the assumption that the MVP is correct. If the MVP is wrong, everything downstream is wasted effort.
Time invested through Step 4: ~2 hours of human time + 1-2 days of customer response time
Risk eliminated: Building the wrong solution for 3-6 weeks = hundreds of hours saved
Risk mitigation: By Step 6, you have working code with locked scope and customer approval on the requirements. If the customer ultimately decides the solution isn't right, you've only invested a few days rather than months - dramatically reducing the cost of failure.
Go deeper: Step 4 in the RAPP/1 reference vault, with the protocol behind it.
Step 5: Generate Agent Code
Use the RAPP Agent Generator to create production-ready Python agents from the locked MVP.
MANUALBusiness Summary
Current state: Team manually creates agent code using templates and patterns. Vision: AI-assisted generation to accelerate development.
Goal, met: agent development was 2-3 weeks per agent when this step was written, with hours as the target. It is now minutes, against a library of 72 published patterns. See Speed Barriers Broken for the measurements.
Objective
Create the agent the MVP needs. In practice that is one well-scoped single-file agent exposing several deterministic operations, which is the shape 70 of the 72 published solutions use; split into a multi-agent stack only when the use case genuinely spans separate roles. Each agent is self-documenting, modular, and ready to drop into the Azure Function. (Currently manual development with templates; building toward AI-assisted generation)
Build it as a shell template: the agent's shape stays the same for every customer with this job, and the customer's specifics (which system holds the records, who approves) are content it reads live, never values copied into the code.
Duration
Minutes. A scaffolded agent is generated, smoke-tested and hot-loaded in about fifteen seconds; a hand-written one is live the moment you save the file. Writing the business logic inside it is still the real work.
Then: days to weeks, hand-written, with "reduce to hours" as the goal. That figure is kept in Speed Barriers Broken as the baseline this step was measured against.
Owner
Technical Team - Manual development using templates. Vision: AI-assisted generation with human review
Development Tool: RAPP Agent Generator
Location: Open RAPP Agent Generator
You are a Python agent code generator for the Microsoft AI BAST RAPP framework. Generate production-ready agent code that follows the BasicAgent pattern and can be deployed to Azure Functions.
**CRITICAL REQUIREMENTS:**
1. Each agent must inherit from BasicAgent
2. Class name: PascalCase (e.g., ContractGenerationAgent)
3. self.name: PascalCase with NO SPACES (e.g., "ContractGeneration")
4. All perform() methods MUST return strings, never dicts or None
5. Error handling: Return descriptive error strings, never raise exceptions
6. Include complete JSON Schema metadata for self-documentation
7. Keep each agent focused on ONE capability. Published agents run roughly 180-960 lines, median about 400
8. Follow the exact pattern shown in the framework documentation
**CODE TEMPLATE TO FOLLOW:**
```python
from agents.basic_agent import BasicAgent
import logging
import json
class YourAgentNameAgent(BasicAgent):
def __init__(self):
self.name = "YourAgentName" # NO SPACES!
self.metadata = {
"name": self.name,
"description": "Clear description of when to call this agent and what it does",
"parameters": {
"type": "object",
"properties": {
"param1": {
"type": "string|integer|array|etc",
"description": "What this parameter is for"
}
},
"required": ["param1"]
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs):
"""
What this method does.
Returns: String describing the result
"""
# Extract and validate parameters
param1 = kwargs.get('param1')
if not param1:
return "Error: param1 is required"
try:
# Your logic here
result = "Success: description of what happened"
return result
except Exception as e:
return f"Error in {self.name}: {str(e)}"
```
**GENERATE AGENTS FOR THIS MVP:**
**Use Case:** [DESCRIBE THE MVP USE CASE]
**Capabilities Needed (one agent per capability):**
1. [First capability - e.g., "Generate contracts from templates"]
2. [Second capability - e.g., "Analyze contract risks and compliance"]
3. [Third capability - e.g., "Route contracts for approval workflow"]
**Data Sources:**
[LIST: Dynamics 365, SharePoint, Azure File Storage, SQL Database, etc.]
**Special Requirements:**
[IMAGE PROCESSING? LATENCY REQUIREMENTS? SPECIFIC INTEGRATIONS? EXTERNAL APIs?]
**OUTPUT FORMAT:**
For each agent, provide:
1. Complete Python file contents (ready to save as [agent_name]_agent.py)
2. File name suggestion
3. Brief description of what the agent does
4. Any dependencies or setup notes
Generate all agents now.
Planned Type: M365 Copilot Studio Declarative Agent
Vision: Generate complete Python agent code following the BasicAgent pattern with JSON Schema metadata, error handling, and Azure integration.
Manual Process:
- Review the approved MVP poke + project JSON from Step 4
- Identify required agent capabilities from MVP description
- Use existing agent templates from Customers/ directory as starting point
- Manually code each agent following the BasicAgent pattern
- Save each file as
[agent_name]_agent.pyin customer directory - Test agents locally before proceeding to Step 6
Future Automation Vision:
The RAPP Agent Generator will auto-generate agent code from MVP JSON, reducing development time from days to minutes.
Generate Python agents for this MVP: **Use Case:** Field sales route optimization **Capabilities Needed:** 1. Dynamic route planning based on account priority and location 2. Shelf recognition using computer vision to check product placement 3. Promotion suggestions based on sales data 4. Next best action recommendations for sales reps **Data Sources:** - Dynamics 365 CRM (accounts, locations, visit history) - Azure File Storage (shelf images from mobile uploads) - Sales transaction database **Requirements:** - Each agent must follow BasicAgent pattern - Include JSON Schema metadata for self-documentation - Handle errors gracefully (return string, never throw exceptions) - Support Azure File Storage for image processing agents - All agents must return strings, not dicts or None
Generated Agent Structure
Each agent follows this standard pattern (the local server is about 3,500 lines and the Azure Function about 1,000, agents run roughly 180-960 lines, median about 400):
from agents.basic_agent import BasicAgent
import logging
import json
class DynamicRoutePlanningAgent(BasicAgent):
def __init__(self):
self.name = "DynamicRoutePlanning" # No spaces!
self.metadata = {
"name": self.name,
"description": "Optimizes field sales routes based on priority, location, and time constraints. Call this when a salesperson needs their daily route planned.",
"parameters": {
"type": "object",
"properties": {
"salesperson_id": {
"type": "string",
"description": "ID of the salesperson needing route optimization"
},
"date": {
"type": "string",
"description": "Date for route planning (YYYY-MM-DD format)"
},
"priority_accounts": {
"type": "array",
"description": "List of high-priority account IDs to prioritize",
"items": {"type": "string"}
},
"max_visits": {
"type": "integer",
"description": "Maximum number of visits for the day",
"minimum": 1,
"maximum": 20
}
},
"required": ["salesperson_id", "date"]
}
}
super().__init__(name=self.name, metadata=self.metadata)
def perform(self, **kwargs):
"""
Generates optimized route for a salesperson's day.
Returns: String with route details
"""
# Extract parameters
salesperson_id = kwargs.get('salesperson_id')
date = kwargs.get('date')
priority_accounts = kwargs.get('priority_accounts', [])
max_visits = kwargs.get('max_visits', 10)
# Validate required parameters
if not salesperson_id or not date:
return "Error: salesperson_id and date are required parameters"
try:
# 1. Fetch accounts for this salesperson's territory
accounts = self._get_territory_accounts(salesperson_id)
# 2. Filter by priority if specified
if priority_accounts:
accounts = [a for a in accounts if a['id'] in priority_accounts]
# 3. Optimize route (calls internal optimization logic)
optimized_route = self._calculate_optimal_route(
accounts, max_visits, date
)
# 4. Format response as string (NEVER return dict or None!)
result = f"Optimized route for {salesperson_id} on {date}:\\n"
result += f"Total stops: {len(optimized_route)}\\n"
result += f"Estimated time: {self._estimate_route_time(optimized_route)} hours\\n\\n"
for idx, stop in enumerate(optimized_route, 1):
result += f"{idx}. {stop['account_name']} ({stop['address']})\\n"
result += f" Priority: {stop['priority']} | ETA: {stop['eta']}\\n"
return result
except Exception as e:
logging.error(f"Route planning failed for {salesperson_id}: {str(e)}")
return f"Error generating route: {str(e)}"
def _get_territory_accounts(self, salesperson_id):
"""Fetch accounts from CRM for this salesperson's territory"""
# Implementation: Query Dynamics 365 or mock data
return []
def _calculate_optimal_route(self, accounts, max_visits, date):
"""Optimize visit order based on location and priority"""
# Implementation: TSP algorithm or heuristic
return []
def _estimate_route_time(self, route):
"""Calculate total travel + visit time"""
# Implementation: Distance/time calculations
return 0
Key Features the Generator Includes:
- JSON Schema metadata: Self-documenting for the LLM
- Parameter validation: Required params checked upfront
- Error handling: Try/except with logging, always returns string
- Helper methods: Private methods (_method_name) for complex logic
- Clear descriptions: Explains when to call the agent
Common Customizations After Generation
The generated code is largely production-ready, but you may need to:
Customization Example: Dynamics 365 Integration
Generated (generic):
def _get_territory_accounts(self, salesperson_id):
# TODO: Implement Dynamics 365 query
return []
Customized (specific to customer):
def _get_territory_accounts(self, salesperson_id):
from azure.identity import DefaultAzureCredential
from dynamics_client import DynamicsClient
client = DynamicsClient(
endpoint=os.environ['DYNAMICS_ENDPOINT'],
credential=DefaultAzureCredential()
)
# Customer-specific: Query accounts in territory with last_visit field
accounts = client.query(
"accounts",
filter=f"ownerid eq '{salesperson_id}' and statecode eq 0",
select="accountid,name,address1_composite,priority,last_visit_date"
)
return accounts
The real work: "The hard work for us is basically connecting it to their system, right? And testing of course."
Typical Customizations:
- API endpoints: Replace placeholders with actual customer URLs
- Authentication: Add customer-specific auth (OAuth, API keys, etc.)
- Data schemas: Adjust field names to match customer's CRM/database
- Business logic: Fine-tune algorithms based on customer feedback
Output
Deliverable
- One agent file per capability, named [capability]_agent.py. Underscores, always: the loader globs *_agent.py, so a hyphenated filename is silently never discovered.
- Agent manifest JSON: List of all agents with descriptions
- README: How to deploy these agents to Azure Function
File structure:
agents/ ├── dynamic_route_planning_agent.py ├── shelf_recognition_agent.py ├── promotion_suggestions_agent.py ├── next_best_action_agent.py ├── dynamics_crud_agent.py (helper for CRM operations) └── manage_memory_agent.py (default agent, always included)
The 60 Agent Test
Real example: When leadership provided a list of 60 agents to test the automation capability, the developer accepted the challenge and generated all 60 production-ready agents during a lunch break - demonstrating that the system could scale agent creation from months to hours.
Result: Successfully generated all 60 agents. Most just need minor API endpoint customization.
Go deeper: Step 5 in the RAPP/1 reference vault, with the protocol behind it.
Step 6: Audit - Code Quality Review
Quality Gate #3: Human review of generated code for logic errors, security issues, and integration problems.
QUALITY GATE #3Objective
Technical team reviews the generated agent or agents to verify they're secure, follow best practices, and will integrate correctly with customer systems.
Duration
30-60 minutes - Experienced developer can review 6-10 agents in one sitting
Owner
Technical Team Lead - Someone with Python + Azure experience
✓ Code Review Checklist
1. Security Review
- No hardcoded credentials: All API keys/secrets use environment variables
- Input validation: Required parameters are checked before use
- SQL injection protection: If querying databases, use parameterized queries
- File path sanitization: If reading files, validate paths to prevent directory traversal
2. Error Handling
- Try/except blocks: All external API calls wrapped in error handling
- Logging: Errors logged with context (agent name, parameters)
- Return strings always: Never returns None, dict, or throws exceptions to caller
- Graceful degradation: If one agent fails, others still work
3. Integration Check
- API endpoints: Customer-specific URLs are correct
- Data schema: Field names match customer's actual system
- Authentication: Auth method matches customer's setup (OAuth, API key, cert)
- Dependencies: Any required Python packages listed in requirements.txt
4. Metadata Quality
- Clear descriptions: LLM will understand when to call this agent
- Required params marked: "required" array in JSON Schema is accurate
- Examples in descriptions: Parameter descriptions include example values
- Enum constraints: If param has fixed options, use enum to constrain it
Common Issues to Fix
Issue #1: Returns Dict Instead of String
Generated code (wrong):
return {"status": "success", "route": optimized_route}
Fixed:
return f"Route generated successfully: {json.dumps(optimized_route)}"
Why: The Intelligence Layer expects strings. Dicts cause errors.
Issue #2: Missing Error Context
Generated code (insufficient):
except Exception as e:
return "Error occurred"
Fixed:
except Exception as e:
logging.error(f"Route planning failed for {salesperson_id} on {date}: {str(e)}")
return f"Error generating route for {salesperson_id}: {str(e)}"
Why: Need context for debugging. "Error occurred" doesn't help diagnose issues.
Issue #3: Vague Agent Description
Generated metadata (bad):
"description": "Handles route planning"
Fixed:
"description": "Optimizes daily sales routes for field reps. Call this when a salesperson says 'plan my route' or 'where should I go today'. Considers account priority, location proximity, and visit history to generate optimal stop order."
Why: LLM needs to know WHEN to call the agent and with what parameters.
Review Metrics
Iterative refinement: The code review process involves an interactive conversation with the AI: request consolidation of redundant agents, ask for functionality splits, adjust implementation details - iteratively refining until the agent files meet quality standards.
Decision Point
Pass: All agents reviewed, minor fixes applied → Proceed to Step 7 (Deploy Prototype)
Fail: Major logic errors or missing integrations → Send feedback to RAPP Agent Generator and regenerate
Output
Deliverable
- Reviewed agent code: All 6-10 agents marked as "Approved" with reviewer initials
- Issue log: Any bugs found + fixes applied documented
- Integration notes: Customer-specific config details for deployment
- Green light for deployment: Code ready to run in Azure
Why High Pass Rates?
The framework enforces patterns: BasicAgent template + JSON Schema metadata + error handling requirements = consistent quality
AI learns from examples: RAPP Agent Generator is trained on working agents from previous projects
Modularity helps: Each agent does ONE thing well. Easier to review than monolithic code.
Go deeper: Step 6 in the RAPP/1 reference vault, with the protocol behind it.
Step 7: Deploy Prototype
Get working agents into Azure and M365 Copilot in minutes
Objective
Get the agent answering first. On the local tier there is nothing to deploy: install the server with one command, put the reviewed files in its agents folder, and ask. Promote to Azure Functions and Copilot Studio channels when the customer needs to reach it without your laptop.
Time Investment: minutes locally; 1-2 hours for the cloud tiers, with scripts.
Human Role: Manual Azure resource setup, agent deployment, connectivity verification, testing
Automation Vision: ARM templates and deployment scripts to reduce setup time to minutes
Input from Step 6
What You Have
- Reviewed agent code: 6-10 Python files approved and ready
- Project JSON: Customer context, MVP scope, data sources
- Integration notes: Any customer-specific config (Dynamics on-prem, custom APIs, etc.)
- GitHub repo: microsoft/aibast-agents-library, cloned or forked
Deployment Process (2-Step Setup)
Step 7.1: Deploy Azure Infrastructure
Use the Azure ARM template to create all required resources with one click:
Example: One-Click Azure Deployment
- Go to the repository:
microsoft/aibast-agents-library - Click the Deploy to Azure button in the README, which provisions from azuredeploy.json
- ARM template creates:
- Azure Function App (stateless intelligence layer)
- Azure File Storage (agent code + user memory)
- Application Insights (logging and monitoring)
- All networking and security configs
- Deployment completes in 5-10 minutes
One-click deployment: The Azure ARM template automatically provisions all required Azure infrastructure - Function App, Storage, App Insights, networking, and security configurations - without requiring manual Azure portal navigation. The deployment is fully automated and customer-facing users don't need to understand the underlying infrastructure.
Step 7.2: Run Setup Script
Execute the bash/PowerShell script that configures the environment:
# Option 1: Local setup (for testing)
git clone https://github.com/microsoft/aibast-agents-library.git
cd aibast-agents-library
./deploy.sh # or deploy.ps1 on Windows
# Script installs:
# - Python dependencies
# - Azure SDK
# - Connects to Azure Function App
# - Uploads default agents (memory, email)
# Option 2: Cloud setup (GitHub Codespaces)
# Click "Open in Codespaces" button
# Runs automatically in cloud - no local install needed
Dynamic loading: The setup script automates the entire environment configuration process - downloading dependencies, installing Python packages, connecting to Azure services, and uploading default agents. It handles all the technical plumbing automatically, regardless of whether running locally or in cloud environments.
Step 7.3: Deploy Your Agents
Copy the approved agents from Step 6 into the deployment:
# Local deployment (VS Code)
1. Copy your 6-10 reviewed agent files
2. Paste into /agents directory
3. Right-click → "Deploy to Function App"
4. Select your Azure subscription
5. Deployment completes in 2-3 minutes
# Cloud deployment (drag-and-drop)
1. Open Azure Portal → Your Function App
2. Navigate to File Storage → /agents folder
3. Drag approved .py files directly into folder
4. Agents hot-load automatically (zero downtime)
Hot-Loading = Zero Downtime
The stateless architecture means you can update agents WITHOUT restarting the Function App. Drop new agent files into Azure File Storage, and they're available instantly.
Example: Retail customer route optimization agent updated during live demo in minutes - no service interruption.
Step 7.4: Connect to M365 Copilot Studio
Make your agents accessible through Teams, Outlook, and web chat:
- Download the Copilot Studio solution for your solution:
solutions/<slug>/exports/<slug>-copilot-studio-solution.zip, with the deployment settings JSON beside it. One ships per published solution. - Import to Power Platform:
- Go to copilotstudio.microsoft.com
- Select "Import solution"
- Upload the .zip file
- Configure environment variables (Azure Function URL, API key)
- Enable channels: Check boxes for Teams, Web, Outlook, etc.
- Publish: One-click publish to M365
M365 integration: The process involves downloading the pre-built Copilot Studio solution, importing it into Power Platform, configuring the desired channels (Teams, Web, Outlook), and publishing - which exposes the agents across all Microsoft 365 interfaces where users work.
Example: Banking Customer Service Bot Deployment
Deployed agents: CheckIn, Onboarding, Research, Risk, Scheduler (6 agents total)
Deployment time: 45 minutes from code review approval to live in Teams
Process:
- Azure ARM template deployed → 8 minutes
- Setup script run → 5 minutes
- 6 agents uploaded to /agents folder → 2 minutes
- Copilot Studio solution imported → 10 minutes
- Teams channel enabled and tested → 20 minutes
Result: Customer can now chat with banker bot in Teams and test all 6 MVP scenarios
✓ Deployment Verification Checklist
Before calling the customer, verify these items:
| Check Item | How to Verify | Expected Result |
|---|---|---|
| Azure Function App running | Azure Portal → Function App → Overview | Status: "Running" |
| Agents loaded | File Storage → /agents folder | See your 6-10 .py files |
| Function responds to HTTP | Postman test: POST to Function URL | Returns "Available agents: [list]" |
| Copilot Studio connected | Copilot Studio → Test chat | Bot responds to "Hello" |
| Agent calls working | Ask bot to trigger one agent | Agent executes, returns result |
| Memory persistence | Tell bot something, ask it to recall | Bot remembers across messages |
Common Deployment Issues
Issue #1: Azure Function App timeout errors
Cause: Default timeout is 5 minutes, some agents take longer on a cold start
Fix: Raise functionTimeout in rapp_ai/host.json and republish. A portal edit is overwritten by the next deployment.
Issue #2: Copilot Studio can't reach Azure Function
Cause: Rarely CORS. The template already deploys allowedOrigins ["*"], so Copilot Studio reaches the Function without further work.
Fix: Check the Function is running and the key is right first. Narrow allowedOrigins to your own origins before production.
Issue #3: Agents not loading (File Storage connection error)
Cause: The Function App managed identity is missing a storage role assignment. The storage account disallows shared keys, so no connection string can work.
Fix: Confirm the storage roles in azuredeploy.json are assigned to the Function App system-assigned identity.
Testing Before Customer Demo
Role-play the MVP scenarios to ensure everything works:
Example: Rehearsal Testing (Banking Customer)
Scenario 1: Customer Check-In
You: "Hi, I'm here for my 2pm appointment"
Bot: *calls CheckInAgent*
Bot: "Welcome back! I see you're scheduled with your advisor at 2pm for account review. They'll be right with you."
✓ Verify: CheckInAgent logs show correct customer lookup
Scenario 2: Research 529 Plans
You: "I'd like to understand what 529 options are available"
Bot: *calls ResearchAgent*
Bot: "We offer three 529 college savings plans: [details]. Would you like me to compare them?"
✓ Verify: ResearchAgent returns relevant financial product info
Scenario 3: Open New Account
You: "Great, let's open an account"
Bot: *calls OnboardingAgent*
Bot: "I'll help you get started. First, let me verify your information..."
✓ Verify: OnboardingAgent initiates correct workflow
Real example: "So this is the use case for [Banking Customer]. So I basically loaded in those agents... And my prototyper is so good, you can basically rehearse with it."
What to check during rehearsal:
- Correct agent calls: LLM selects the right agent for each request
- Parameters passed correctly: Agent receives proper input (customer ID, date, etc.)
- Response quality: Agent returns useful, formatted output
- Error handling: Try invalid inputs - does it fail gracefully?
- Memory works: Bot remembers context across conversation
Optional: IT Firewall Testing
For security-sensitive customers, you can run the prototype locally:
# Run on single IT laptop (no cloud deployment needed)
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
# Start local Azure Function
func start
# Prototype runs on localhost:7071
# Customer can test without any data leaving their network
Security option: "It could run locally, so they don't even need to really hook it into their systems. You know, they could firewall it to one person's laptop in IT."
Output
Deliverable
- Live prototype: Agents running in Azure Function App
- M365 access: Customer can test in Teams, Outlook, or web chat
- Agent logs: Application Insights capturing all calls for review
- Deployment documentation: Screenshots of successful deployment steps
- Test results: Rehearsal testing notes showing all MVP scenarios work
Why Deployment is So Fast
ARM template automation: No manual Azure resource creation - one click provisions everything
Stateless architecture: 500 lines of code, minimal dependencies, deploys in seconds
Hot-loading agents: Update agents without redeploying the Function App
Pre-built Copilot solution: import it, bind the two connection references (Office 365 Outlook and Office 365 Users), and point the flow at your Function endpoint
Speed example: "Cape team member had his own business set up by the next day using this. That's how fast you can move with this. That's what rapid means."
Go deeper: Step 7 in the RAPP/1 reference vault, with the protocol behind it.
Step 8: Audit - Demo Review
Quality Gate #4: Customer sees working prototype and provides feedback
Objective
Film the working prototype solving the MVP scenarios and send to customer for validation. This is the FIRST time the customer sees their agents actually working (not just a document or diagram).
Time Investment: 2-4 hours total
- Record demo: 30-60 minutes
- Edit video (optional): 30 minutes
- Customer review: 1-2 days
- Feedback session: 30-60 minutes
Human Role: Record screen, narrate what's happening, collect customer feedback
Automation Role: Agents execute the MVP scenarios in real-time (no smoke and mirrors)
Input from Step 7
What You Have
- Live prototype: Agents deployed and tested in Azure
- M365 Copilot access: Agents accessible via Teams, Outlook, web
- Rehearsal notes: Tested MVP scenarios, know what works
- Approved MVP doc: Customer-signed scope from Step 4
Demo Recording Process
Step 8.1: Prepare the Recording Environment
- Open M365 Copilot: Teams chat or web interface (whichever is cleaner)
- Load MVP scenarios: Have customer-approved use cases ready to demonstrate
- Start screen recorder: OBS Studio, Loom, Camtasia, or built-in OS recorder
- Optional: Enable webcam for personal touch (see yourself explaining)
Step 8.2: Record Each MVP Scenario
Show the agents solving the problem - no slides, no mockups, real execution:
Example: Retail Field Sales Demo Recording
MVP Scenario 1: Route Planning
[Screen recording in Teams]
You: "I need my route for today in Los Angeles"
*Agent indicator shows DynamicRoutePlanningAgent is called*
Bot: "Analyzing 47 accounts in Los Angeles area...
Optimized route generated:
Stop 1: Retail Store A (8:30am) - High priority, last visit 14 days ago
Stop 2: Retail Store B (10:00am) - Promotion check needed
Stop 3: Retail Store C (11:30am) - New seasonal display
Stop 4: Retail Store D (1:30pm) - Restocking required
Estimated drive time: 2.5 hours
Would you like me to send this to your calendar?"
✓ Customer sees: Real agent, real data sources, real routing logic
MVP Scenario 2: Shelf Insights
You: "What should I do at Retail Store A?"
*ShelfRecognitionAgent called*
Bot: "At Retail Store A (Store #4521):
- Your brand share of shelf: 18% (target: 25%)
- Competitor gap: Competitor X display blocking your product section
- Action: Request 2 additional shelf facings for your product line
- Promo opportunity: Labor Day end cap available Sept 1-5"
✓ Customer sees: Vision AI, competitive analysis, actionable recommendations
The process: Deploy the agents with the working prototype, record a narrated video demonstration walking through all MVP scenarios, and deliver it to the customer for their review and feedback.
Step 8.3: Show "Behind the Scenes" (Optional but Powerful)
Briefly show the agent being called in Application Insights logs:
[Switch to Azure Portal]
Application Insights → Live Metrics
Agent Calls (last 60 seconds):
→ DynamicRoutePlanningAgent: 1.2s response time ✓
→ Inputs: {salesperson_id: "DS-4421", date: "2024-10-15", region: "LA"}
→ Output: 4 stops, optimized route returned
[Switch back to Teams]
"As you can see, the agent executed in real-time, pulling from your Dynamics 365 data."
Why show logs? Proves it's not a mockup. Customer sees actual agent execution with their data sources.
Step 8.4: Narrate What's Happening
Don't just show it - explain the value:
- Before each scenario: "This scenario solves [business problem] that you described in our discovery call..."
- During agent execution: "The agent is now connecting to your Dynamics 365 instance to pull account data..."
- After result: "This route saves your field rep approximately 45 minutes per day based on your current manual process..."
The "Waiter" Pattern in Action
From the customer's perspective, they're having a natural conversation with the bot. Behind the scenes:
- Waiter (LLM) takes the order: "I need my route for today"
- Waiter goes to kitchen: Calls DynamicRoutePlanningAgent with parameters
- Chef (Agent) cooks: Queries Dynamics, runs optimization algorithm, formats output
- Waiter serves the meal: "Here's your optimized route with 4 stops..."
Customer sees: Simple conversation
System does: Complex orchestration with data sources, agents, memory
The "waiter" pattern: The LLM acts as an intermediary, managing conversations with specialized agents behind the scenes while presenting a simple, unified interface to the user. The end user doesn't see or need to understand the complex orchestration happening in the background - they just get clean, contextualized responses.
Sending the Demo to Customer
Email template for demo delivery:
Example: Demo Delivery Email
Subject: [Customer] Field Sales Agent - Working Prototype Demo
Hi [Customer Contact],
Great news - your AI agents are up and running!
I've recorded a 12-minute demo showing the prototype solving all 4 MVP scenarios we agreed on:
1. Dynamic route planning (0:00-3:30)
2. Shelf recognition and insights (3:30-6:45)
3. Next-best-action recommendations (6:45-9:20)
4. Promotion suggestions (9:20-12:00)
Watch the demo: [Loom/YouTube link]
This is a fully functional prototype running on your Dynamics 365 data (test environment).
You can see the agents executing in real-time - no mockups or slide decks.
**Next Steps:**
1. Watch the demo and note any feedback
2. We'll schedule a 30-minute call to discuss your thoughts
3. Based on your input, we can iterate the agents or proceed to production deployment
**Two Questions for You:**
1. Do these agents solve the business problem as you described it?
2. Is there anything you'd like adjusted before we move to production?
Looking forward to your feedback!
Best regards,
[Your Name]
Customer Feedback Session
Schedule a 30-60 minute call to walk through their reactions:
| Question to Ask | Why It Matters | What to Listen For |
|---|---|---|
| "Did the agents solve the problem as you described it?" | Confirms MVP scope alignment | Yes → Proceed to Step 9 No → Back to Step 5 with feedback |
| "Were the results accurate and useful?" | Validates data integration quality | Issues? → May need data source adjustments |
| "Is there anything you'd change or add?" | Scope creep detector | Minor tweaks OK. Major changes → Renegotiate MVP |
| "Can you see this being used by your team?" | Adoption readiness check | Hesitation? → May need training plan |
| "What would production deployment look like?" | Sets expectations for Step 11-14 | Security, compliance, rollout timeline |
Decision Point: Quality Gate #4
Three possible outcomes from this gate:
Customer says: "This is exactly what we need. Let's move forward."
Next step: Proceed to Step 9 (Generate Video Demo)
Customer says: "Close, but can you adjust [specific thing]?"
Next step: Loop back to Step 5, regenerate affected agents, redeploy, re-record
Customer says: "Great, but now we also need [whole new capability]..."
Next step: STOP. Explain this is outside MVP scope. Either stick to original or redefine project (back to Step 1)
Warning: The "While We're At It" Trap
Scenario: Customer loves the demo and says "This is amazing! While we're at it, could you also make it integrate with our inventory system and send automated reports to executives?"
Why this is dangerous:
- You're 80% through the workflow - almost at the finish line
- Adding new capabilities = new discovery, new MVP, new testing
- Timeline blows out from "days" to "weeks"
- Original momentum is lost
How to respond:
"I'm glad you see the value! Those are great ideas for the NEXT phase.
Let's complete this MVP first, get it into production, and then we can
scope a Phase 2 project with those additional capabilities. Sound good?"
Scope creep warning: "Scope creep warning signs... Picture the AI agent library, right? So they would do the one click install... But if they come back with major changes, you need to renegotiate MVP scope."
✓ Approval Checklist
Before proceeding to Step 9, confirm:
| Check Item | Verification Method | Status |
|---|---|---|
| Customer watched full demo | Loom/YouTube analytics show completion | □ Confirmed |
| All MVP scenarios demonstrated | Demo video covers every use case from Step 4 | □ Confirmed |
| Customer provided written approval | Email or chat message saying "approved" | □ Confirmed |
| No major scope changes requested | Feedback is minor tweaks, not new features | □ Confirmed |
| Production deployment timeline discussed | Customer knows next steps and timeline | □ Confirmed |
Output
Deliverable
- Demo video: 10-15 minute recording showing all MVP scenarios
- Customer feedback notes: Documented reactions and any requested tweaks
- Approval email: Written confirmation from customer to proceed
- Iteration log (if needed): List of changes made based on feedback
- Green light for production: Customer-approved prototype ready for final polish
Why This Gate Matters So Much
First moment of truth: Customer sees their problem actually being solved (not just described in a doc)
Validates the Buzz Saw approach: AI did heavy lifting, human ensured taste/quality
Builds credibility: You went from conversation to working prototype in days, not months
Risk elimination: You're iterating on WORKING CODE, not arguing about design documents
Iteration philosophy: "And they're gonna love it or they're gonna hate it, right? And we go through the same process of, OK, here's the feedback, let's keep iterating."
Go deeper: Step 8 in the RAPP/1 reference vault, with the protocol behind it.
Step 9: Generate Video Demo
Create polished, shareable demo video for executive presentations and marketing
Objective
Generate a professional, self-contained demo video with Azure TTS narration that can be shared with executives, embedded in sales decks, or used for internal evangelism. This is different from Step 8's screen recording - this is a PRODUCED demo with scripted narration and polished visuals.
Time Investment: 3-4 hours (manual)
- Create demo JSON manually: 1-2 hours using the Local-First Chat Animation Studio
- Script narration and timing: 1 hour
- Test and refine: 1 hour
Human Role: Manual creation of demo structure, scripting, narration, and timing adjustments
Automation Vision: Video Demo Generator to auto-create demo JSON from prototype walkthrough, reducing time to 30 minutes
Input from Step 8
What You Have
- Customer-approved prototype: Working agents validated in Step 8
- Screen recording demo: Raw footage of agent execution
- MVP documentation: Business value, metrics, use cases
- Project JSON: Customer name, stakeholders, timeline
Automation: Video Demo Generator
Automation Tool: Video Demo Generator
Type: M365 Copilot Studio Declarative Agent
Location: Open Video Demo Generator
Local Tool: Open Local-First Chat Animation Studio
You are a demo video JSON generator for the Microsoft AI BAST RAPP framework. Generate structured demo configurations that work with the Local-First Chat Animation Studio tool.
**YOUR TASK:**
Create a complete JSON demo configuration that tells a compelling story about the customer's AI agent implementation.
**REQUIRED JSON STRUCTURE:**
Return valid JSON with this exact structure:
{
"demoMetadata": {
"title": "[Customer Name] AI Agent Demo",
"customer": "[Customer Name]",
"industry": "[Industry: legal, sales, hr, it, etc.]",
"totalDuration": "[Total seconds, e.g., 75]",
"voiceName": "en-US-GuyNeural",
"createdDate": "[YYYY-MM-DD]"
},
"demoSteps": [
{
"id": "step1-problem",
"name": "[Step Name]",
"duration": 8000,
"voiceText": "[Professional narration text - what the TTS will say]",
"narrator": {
"title": "[Visual overlay title]",
"text": "[Key metrics or details to display]",
"subtitle": "[Supporting context]",
"position": "left|right|center"
}
},
// Add 7-10 steps total
],
"chatInteractions": [
{
"stepId": "step2-whatever",
"messages": [
{"type": "user", "text": "[User query]", "voice": false},
{"type": "system", "text": "Processing...", "timestamp": "9:03am"},
{"type": "agent", "text": "[Agent response]", "voice": false}
]
}
],
"agentCards": [
{
"stepId": "step3-whatever",
"card": {
"title": "[AgentName]",
"status": "ACTIVE",
"details": {
"Metric 1": "Value",
"Metric 2": "Value",
"Processing Time": "1.2s"
}
}
}
]
}
**DEMO NARRATIVE STRUCTURE:**
Your demo MUST follow this arc:
1. **Problem Hook (8-10s):** Show the painful manual process
2. **Solution Demo (40-50s):** 3-4 agent capabilities in action with specific examples
3. **Business Impact (10-15s):** ROI, metrics, scalability
**CRITICAL REQUIREMENTS:**
- voiceText: Write for spoken delivery (~150 words per minute)
- duration: Match narration length (20 words ≈ 8000ms)
- Narrator overlays: Include specific metrics (time saved, accuracy %, cost reduction)
- Use customer's actual agent names from their implementation
- Include real numbers: accounts analyzed, items processed, seconds to complete
- Show chat interactions with natural language queries
- Agent cards should display processing details and confidence scores
**GENERATE DEMO FOR THIS CUSTOMER:**
**Customer:** [Customer Name]
**Industry:** [Industry]
**Use Case:** [Describe the MVP use case]
**Agents:** [List 3-5 key agents with brief descriptions]
**Key Metrics:**
- Time saved: [e.g., 45 min/day per user]
- Accuracy improvement: [e.g., 67% → 95%]
- Cost savings: [e.g., your measured annual savings]
**Target Audience:** [Executives / Technical teams / Field users]
**EXAMPLE METRICS TO INCLUDE:**
- Processing time: "Analyzed 47 accounts in 1.2 seconds"
- Volume: "200 field reps × 45 minutes saved = 37,500 hours/year"
- Accuracy: "Improved from 67% to 95% compliance"
- ROI: "[your measured annual savings and first-year ROI]"
Return ONLY the JSON - no explanations, no markdown code blocks, just the pure JSON that can be imported into the animation studio.
What It Does:
Generates structured JSON demo configurations with:
- Demo steps: 7-10 choreographed steps with timing (60-90 seconds total)
- Azure TTS narration: Professional voice-over text for each step
- Chat interactions: Simulated user ↔ agent conversations
- Agent cards: Visual overlays showing agent status, metrics, processing
- Narrative arc: Problem → Solution → Business Impact structure
How to Use:
- Open Copilot Studio and load the Video Demo Generator agent
- Provide context: Paste your MVP documentation + project JSON
- Prompt:
"Generate a demo JSON for [CustomerName]'s AI agent prototype. Industry: [Industry] Use Case: [Brief description from MVP] Agents: [List 3-5 key agents] Key Metrics: [Time saved, accuracy improved, cost reduced] Target audience: [Executives / Technical teams / Field users] Include: - Opening hook showing the business problem - 3-4 steps demonstrating agent capabilities - Specific metrics and ROI - Chat interactions showing natural language use - Closing with scalability vision" - Agent returns: Complete JSON file with all demo steps and narration
- Save JSON: Copy output to
demos/[customer-name]-demo.json
Example: Retail Field Sales Video Demo Generation
Input Prompt to Video Demo Generator:
Generate a demo JSON for Retail Customer's Field Sales AI Agent system.
Industry: Field Sales
Use Case: Field sales reps need to know where to go, what order to visit accounts,
and what actions to take at each location. Currently done manually, taking 45
minutes per day. AI agents solve this in real-time.
Agents:
1. DynamicRoutePlanningAgent - Optimizes daily routes
2. ShelfRecognitionAgent - Vision AI analyzes shelf photos
3. NextBestActionAgent - Recommends actions at each store
4. PromotionSuggestionsAgent - Identifies promo opportunities
Key Metrics:
- 45 minutes saved per rep per day
- 18% share-of-shelf → 25% (target achievement)
- 95% planogram compliance (up from 67%)
- Real-time Dynamics 365 integration
Target audience: Customer sales leadership and field operations VPs
Include:
- Opening hook: Field rep standing in parking lot, unsure where to go
- Route planning demo with LA map and 4 optimized stops
- Shelf photo analysis at Retail Store A showing competitor gap
- Next-best-action recommendations with specific tasks
- ROI: 200+ hours saved per month across team
- Closing: Scales to all markets, all regions globally
Generated Demo JSON (excerpt):
{
"name": "Field Sales Intelligence System",
"headerTitle": "AI-Powered Field Sales Optimization",
"userName": "Sales Rep - Senior Territory Manager",
"azureTTS": {
"key": "[TTS_KEY]",
"region": "eastus",
"voiceName": "en-US-GuyNeural"
},
"metadata": {
"industry": "Retail - Beverage Distribution",
"useCase": "Field Sales Route Optimization",
"targetAudience": "Sales Leadership",
"integration": "Microsoft Dynamics 365, Azure Vision AI"
},
"demoSteps": [
{
"id": "step1-hook",
"name": "The Daily Challenge",
"duration": 7000,
"voiceText": "Every morning, 200 field reps face the same question: where do I go today, and what do I do when I get there? This manual process wastes 45 minutes per day per rep. Let's see how AI changes everything.",
"narrator": {
"title": "The $2M Problem",
"text": "200 reps × 45 min/day × 250 days = 37,500 hours wasted annually",
"subtitle": "Manual route planning • No prioritization • Missed opportunities",
"position": "center"
}
},
{
"id": "step2-route",
"name": "AI Route Planning",
"duration": 6000,
"voiceText": "The rep opens Copilot and asks for their route. In 1.2 seconds, the DynamicRoutePlanningAgent analyzes 47 LA accounts, considers last visit dates, priority scores, and traffic patterns, and generates an optimized 4-stop route.",
"narrator": {
"title": "Instant Route Optimization",
"text": "47 accounts analyzed • 4 stops prioritized • 2.5 hours estimated",
"subtitle": "Saves 45 minutes of planning time",
"position": "left"
}
},
{
"id": "step3-shelf",
"name": "Vision AI Shelf Analysis",
"duration": 6000,
"voiceText": "At the retail location, the rep takes a quick shelf photo. The ShelfRecognitionAgent uses Azure Vision AI to detect the brand's 18% share, identifies a competitor display blocking the product section, and recommends requesting 2 additional facings.",
"narrator": {
"title": "Real-Time Competitive Intelligence",
"text": "Current: 18% share • Target: 25% • Gap: Competitor blocking",
"subtitle": "95% detection accuracy • Instant recommendations",
"position": "right"
}
},
...more steps...
{
"id": "step9-impact",
"name": "Business Impact",
"duration": 8000,
"voiceText": "Across 200 field reps, this system saves 37,500 hours annually, improves share-of-shelf by 7 percentage points, and increases planogram compliance from 67% to 95%.",
"narrator": {
"title": "Transformational Results",
"text": "Annual savings, share gain and compliance improvement, measured in the pilot",
"subtitle": "Scales globally to all markets",
"position": "center"
}
}
],
"chatInteractions": [
{
"stepId": "step2-route",
"messages": [
{"type": "user", "text": "I need my route for today in Los Angeles", "voice": false},
{"type": "system", "text": "Analyzing accounts...", "timestamp": "9:03am"},
{"type": "agent", "text": "Route optimized for 4 high-priority stops. Estimated time: 2.5 hours.", "voice": false}
]
}
],
"agentCards": [
{
"stepId": "step2-route",
"card": {
"title": "DynamicRoutePlanningAgent",
"status": "ACTIVE",
"details": {
"Accounts Analyzed": "47",
"Stops Generated": "4",
"Processing Time": "1.2s",
"Optimization": "Traffic + Priority + History"
}
}
}
]
}
What the agent generated:
- 9 demo steps with complete narration (85 seconds total)
- Problem → Solution → Impact narrative arc
- Specific metrics: time saved, share gain, annual savings
- Chat interactions showing natural language queries
- Agent cards showing processing details and confidence scores
- Professional narrator overlays for each step
Customizing the Generated Demo
Review the JSON and adjust:
1. Narration Tone
- For executives: Focus on ROI, strategic value, competitive advantage
- For technical teams: Emphasize architecture, integrations, scalability
- For field users: Highlight ease of use, time savings, day-to-day benefits
2. Voice Selection (Azure TTS)
Change the voiceName field to match your audience:
// Professional Male (default)
"voiceName": "en-US-GuyNeural"
// Professional Female
"voiceName": "en-US-JennyNeural"
// Enthusiastic Male
"voiceName": "en-US-DavisNeural"
// Warm Female
"voiceName": "en-US-AriaNeural"
3. Step Timing
Adjust duration values if narration feels rushed or too slow:
// Calculate: ~150 words per minute for natural speech
// Example: 25 words of narration = ~10,000ms (10 seconds)
{
"id": "step3-shelf",
"duration": 6000, // ← Increase if narration cuts off
"voiceText": "At Retail Store A, the sales rep takes a quick shelf photo..."
}
4. Metrics Verification
Double-check all numbers match your project JSON:
- Time savings (45 min/day in retail example)
- Accuracy improvements (67% → 95% compliance)
- ROI calculations (measured savings)
- Volume metrics (200 reps, 47 accounts)
Running the Demo
The generated JSON works with the Local-First Chat Animation Studio:
Option 1: Use Local-First Tool (Recommended)
1. Open ../tools/localfirst_chat_animation_studio_tool.html in your browser
2. Click "Import Demo JSON" button
3. Paste your generated JSON or upload the .json file
4. Configure Azure TTS credentials (or use mock TTS for testing)
5. Click "Preview Demo" to test
6. Press SPACE to start auto-play, arrow keys to navigate steps
Benefits:
- Works offline, no server required
- Built-in JSON editor and validator
- Save/load demos from browser storage
- Export standalone HTML files
Option 2: Generate Standalone HTML
Ask the LLM to wrap your JSON in a complete HTML file:
Prompt: "Take this demo JSON and create a self-contained HTML file
with embedded JavaScript, CSS styling, Azure TTS integration, and
keyboard controls. Include copy button for code blocks."
[Paste your generated JSON]
Testing the Demo:
- Press SPACE to start auto-play mode
- Watch narration overlays appear with timing
- Listen to Azure TTS read voiceText (or simulate if no key)
- Verify agent cards display at correct steps
- Check chat interactions appear with proper sequencing
Sharing the Demo
Multiple distribution options:
Option 1: Share HTML File
- Email the standalone HTML file to customer
- They open it in any browser - works offline
- No installation or accounts needed
- Azure TTS requires internet connection for narration
Option 2: Host on GitHub Pages
1. Push HTML to GitHub repo
2. Enable GitHub Pages in repo settings
3. Share URL: https://[username].github.io/[repo]/[demo].html
4. Works on mobile, tablet, desktop
Option 3: Record and Export Video
1. Use OBS Studio / Loom to record browser playthrough
2. Export as MP4 (1920x1080 recommended)
3. Upload to YouTube / SharePoint / Vimeo
4. Embed in PowerPoint decks or send direct link
Example: Email to Executive Stakeholders
Subject: Field Sales AI System - Interactive Demo Ready
Hi [Executive Name],
Following our prototype approval, I've created an interactive demo showcasing
the AI agents in action. This is a polished, 90-second walkthrough with
professional narration.
Interactive Demo: [Attach HTML or link]
Key highlights:
- 45 minutes saved per rep per day
- Real-time route optimization with LA market example
- Vision AI shelf analysis at Retail Store A
- Annual savings measured across the team
How to view:
1. Download the HTML file
2. Open in Chrome/Edge/Safari
3. Press SPACE to start auto-play
4. Use arrow keys to navigate steps manually
This demo is ready to share with:
- Sales leadership for budget approval
- Field teams for change management training
- IT/Security for technical review
Let me know if you'd like any adjustments to messaging or metrics.
Best regards,
[Your Name]
Why Video Demos Matter
Async evangelism: Executives can watch on their schedule, share with peers
Consistent messaging: Same story told every time, no live demo variability
Internal evangelism: Field teams can see what's coming, build excitement
Sales enablement: Account teams can use for similar customers in same industry
No technical dependencies: Works offline, no Azure credits needed to view
Common Mistakes
Mistake #1: Too many steps (12+ steps)
Why it's bad: Demo drags on, loses audience attention after 2 minutes
Fix: Keep to 7-10 steps, 60-90 seconds total. Focus on 3-4 key capabilities.
Mistake #2: Generic narration ("This agent is powerful...")
Why it's bad: No differentiation, sounds like marketing fluff
Fix: Use specific metrics: "45 minutes saved" not "saves time". "18% → 25% share" not "improves results".
Mistake #3: No narrative arc (just feature list)
Why it's bad: Audience doesn't understand the transformation
Fix: Structure as Problem → Solution → Impact. Start with pain, end with ROI.
✓ Quality Checklist
Before sharing the demo, verify:
| Check Item | How to Verify | Status |
|---|---|---|
| All metrics match project JSON | Cross-reference numbers with MVP doc | □ Confirmed |
| Narration timing feels natural | Listen to Azure TTS playback, no cut-offs | □ Confirmed |
| Agent cards appear at correct steps | Watch demo, verify stepId references | □ Confirmed |
| Chat interactions make sense | Read conversations, check for logic flow | □ Confirmed |
| Customer name spelled correctly | Check all references (header, steps, narration) | □ Confirmed |
| Demo works on mobile/tablet | Test on iOS Safari, Android Chrome | □ Confirmed |
Output
Deliverable
- Demo JSON file:
demos/[customer-name]-demo.json - Standalone HTML demo: Self-contained file with narration
- Hosted URL (optional): GitHub Pages or internal server link
- MP4 video (optional): Recorded playthrough for PowerPoint embedding
- Usage instructions: How to view, navigate, and share
Go deeper: Step 9 in the RAPP/1 reference vault, with the protocol behind it.
Step 10: Audit - Final Demo Review
Quality Gate #5: Customer confirms video demo is ready to share with executives
Objective
Get final approval from customer that the polished video demo accurately represents their solution and is ready to share with executive stakeholders, board members, or field teams.
Time Investment: 30-60 minutes (review call with customer)
Decision: Approve demo for production use OR request adjustments
Input from Step 9
What You Have
- Video demo (HTML or MP4): Polished with Azure TTS narration
- Demo JSON: Complete script with steps, metrics, narration
- Distribution plan: How demo will be shared (email, hosted URL, embedded in deck)
✓ Review Checklist with Customer
| Review Item | What to Check |
|---|---|
| Metrics accuracy | All numbers match reality (time saved, ROI, accuracy improvements) |
| Messaging tone | Narration appropriate for target audience (executives vs. field users) |
| Company branding | Customer name spelled correctly, no competitor references |
| Technical accuracy | Integration points, systems mentioned are correct |
| Shareability | Customer comfortable with internal distribution |
Decision Point
✓ APPROVED: Demo is locked and ready for production deployment planning → Proceed to Step 11
ITERATE: Minor adjustments needed (narration, metrics, branding) → Fix and re-review
Output
Deliverable
- Approved demo files: Final HTML/MP4 locked for distribution
- Distribution permission: Customer sign-off for executive sharing
- Usage guidelines: Who can see it, how to present it
Go deeper: Step 10 in the RAPP/1 reference vault, with the protocol behind it.
Step 11: Production Planning
Define security, compliance, rollout strategy, and production requirements
Objective
Work with customer's IT, Security, and Compliance teams to define production deployment requirements. Transform prototype into production-ready system.
Time Investment: 3-7 days (meetings + documentation)
Security & Compliance Planning
Questions for IT/Security Team:
- Data residency: Where can data be stored? (US, EU, on-prem)
- Authentication: SSO required? Azure AD integration?
- Network access: Public internet OK or private endpoints needed?
- Audit logging: What events need to be logged for compliance?
- Data encryption: At rest and in transit requirements
- Compliance frameworks: HIPAA, SOC 2, GDPR, FedRAMP?
Common Requirements:
// Production vs. Prototype
Prototype: Single Azure Function App, public endpoints, dev Azure subscription
Production: Redundant deployments, private endpoints, customer Azure subscription
Security additions needed:
- Azure AD authentication (no anonymous access)
- Private Link for Azure Function App
- Azure Key Vault for secrets (not environment variables)
- Application Gateway with WAF
- DDoS protection
- Managed Identity for service-to-service auth
- Azure Monitor alerts for security events
Rollout Strategy
Phased Deployment Plan:
| Phase | Users | Duration | Success Criteria |
|---|---|---|---|
| Phase 1: Pilot | 5-10 power users | 2 weeks | 80% adoption, no critical bugs |
| Phase 2: Early Adopters | 25-50 users | 4 weeks | Positive NPS, feature requests captured |
| Phase 3: General Availability | All users | 8 weeks | ROI metrics achieved, support tickets low |
Output
Deliverable
- Production requirements doc: Security, compliance, infrastructure needs
- Rollout plan: Phased deployment schedule with success metrics
- Support plan: Who handles user questions and bugs
- Training materials: User guides, video tutorials, FAQ
Go deeper: Step 11 in the RAPP/1 reference vault, with the protocol behind it.
Step 12: Audit - Security & Compliance Sign-off
Quality Gate #6: IT/Security/Compliance approve production deployment
Objective
Get formal approval from customer's IT, Security, and Compliance teams that the system meets all production requirements.
Time Investment: 1-3 weeks (review process, pen testing, compliance audit)
Security Review Checklist
- Penetration testing: Third-party security audit completed
- Vulnerability scan: No critical or high-severity issues
- Code review: Security team reviewed agent code
- Access controls: RBAC configured, least privilege enforced
- Secrets management: All credentials in Azure Key Vault
- Logging/monitoring: Security events captured and alerted
Compliance Review Checklist
- Data classification: PII/PHI handling documented
- Data retention: Policies configured for user memory and logs
- Audit trail: All agent actions logged with user context
- Compliance frameworks: SOC 2, HIPAA, GDPR requirements met
- Third-party integrations: Vendor BAAs signed where needed
Decision Point
✓ APPROVED: All security and compliance requirements met → Proceed to Step 13 (Production Deployment)
CONDITIONAL APPROVAL: Minor fixes needed → Address issues and re-submit
BLOCKED: Major security/compliance issues → Back to Step 11 for redesign
Output
Deliverable
- Security sign-off: Written approval from CISO or Security team
- Compliance sign-off: Approval from Compliance/Legal team
- Pen test report: Results from third-party security audit
- Production deployment authorization: Go-live approval from stakeholders
Go deeper: Step 12 in the RAPP/1 reference vault, with the protocol behind it.
Step 13: Production Deployment
Move from prototype to production with phased rollout
Objective
Deploy the production-ready system to customer's Azure subscription with all security and compliance controls. Execute phased rollout to pilot users.
Time Investment: 2-3 days (deployment) + 2-4 weeks (pilot phase)
Production Deployment Steps
1. Infrastructure Deployment
// Deploy to customer's production Azure subscription
1. Run production ARM template (with security additions from Step 11)
2. Configure Azure AD authentication
3. Set up Private Link endpoints
4. Configure Application Gateway + WAF
5. Enable Azure Monitor alerts
6. Configure backup and disaster recovery
2. Agent Deployment
// Deploy approved agents to production
1. Copy reviewed agents from prototype to production File Storage
2. Verify agents load correctly in production Function App
3. Test one agent call with production data
4. Configure production Dynamics 365 / data source connections
5. Validate memory persistence with production Azure Storage
3. M365 Integration
// Connect to production M365 tenant
1. Import Copilot Studio solution to production environment
2. Configure production Azure Function URL
3. Enable Teams channel for pilot user group
4. Test end-to-end: Teams → Copilot → Function → Agents → Data sources
5. Verify SSO authentication works
4. Pilot User Onboarding
- Send welcome email: Instructions for accessing agent in Teams
- Conduct training session: 30-minute walkthrough of key scenarios
- Provide support channel: a Teams channel for questions
- Set expectations: This is Phase 1, feedback will shape improvements
Monitoring & Support
Week 1-2 (Pilot Phase):
- Daily check-ins: Review Application Insights logs for errors
- User feedback: Weekly survey to pilot users (NPS, issues, feature requests)
- Performance metrics: Agent response time, success rate, usage frequency
- Hot fixes: Address critical bugs within 24 hours
Output
Deliverable
- Production system: Agents running in customer's Azure with all security controls
- Pilot users active: 5-10 users using agents in daily work
- Monitoring dashboard: Real-time metrics on usage and performance
- Support process: Defined escalation path for issues
Go deeper: Step 13 in the RAPP/1 reference vault, with the protocol behind it.
Step 14: Post-Deployment Review
Measure success, gather learnings, plan Phase 2 improvements
Objective
After 2-4 weeks of pilot usage, review metrics, collect user feedback, validate ROI, and plan next phase of rollout or feature enhancements.
Time Investment: 1-2 hours (review meeting with customer)
Success Metrics Review
Quantitative Metrics:
| Metric | Target (from MVP) | Actual | Status |
|---|---|---|---|
| Time saved per user per day | 45 minutes | [Measured] | ✓ / / ✗ |
| Agent accuracy | 95% | [Measured] | ✓ / / ✗ |
| User adoption rate | 80% | [Measured] | ✓ / / ✗ |
| Agent calls per day | 20+ per user | [Measured] | ✓ / / ✗ |
Qualitative Feedback:
- User satisfaction (NPS): Survey results from pilot users
- Top feature requests: What users want added in Phase 2
- Pain points: What's not working well
- Unexpected use cases: Creative ways users are leveraging agents
Lessons Learned
What Worked Well:
- Which agents got the most usage?
- What aspects of training resonated with users?
- Which integration points worked smoothly?
What Needs Improvement:
- Which agents had accuracy issues?
- Where did users get confused or stuck?
- What data source connections were unreliable?
Phase 2 Planning
Expansion Options:
- Wider rollout: Expand from 10 pilot users to 50+ users
- New agents: Add capabilities based on user requests
- Integrations: Connect to additional data sources or systems
- Advanced features: Multi-agent workflows, proactive alerts, scheduled tasks
ROI Validation:
Example: Field Sales System ROI After 4 Weeks
Projected savings: the figure from your Step 9 demo
Actual savings (pilot):
- 10 pilot users × 42 min saved/day (slightly better than 45 min target)
- 4 weeks × 5 days/week = 20 days
- Total: 140 hours saved across 10 users in 4 weeks
- Extrapolated to 200 users: 35,000 hours/year saved ✓ (close to 37,500 target)
User feedback highlights:
- "Route planning agent saves me 30-60 min every morning" - Sales Rep A
- "Shelf recognition catches things I would have missed" - Sales Rep B
- "I want this for all my accounts, not just LA market" - Feature request
Decision: Proceed with Phase 2 rollout to all 200 reps in Q2
Output
Deliverable
- Success metrics report: Quantitative data on adoption, usage, time saved
- User feedback summary: NPS scores, quotes, feature requests
- ROI validation: Actual savings vs. projected savings
- Phase 2 proposal: Roadmap for next 3-6 months of enhancements
- Case study (optional): Document learnings for similar customers
✓ You've Completed the RAPP 14-Step Framework!
Discovery to production in days, not months:
- ✓ Discovery Call → MVP Definition (Steps 1-4): 2-3 days
- ✓ Agent Generation → Prototype Demo (Steps 5-8): 1-2 days
- ✓ Video Demo → Final Approval (Steps 9-10): 1 day
- ✓ Production Planning → Deployment (Steps 11-13): 1-3 weeks
- ✓ Post-Deployment Review (Step 14): 2-4 weeks after launch
Total timeline: a working prototype in minutes when the library already covers the problem, and in days when it does not. Production deployment is still 3-5 weeks, and still mostly waiting for security and compliance approvals. The 3-5 day prototype figure this guide shipped with is kept in Speed Barriers Broken.
Compare to traditional development: 3-6 months for same scope
Result: 20x faster, 6 human quality gates preventing scope creep, validated ROI with real user data
Go deeper: Step 14 in the RAPP/1 reference vault, with the protocol behind it.
Team Setup Guide
How to onboard Team Members A, B, and other team members to run this workflow autonomously
Objective
Enable multiple team members to run the 14-step framework in parallel, handling 20+ concurrent projects without bottlenecks.
Parallel execution: "[Team Member A], go and go and have this session, right? [Team Member B], go and have this session, get the get the inputs that we need... And then I'm going to let this work overnight and then I'm going to get to the gates of audit."
Station-Based Workflow Distribution
Divide the workflow across team members based on skill sets:
Station 1: Discovery & MVP Definition (Steps 1-4)
Owner: Team Member A + Team Member B (Sales/Solutions Architects)
Skills needed: Customer communication, requirements gathering, MVP scoping
Tools:
- Transcript-to-Project Agent (Copilot Studio)
- Customer project tracker HTML tool
- MVP "poke" template
Deliverables: Approved MVP document, locked project JSON
Time per project: 2-3 days
Station 2: Agent Generation & Code Review (Steps 5-6)
Owner: Team Member B + Team Member C (Technical leads)
Skills needed: Python knowledge (basic), code review, integration planning
Tools:
- RAPP Agent Generator (Copilot Studio)
- VS Code for code review
- Azure OpenAI for agent customization
Deliverables: 6-10 reviewed Python agents ready for deployment
Time per project: 1-2 days
Station 3: Deployment & Demo (Steps 7-10)
Owner: Team Member C (Technical deployment lead)
Skills needed: Azure deployment, Copilot Studio, video production
Tools:
- Azure CLI / Portal for deployment
- Video Demo Generator (Copilot Studio)
- Local-First Chat Animation Studio (../tools/localfirst_chat_animation_studio_tool.html)
- Loom/OBS for screen recording
Deliverables: Working prototype in Azure, customer-approved video demo
Time per project: 1-2 days
Station 4: Production & Post-Launch (Steps 11-14)
Owner: Customer IT team + Team Member C (support escalation)
Skills needed: Production Azure management, security/compliance knowledge
Tools:
- Azure Portal (customer subscription)
- Application Insights for monitoring
- Teams for pilot user support
Deliverables: Production system, ROI validation, Phase 2 roadmap
Time per project: 3-5 weeks (mostly waiting for approvals)
Team Member Onboarding Checklist
For Team Members A/B (Station 1):
| Setup Task | How To | Status |
|---|---|---|
| Copilot Studio access | Admin grants access to Copilot Studio environment | □ Complete |
| Load Transcript-to-Project Agent | Open the Transcript-to-Project Agent from the tenant link in Step 2, or use that step's copy-paste fallback prompt | □ Complete |
| Test project tracker tool | Open the Local Project Tracker Tool (tools/localfirst_project_tracker_tool.html), add test project | □ Complete |
| Practice MVP "poke" creation | Run through Step 3 with sample transcript | □ Complete |
| Shadow 1 discovery call | Observe Team Member C running Steps 1-4 with real customer | □ Complete |
For Team Member B (Station 2):
| Setup Task | How To | Status |
|---|---|---|
| Azure OpenAI access | Get API key + endpoint from Azure Portal | □ Complete |
| Load RAPP Agent Generator | Open the RAPP Agent Generator from the tenant link in Step 5, or use that step's copy-paste fallback prompt | □ Complete |
| VS Code setup | Install Python extension, configure linter | □ Complete |
| Review BasicAgent template | Read Customers/*/agent examples to understand pattern | □ Complete |
| Run code review on sample agent | Use Step 6 checklist on existing agent | □ Complete |
For Team Member C (Station 3):
Already proficient - focus on scaling capacity, not learning
Handoff Protocol Between Stations
Station 1 → Station 2 Handoff:
What Team Members A/B Pass to Team Members B/C:
Slack message format:
Project: [Customer Name] - [Project Name]
✓ Status: MVP Approved by customer (Step 4 complete)
Deliverables:
- Customer transcript: [Link to recording + transcript file]
- Project JSON: [Attachment: customer-project-json.json]
- Approved MVP "poke": [Link to customer approval email]
- Stakeholder contacts: [Customer PM name + email]
Next actions:
- Generate agents using RAPP Agent Generator (Step 5)
- Target completion: [Date]
Questions: @TeamMemberB @TeamMemberC
Station 2 → Station 3 Handoff:
What Team Member B Passes to Team Member C:
Slack message format:
Project: [Customer Name] - [Project Name]
✓ Status: Agent code reviewed and approved (Step 6 complete)
Deliverables:
- Agent code: [Folder with 6-10 .py files]
- Code review notes: [Any issues fixed, customizations made]
- Integration requirements: [Dynamics version, data sources, API keys needed]
- Project JSON: [Updated with any scope adjustments]
Next actions:
- Deploy to Azure prototype environment (Step 7)
- Record demo and send to customer (Step 8)
- Target demo delivery: [Date]
Questions: @TeamMemberC
Automation Tools for Team Coordination
Slack Bot for Status Updates:
// Auto-post to #ai-projects channel when stage completes
Team Member A completes Step 4 → Bot posts:
"✓ [Customer Name] MVP approved! @TeamMemberB ready for agent generation (Station 2)"
Team Member B completes Step 6 → Bot posts:
"✓ [Customer Name] agents reviewed! @TeamMemberC ready for deployment (Station 3)"
Team Member C completes Step 10 → Bot posts:
"✓ [Customer Name] demo approved! Production planning starts Monday"
Shared Project Tracker:
Use the the Local Project Tracker Tool (tools/localfirst_project_tracker_tool.html) tool to visualize pipeline:
- Column 1: Discovery (Team Members A/B) - Projects in Steps 1-4
- Column 2: Development (Team Members B/C) - Projects in Steps 5-6
- Column 3: Deployment (Team Member C) - Projects in Steps 7-10
- Column 4: Production (Customer IT) - Projects in Steps 11-14
Team can see at a glance: 5 projects in Discovery, 3 in Development, 2 in Deployment, 8 in Production
Key to Scaling: Freeze Frame the Process
Process standardization: The key to scaling is documenting each station with crystal-clear specifications - defining exact inputs, expected outputs, audit criteria, and handoff procedures to the next stage. This "freeze frame" documentation allows team members to operate their stations autonomously with consistent quality.
What this means: Each station has clear inputs, clear outputs, and clear quality criteria. No ambiguity, no "figure it out yourself."
Result: Team Members A and B can run their stations autonomously while Team Member C focuses on deployment bottleneck
Scaling to 20+ Concurrent Projects
How the framework handles massive parallelization
Business Impact at Scale
3-person team capacity: 20-25 concurrent MVP projects, 50+ total projects including production.
Objective
Run 20+ customer projects simultaneously using the same automation workflow, same agents, same team.
Scaling philosophy: Once the standardized process is refined and documented, the framework can handle unlimited concurrent MVPs for unlimited customers - the only constraint being data access. The automation and standardization enable infinite horizontal scaling.
Current Capacity Analysis
In the Local Project Tracker Tool (tools/localfirst_project_tracker_tool.html)
Current team capacity (1 person)
Team Members A + B + C stations
Bottleneck Analysis:
| Stage | Current Bottleneck | Solution |
|---|---|---|
| Steps 1-4 (Discovery) | Customer meeting scheduling | Team Members A + B run in parallel (5-10 projects/week) |
| Steps 5-6 (Agent Gen) | Code review takes 30-60 min/project | Team Member B handles, 5-8 reviews/day possible |
| Steps 7-10 (Deploy/Demo) | Team Member C deployment bandwidth | Automate deployment scripts (ARM templates), batch demos |
| Steps 11-14 (Production) | Customer security reviews (1-3 weeks) | Not a blocker - runs async, doesn't consume team time |
Scaling Strategies
1. Batch Processing
Example: Monday Morning Batch
Scenario: 10 projects reached Step 7 (Deploy Prototype) over the weekend
Old way (sequential): Deploy 1 project, test, move to next = 10 hours
New way (batch):
- Run ARM template deployment for all 10 projects in parallel (8 min each, run simultaneously)
- Use single setup script with loop to configure all 10 Function Apps (30 min total)
- Drag approved agents into Azure File Storage for each (5 min per project = 50 min total)
- Batch test: Run one agent call for each project to verify (10 min total)
Total time: 1.5 hours (vs. 10 hours sequential)
Result: 6.7x faster through parallelization
2. Overnight Automation
Overnight automation: "And then I'm going to let this work overnight and then I'm going to get to the gates of audit and it might take four or five days to get through."
Automatable tasks to run overnight:
- Agent generation (Step 5): Queue 20 agent generation requests to RAPP Agent Generator, let them run overnight
- Code review prep (Step 6): Auto-lint checks, security scans run async
- Demo video rendering (Step 9): Generate demo JSON for all approved projects, render videos in batch
3. Template Reuse Across Similar Customers
This is the AIBAST RAPP pattern at work: the template is the shell, and each customer's live process is the content. Reuse means changing the content, never the shell.
Example: Retail Field Sales Template
Problem: 5 different retail customers all need route planning + shelf recognition agents
Solution:
- Create "Retail Field Sales Template" with 4 core agents (industry standard pattern)
- For each new customer, customize agent parameters (not logic):
- Change Dynamics instance URL
- Adjust store visit frequency rules
- Customize product categories
- Skip Step 5 (agent generation) - go straight to Step 6 (review customizations)
Time savings: Steps 5-6 compress from 2 days to 4 hours
Quality improvement: Using battle-tested agents, not generating from scratch
Capacity Model: 3-Person Team
Weekly Throughput:
| Team Member | Station | Projects/Week |
|---|---|---|
| Team Member A | Station 1 (Discovery) | 3-5 new MVPs defined |
| Team Member B | Station 1 + 2 (Discovery + Agent Gen) | 3-5 MVPs + 5-8 code reviews |
| Team Member C | Station 3 (Deploy/Demo) | 8-10 deployments + demos |
Pipeline Visualization:
Week 1:
- Team Members A/B start 8 new projects (Step 1-4)
- Team Member B reviews 5 agent codebases (Step 6)
- Team Member C deploys 10 prototypes, records 10 demos (Step 7-8)
- 15 projects in production phase (Step 11-14, customer-managed)
Week 2:
- 8 projects from Week 1 move to Team Member B for agent generation
- Team Members A/B start 8 MORE new projects
- Team Member C deploys 8 prototypes from previous week
- 23 projects in production phase
Week 3:
- Steady state: 8 in Discovery, 8 in Development, 8 in Deployment, 25+ in Production
- Total: 49 active projects across all stages
Steady-state capacity: 20-25 projects in active development (Steps 1-10), 50+ total projects including production
Infrastructure Scaling Requirements
Azure Resources (per project):
- Dev/Prototype: 1 Function App, 1 File Storage account (Hot tier), Application Insights
- Production: Customer's Azure subscription (not our cost)
Cost Optimization:
Automated cleanup script:
# Run weekly: Delete prototype environments >30 days old
az functionapp list --query "[?tags.Stage=='Prototype' && tags.LastUsed<'2024-09-15']" | xargs -I {} az functionapp delete --name {}
# Saves: $50-100 per deleted environment
# With 20 projects/month, 10 completing → $500-1000/month savings
The Secret to Infinite Scale
Stateless architecture + Modular agents = No shared state between projects
Each project is completely independent:
- Separate Azure Function App (no cross-project interference)
- Separate File Storage (agents + user memory isolated)
- Separate Copilot Studio solution (customer-specific branding)
Result: Adding Project #21 is identical to adding Project #1. No complexity explosion.
Scaling capability: "This scales infinitely. This scales in parallel... So you could have infinite agents working say for a book factory using the one endpoint."
Warning: Quality Gates Still Required
Don't skip gates for speed: Even at 20+ projects, each project MUST pass all 6 quality gates
Why: One bad MVP that wasn't properly scoped = 3-6 weeks of wasted effort fixing scope creep
Better: Take 30 extra minutes at Gate #2 (Step 4) to lock MVP scope than lose 3 weeks later
Speed Barriers Broken
What each step cost when this guide was written, what it costs now, and what we are going after next
Why this section exists
Every duration in this guide was measured, and was true when it was written. Most of them are no longer true, because the platform underneath the method changed. Rather than quietly overwrite the old numbers, we keep them here as a log. It is how we remember what a week of work used to buy, and it is the honest way to show a customer what changed.
The rule for this log: a row is added when a barrier actually falls, with the evidence that it fell. Nothing goes in as a forecast.
The log
| Barrier | When this guide was written | Now | How we know |
|---|---|---|---|
| Build one agent | 2-3 weeks per agent, hand-written. Step 5 called it "days to weeks" and set the goal at "hours". | Minutes. A scaffolded agent is generated, smoke-tested and live in about fifteen seconds; a hand-written one is live the moment the file is saved. The business logic inside it is still yours to write. | Step 5 of this guide, then. The LearnNew agent shipped in the default agent set, now. |
| See a change take effect | 3-5 days: code change, testing, approval, deployment. | The next question, locally. The local server re-reads its agents folder on every request; the cloud tier refreshes on a five-minute cache. | Measured on a running install: a file saved at 10:27:45 answered on the very next request, with no restart. |
| Set up before you can learn anything | An Azure subscription, a Function App, a storage account, and a deployment before the first lesson. | One command. No cloud account, no subscription, and no model key: the server borrows your existing GitHub Copilot access. | The one-liner installer in this repository, and the auth chain in the local server. |
| Start from nothing | Every engagement began with a blank transcript and an empty folder. | 72 published solutions, 70 of them single-file agents, each with tested operations, a guided workshop and a Copilot Studio solution beside it. | The generated catalog in this repository. |
| Put a demo in front of the field | Planned as a shared, non-expiring cloud tenant with live endpoints, so nobody had to deploy per demo. | No shared tenant at all. The catalog and its workshops are public, and any agent is one command away on a laptop. | The 2025 plan, below, and the published library. |
| Hand a prototype to Copilot Studio | Built by hand in the portal, per agent. | A Copilot Studio solution and its deployment settings ship beside every published workshop, 72 of them today. | The export bundle in each solution folder. |
| Described use case to working prototype | 3-5 days. | Minutes, when the library already covers the problem. Production deployment is still 3-5 weeks, and still mostly waiting for security and compliance. | Step 14 of this guide, then. Measured on a clean install, now. |
What the 2025 plan said, and what happened
The plan this guide shipped with had three priorities and a short list of actions. Most of it landed, one part landed in a different shape than planned, and one part did not land at all. Recorded plainly, because a roadmap is only useful if you go back and mark it.
| 2025 priority | What happened |
|---|---|
| Deliver the committed customer agents and demo videos | Shipped. 72 solutions, 72 published one-pagers, 64 filmed demos. |
| Enable team members with a station-based guide and supporting tools | Shipped. This guide, plus 72 complete workshops and a 72-course Academy with 519 uploadable skills. |
| A shared cloud environment where the field can demo live agents without deploying | Shipped differently. A local server plus a public catalog removed the need for a shared tenant, so the endpoint problem stopped existing instead of being solved. |
| Simplify the deployment scripts to one click | Shipped. An Azure template with a Deploy to Azure button, plus deployment scripts for both platforms. |
| A review and tagging process for the agent library | Shipped, and stricter than planned. Rather than tagging sensitive content, the Constitution bans customer data from the library outright, and every published agent carries a quality tier and a synthetic-data status. |
| Speech-to-text timing so demo videos assemble themselves | Not shipped. Recording a demo is still a manual pass. |
What is next
Keep production boring
Every release is watched by the same one-liner a new reader would run, on a schedule, on all three platforms. A failure opens an incident by itself rather than waiting for someone to notice.
Promote the Academy
The Academy and its workshops soak on the staging ring first and are promoted to production only after they hold. The workshops are the part that turns this guide from reading into doing.
Finish the version one items
The remaining work to call this generally available is licensing, public discussions, and metrics on the production repository. None of it changes the method in this guide.
Where status actually lives: this page is the narrative. Milestone status is tracked as GitHub milestones on the repository, and the release ledger records what shipped and what broke afterwards.
RAPP/1 Reference
Every step of this guide in depth, and the protocol underneath it
What the reference vault is
This guide says what to do at each step. The RAPP/1 reference vault says more about each step and explains RAPP/1, the protocol the Brainstem and its agents rest on: how an agent is identified, recorded, packaged and moved. It is a set of linked notes. Read them here in the browser, or download them and open the folder in Obsidian.
Start where you are
Running the 14 steps
One note per step, with inputs, outputs, the gate to pass, and the protocol behind it. Open the guide notes.
Building agents
The single-file agent contract, the Brainstem kernel, and how this library pins it. Open the building notes.
Implementing the protocol
Canonicalization, content addressing, identity, frames, the wire and eggs, in plain language. Open the protocol notes.
Take it with you
Download the vault to read it in Obsidian. AI tools can read llms.txt, or every note at once in llms-full.txt. Protocol notes are pinned to a named commit of the RAPP/1 specification, and a build check fails if they drift.
Experimental tools
Brainstem agents and browser tools for exploring what's next
Experimental and not an officially supported Microsoft product or service. Provided as is under the repository's MIT license, with no support or warranty. Use at your own risk. Trademark use follows the repository's trademark notice.
Available Tools
Each tool is one file. Brainstem agents install with one command and run on your device. Browser tools open in your browser and keep their data there. The full list is in tools.json.
Project Tracker
Local-First Data Storage
Track customer projects, manage AI agent implementations, and maintain detailed records of your RAPP workflow. Features include project timelines, agent libraries, and export capabilities.
Chat Animation Studio
Demo Creation Tool
Create engaging animated chat demonstrations for your AI agents. Design realistic conversation flows, customize timing, and export professional demo videos for customer presentations.
AI Migration
Brainstem Agent
Bring your instructions, skills, tools and memory from another AI assistant or AI coding tool into your own Brainstem, as plain files on your device. Say "scan", then "plan", then "apply".
curl -fsSL https://microsoft.github.io/aibast-agents-library/docs/experimental/ai-migration/ai_migration_agent.py -o ~/.brainstem/src/rapp_brainstem/agents/ai_migration_agent.py
AI Review Walkthrough
Rapplication
Walk through a responsible AI review of your own AI agent or app, one stage at a time, in chat. Built from Microsoft's public responsible AI guidance. Educational only. Say "start", then "next", then "export".
curl -fsSL https://microsoft.github.io/aibast-agents-library/docs/experimental/ai-review/ai_review_walkthrough_agent.py -o ~/.brainstem/src/rapp_brainstem/agents/ai_review_walkthrough_agent.py
About These Tools
This is a small registry of single-file tools. Every tool runs on your device.
- An agent.py is one Python file a Brainstem loads from its
agents/folder. The model calls it when your request needs it. - A rapplication is a packaged Brainstem app: one or more agents that work together and install the same way.
- To install a Brainstem tool, run its install command. It saves one file into your Brainstem's
agents/folder. No restart needed. - To remove a tool, delete its file.
- Browser tools are single HTML files that keep their data in your browser.