Azure-Samples / Azure-Samples/interview-coach-agent-framework

Blog post feedback: focus the Interview Coach update on Copilot SDK value

Open
#32 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
166
Forks
71
Avg merge
1m
Merged PRs (30d)
2

Description

## Technical Review

Feedback for [BLOG-POST-UPDATE.md on the `justinyoo-update-blog-post` branch](https://github.com/Azure-Samples/interview-coach-agent-framework/blob/justinyoo-update-blog-post/blog/BLOG-POST-UPDATE.md).

### The value proposition needs to be about embedding Copilot, not adding a second provider

The strongest defensible argument is:

> The GitHub Copilot SDK lets developers embed Copilot's agent runtime in their own applications and connect it to their own tools. Interview Coach shows how that runtime can support a domain-specific experience beyond coding, using existing Copilot access without provisioning a separate Azure model deployment.

That gives someone a reason to choose it from the beginning. A developer building a personal or internal workflow may want Copilot to power the application's interactions and tool calls, while retaining control over the UI, instructions, and business workflow.

The [SDK documentation](https://github.com/github/copilot-sdk#architecture) supports this distinction: the SDK exposes the runtime behind Copilot CLI programmatically. **Copilot is running part of the application, not merely helping the author write its code.** The article should make that clear early.

There are three useful benefits to explain:

| Benefit | How this sample demonstrates it |
|---|---|
| Embed an existing agent runtime in a custom application | The user interacts with a Blazor interview application, while the Copilot SDK powers the agents underneath. |
| Give that runtime application-specific capabilities | The agents receive tools for reading documents and managing interview records, rather than behaving like a general coding assistant. |
| Use the developer's existing Copilot access | The local Copilot path does not require provisioning an Azure model deployment. Account eligibility, organizational policy, and usage limits still apply. |

The third benefit is practical, but it should support the first two. "Someone already has an account" is not enough to carry the article.

### Be precise about what Copilot adds versus what was already there

The Foundry implementation already has Agent Framework orchestration, MCP tools, and specialist agents. Adding Copilot did not introduce those capabilities.

The article should distinguish:

- **Copilot SDK:** access to the Copilot runtime, its sessions, model interactions, and tool execution.
- **Agent Framework:** the application's agent abstraction and the handoff workflow connecting the specialists.
- **Application code and MCP services:** interview instructions, document parsing, and stored interview records.

That means we should **not** claim that Copilot eliminates orchestration code the Foundry version previously required. Agent Framework already handled much of that, and the Copilot integration actually needs some additional adapter logic.

Similarly, there is no evidence here that Copilot produces better interview feedback, runs faster, or costs less. The supported value is developer experience and runtime reuse. A genuine observation from Justin's experience could strengthen the story, but we should not manufacture a superiority claim.

### Explain Interview Coach before showing its architecture

The current "The coach still collects..." sentence assumes continuity with the first article. A new reader needs a standalone explanation before seeing commands or framework types.

Something like:

> Interview Coach is a .NET application for practicing job interviews. You provide a resume and job description, answer behavioral and technical questions, and receive feedback on your responses. Behind the chat interface, specialist agents handle document intake, interviewing, and the final summary.

Then briefly explain that the original implementation used Foundry and this article explores what the Copilot SDK contributes. The earlier post becomes optional background, not required reading.

A screenshot or short example of a question and feedback would make the rest of the technical explanation much easier to follow.

### These are the code sections worth featuring

I would make the article's technical middle revolve around these three areas, rather than authentication and provisioning boilerplate:

| Code area | What to show | Why the reader should care |
|---|---|---|
| Configuring a domain-specific Copilot agent | `CopilotClientMode.Empty` in [Program.cs](https://github.com/Azure-Samples/interview-coach-agent-framework/blob/justinyoo-update-blog-post/src/InterviewCoach.Agent/Program.cs), plus `CreateCopilotSessionConfig` and `AvailableTools` in the [agent factory](https://github.com/Azure-Samples/interview-coach-agent-framework/blob/justinyoo-update-blog-post/src/InterviewCoach.Agent/AgentDelegateFactory.cs) | Shows how the sample uses Copilot for interview work without exposing its built-in shell, filesystem, and coding tools. Explain that this controls tool exposure; it is not a complete security boundary. |
| Connecting the runtime to Agent Framework | `CopilotClient.AsAIAgent()` and the shared instructions/tools passed into the factory | Demonstrates how Copilot participates in the existing application design. This is where the "no second application" benefit belongs, as supporting engineering evidence. |
| Making specialist handoffs work | `MergeCopilotTools`, `MergeCopilotInstructions`, and a short handoff-builder excerpt | Explains the integration challenge honestly: each specialist needs both its business tools and the runtime handoff tools. Show what failed without this handling and how the adapter fixes it. |

Each excerpt should answer a question, not simply display code. For example: **"How do we give Copilot the interview tools without also giving it a coding environment?"**

Keep the handoff discussion scoped to the sample's adapter behavior. The dependency versions float, so "the adapter version used here" would be clearer with a concrete version if the article presents this as a version-specific limitation.

Foundry provisioning and the Cosmos migration should no longer receive equal billing. Keep a short explanation that the existing application services remain in place, update the diagram to include InterviewData MCP, and link to implementation details.

Finally, retain a compact limitations paragraph: Copilot usage is not unlimited or automatically free; hosted applications still need infrastructure and an appropriate authentication design; this sample is not production-ready for real candidate information.

## Readability Review

**Most of the prose is understandable. The larger readability problems are assumed knowledge, repetition, and the order of ideas, with a smaller number of actual grammar problems.** I would preserve Justin's straightforward voice rather than make the article sound more promotional.

### Recommended narrative order

1. **Introduce the application and the problem.** Explain what Interview Coach does and what the reader wants to build.
2. **Explain why Copilot SDK is a useful foundation.** Establish the runtime, custom-tool, and existing-access benefits before discussing provider abstractions.
3. **Show the user experience.** Include a short interview example or screenshot.
4. **Explain the interesting implementation decisions.** Domain-specific tools, the Agent Framework adapter, then specialist handoffs. Introduce each concept before its API names.
5. **State the boundaries and provide one CTA.** Link to the repository's Copilot setup instructions for installation, configuration, deployment, and cleanup.

A title such as **"Build an interview practice app with the GitHub Copilot SDK"** would fit that narrative better than "One interview coach, two backends."

### What happens to the existing sections

| Current material | Editorial treatment |
|---|---|
| Opening and "Why give the same application two backends?" | Rewrite around the application and the reason to embed Copilot. Remove the hypothetical provider-switching premise. |
| "What changes underneath the switch?" | Keep the useful architecture, but introduce it after the Copilot benefit. Rename around integrating Copilot into the app. |
| Foundry provisioning and authentication | Reduce to brief historical context; move the walkthrough to the README. |
| Copilot setup | Promote the runtime and tool-configuration explanation. Move sign-in commands and token-management details to the README. |
| Interview records and Cosmos DB | Keep the explanation of tools and shared records. Remove the database migration and provisioning walkthrough. |
| "Try the choice yourself" and migration instructions | Replace with a concise Copilot-focused CTA. |
| Conclusion, key takeaways, and "Try it, compare it, adapt it" | Consolidate. The article currently ends several times and keeps returning to provider comparison. |

### Grammar and sentence-level edits

These are the specific changes I would make wherever the corresponding material survives the restructuring:

| Current wording | Suggested treatment |
|---|---|
| "The coach still collects a resume..." | "Interview Coach uses a resume and job description to tailor practice questions and feedback." Remove the assumption that readers know the earlier version. |
| "we talked about this Interview Coach app shows the 'production-ready' type of demo" | "The original article introduced Interview Coach as a practical example of an agent application." Fix the sentence structure and remove the unsupported production-readiness claim. |
| "Now, we have evolved to provide two different providers" | "We have since extended the sample with the GitHub Copilot SDK." State the change directly and avoid "provide...providers." |
| "Both have different ways to run the same design." | Remove. It is vague and repeats the surrounding explanation. |
| "The shared boundary is Microsoft Agent Framework's `AIAgent`." | "Agent Framework represents each specialist as an `AIAgent`, allowing the workflow to use either implementation." Explain the abstraction before calling it a boundary. |
| "Both Foundry and Copilot support `Single`..." | "The sample supports `Single` and `HandOff` modes with either provider." These are application modes, not product feature names. |
| "those run options are not consumed directly" | "The Copilot adapter used by the sample does not automatically apply the tools and instructions supplied at run time." Name the actor and explain what is missing. |
| "makes handoff tool declarations callable" | "Wraps the handoff tool definitions as functions the SDK can call." Introduce the purpose before this implementation detail. |
| "allowlists the custom tools assigned to each agent" | "Limits each agent to an explicit list of custom tools." Easier to read without changing the meaning. |
| "Explicit tokens...take precedence over ambient credentials." | "If you configure a token, the application uses it instead of relying on an existing sign-in." Keep the detailed credential order in the setup guide. |
| "Foundry and Copilot are independent choices from orchestration." | "The sample's provider selection is separate from its choice of interview workflow." Clearer grammar and more accurate attribution. |
| "More readings" | "Further reading." |

Also introduce **Model Context Protocol (MCP)** with its role before using it as shorthand. Explain MarkItDown as the document-conversion tool and InterviewData as the service exposing interview-record operations. Mention AG-UI only if its role in connecting the UI to the agents contributes to the explanation.

The closing CTA should reinforce the new argument rather than reopen the comparison:

> Try Interview Coach with the GitHub Copilot SDK using the repository's setup guide. Then adapt a specialist's instructions or connect one of your own tools to explore the same pattern in your application.

Contributor guide

Open the contributing guide

Research direction

Start with blog/BLOG-POST-UPDATE.md on the justinyoo-update-blog-post branch, then read the referenced Program.cs and AgentDelegateFactory.cs sections. Use the requested narrative order and code-focused explanations, keeping setup details linked to the README. Done means a standalone Copilot-focused article with accurate claims, clearer wording, updated architecture context, and a single setup-oriented CTA.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, github
Domain
content, documentation
Issue type
Documentation
Difficulty
3/5
Estimated time
3-5 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
74/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.