This image is an illustration of a leader sharing some information with their team.

Improving my approach: Using AI to Documenting Solution Designs for Development Teams


As we prepare for the next release of SmartFlo, I wanted to share a way that I use SmartFlo to help me get things done.

It has always been interesting and a challenge to be the person who leads the discussion with the customer and what they are looking for in terms of having a business process transformed or a system built for them. The most important part following the discussion is communicating with the development team on approach, pitfalls, and ideas. This often falls to the solution architect or business owner, who has to effectively communicate what they are looking for, design approaches, etc, to the development teams.

In this role, I explain what it is that we are building and why. I will pretty much always do some research, provide guidance as to how to do things, and what to watch out for so that the team are going to be taking a successful approach and hopefully not get blocked.

As part of this process, I need to explain how and the expectations of what the customer wants. Additionally, there are often a lot of other factors which make up what different stakeholders are looking for, and those will have been discussed with the pre-sales team. It is important that those discussion points are handed over successfully so that the delivery teams build the right thing.

Nine times out of ten, it comes down to communication and ensuring that the design and intention is clearly communicated and, most importantly, written down.

This allows the Dev team to ingest the design and approach in their own time and in a repeatable way.

Recently, I have been using SmartFlo to help me capture this information in a consistent and well-structured way.

The SmartFlo template that I have created has the following sections to capture the important information, such as security considerations, number of users, data size, areas of risk, concerns and more.

So why don’t we delve into what the template looks like and the process of creating this content?

To create the document, I simply have a meeting with myself and/or another member of the team, and we talk through the solution.

We talk through how we expect it to be built. We include what is being built and why. We talk about pitfalls and areas of concern. We really delve into the details so we can get as much information recorded in that meeting.

I then finish the meeting and run SmartFlo. This will create the document, which is then reviewed by me. I make any necessary updates, and then it’s ready to share with the team for feedback.

Here is an example of the output

Over time of using this process, the template has been refined further to help pick out areas which need their own section. Such as authentication or what licenses are required.

SmartFlo has dramatically reduced the time taken to write these documents, but it has also helped to improve the quality and consistency of what is produced.

Now with SmartFlo, what used to take 90 -120 minutes to write now takes 20-30 minutes!

Creating the template

Creating the SmartFlo template is straightforward. We take our standard company-branded template and create some sections to record the key information.

You can see this below.

We upload the template into SmartFlo and then use the following to describe the template.

For each of the sections, we tell SmartFlo how to fill out the template.

That is it, there is some good detail in the template and getting that right can take a couple of attempts, but it’s incredibly quick and easy to get one of these templates out.

What do you think?

I would love for you to benefit from tools such as this and improve how you get things done. To help, you can install and try out SmartFlo, by getting started and signing up for a 7-day trial.

Please let us know what you think!


Teams AI Library Blog Series: Episode #1 – Setup A Teams AI Library-Based Application to Reason Over SharePoint Content with Azure AI Search


Introduction

This article is the product of discussions that occurred at a recent Microsoft 365 PnP Dev community call.

On the call. several discussions were asking to have content around setting up a Teams app. The Teams App should be able to use Generative AI (Ideally with the Teams AI library) that can reason over content in a SharePoint Document library.

Back in December, I built a little app from one of the Teams AI library samples to do just that. I had been thinking about authoring this article for a couple of months but thought that someone else would do it.

Anyway, I have not really found anyone who has put something out there quite like this. Yes, there are lots of articles about Teams AI and Copilot Studio but not quite like this one, so here it is.

The Teams AI library is a fascinating toolset and enables developers with relative ease to be able to create Teams-based Chatbots which integrate with Open AI or Azure Open AI Services to deliver solutions using Generative AI.

The nice thing about the Teams AI library is the way that you can build the prompts to deliver clever applications. Do not believe me? Check out the Twenty Questions sample.

Last year, one of the projects that I wanted to build, was to create a bot that can consume SharePoint content via Azure Open AI Services through Azure AI search. The problem was that when I came to look at this, no abstract or example referenced allowed you to use Azure AI Search with Teams AI library.

This article is part of a series of blog series which will describe how to get this all set up and show you how an extension to the library to be able to use Azure AI Search. As I started authoring this article, I realised that it would be quite overwhelming as one article, so I have split it up into a blog series.

To help consume this content there will be the following articles:

Let’s get into it.

Solution overview

The beautiful thing about the Teams AI Library is that it handles a lot of the complexities of chatbots for you.

For example, AI-powered chatbots work better if they have the history of the conversation included as part of the prompt. This way they are more natural to use, less annoying and behave in the way that you would expect.

Of course, the Teams AI Library has a mechanism for reasoning over content. It uses the Retrieval Augmentation Generation (RAG) pattern to take a user’s natural language prompt, extract the intent and pass that to a data source for extract of results and bringing those results back to the LLM for a natural language response to the user.

In Teams AI Library these are called data sources and there is an interface provided that you can implement.

However, the samples that I have seen implemented are for a local file system of files. Now, I want to be able to use the data source from an Azure AI Search for these queries. By doing this we can access content hosted in SharePoint, Azure Blob Storage and a whole lot more using third-party connectors.

So, I built this abstraction, the AzureAISearchDataSource which implements the DataSource interface and allows you to use Azure AI Search as the data source.

What is more, I have shared this library with you via my GitHub repository. This has the current implementation and will be updated as required.

In the rest of this post, I will explain the steps that are needed to build and deliver this solution. The solution includes the setup of:

  • SharePoint Document Library.
  • Azure AI Search
  • Azure AI Search Indexing
  • Building the Microsoft Teams application.

I will say that the landscape is moving quickly so where possible I have referred to Microsoft articles to help describe the steps. Hopefully, that way if something changes, you’ll still be able to continue setting up the solution.

However, if it is not clear please reach out to me.

I am assuming that you already have your SharePoint content setup that you wish to reason over, with your GPT model.

Next Steps

In our next post, we will start you on your journey by setting up the Azure AI infrastructure for your solution.