Skip to content

Repository files navigation

Strategic Release Notes Generator

This AI-powered application transforms raw Azure DevOps work item data into value-driven, stakeholder-focused release notes. It analyzes technical details and value propositions to craft communications tailored for executives, sales, marketing, and support teams.

Features

  • Connects directly to Azure DevOps using a Personal Access Token (PAT).
  • Fetches work items based on Release Version and an optional Iteration Path.
  • Uses a Large Language Model (LLM) to generate tailored release notes for different audiences.
  • Provides a review screen to approve, reject, or edit the AI-generated content.
  • Compiles all approved notes into a final Markdown document, ready for distribution.

Tech Stack

  • React
  • TypeScript
  • Tailwind CSS
  • Google Gemini API

Switching LLM Providers (e.g., to AWS Bedrock)

The application is designed to be model-agnostic, allowing you to switch from the default Google Gemini provider to another LLM service like AWS Bedrock. This is managed through a simple abstraction layer.

How It Works

  • services/geminiService.ts: This file contains the specific implementation for calling the Google Gemini API.
  • services/llmService.ts: This is the central abstraction layer or "router". It determines which underlying LLM service to use based on a configuration constant. Your application components should only call functions from this file, not from the specific service files.

Instructions to Add and Use a New Provider (e.g., AWS Bedrock)

Follow these steps to integrate a new LLM provider:

Step 1: Create a New Service File

Create a new file in the services directory for your provider. For example, services/bedrockService.ts.

Step 2: Implement the Provider Logic

Inside your new file (services/bedrockService.ts), you must implement and export a function named generateSingleItemNote. This function must have the same signature as the one in geminiService.ts:

// Example: services/bedrockService.ts

import { WorkItem, StakeholderNotes } from "../types";

// You will need to install and import the AWS SDK
// import { BedrockClient, ... } from "@aws-sdk/client-bedrock"; 

export async function generateSingleItemNote(
    item: WorkItem, 
    model: string // e.g., 'anthropic.claude-v2'
): Promise<StakeholderNotes> {
    
    // 1. Format the work item data into a prompt for your chosen model.
    const prompt = `...`; // Construct your prompt here

    // 2. Initialize and configure your AWS Bedrock client.
    // const client = new BedrockClient(...);

    // 3. Make the API call to AWS Bedrock.
    // const response = await client.send(...);

    // 4. Parse the response from Bedrock. It must be parsed into
    //    a JSON object that matches the `StakeholderNotes` interface.
    const parsedNotes: StakeholderNotes = JSON.parse(response.body);

    // 5. Return the parsed notes.
    return parsedNotes;
}

Step 3: Register the New Provider in the Abstraction Layer

Open services/llmService.ts.

  1. Import your new function at the top of the file. It's best to rename it on import to avoid naming conflicts.

    // services/llmService.ts
    import { generateSingleItemNote as generateWithGemini } from "./geminiService";
    import { generateSingleItemNote as generateWithBedrock } from "./bedrockService"; // Add this line
  2. Update the case 'BEDROCK' inside the generateSingleItemNote function to call your new implementation.

    // services/llmService.ts
    
    // ... inside the generateSingleItemNote function
    switch (LLM_PROVIDER) {
        case 'GEMINI':
            return generateWithGemini(item, model);
        case 'BEDROCK':
            // Replace the placeholder with your new function
            return generateWithBedrock(item, model); 
        // ...
    }

Step 4: Switch the Active Provider

Finally, still in services/llmService.ts, change the LLM_PROVIDER constant to activate your new service.

// services/llmService.ts

const LLM_PROVIDER: 'GEMINI' | 'BEDROCK' = 'BEDROCK'; // Change 'GEMINI' to 'BEDROCK'

That's it. The application will now route all AI generation requests through your new AWS Bedrock service without any changes needed in the UI components.

About

connect to ADO and build Release notes using AI

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages