Sharing my AI builder notes summary Proof of Concept

Options

I’m excited to explore the different AI Builder models to see how they may have practical applications for nonprofit organizations. See my Birthday Campaigns with AI Builder as another example.

Problem statement: End users often don’t take the time to read through Action history before engaging with a donor or prospect

Solution: AI tools could be used to create a plain text summary of Actions and Action Notes

Workflow design:

This flow uses the Trigger a flow from a SKY Add-in button template for Power Automate.

Category: Automation

Required connections:

  • Raiser’s Edge NXT Constituents
  • Raiser’s Edge NXT Interactions
  • Blackbaud SKY Add-ins
  • Approvals
  • Dataverse/ AI Builder
  • Content Conversion
  • Microsoft Outlook (Gmail could be substituted)

Steps:

  1. End-user requests an Action Notes Summary from the Constituent record in Raiser’s Edge NXT.
A screenshot of a computer  Description automatically generated
  1. End-user receives a Toast message that their request has been received
  2. Actions are filtered to those in the last 6 months and sorted descending based on Action Date
  3. Action details are analyzed by AI builder and summarized
  4. The Action Summary is emailed to the requester
  5. A Constituent Note is created with the Action Summary

Configuration updates:

  • For information on how to create a SKY Add-in to invoke a flow, see this tutorial. And check out @Ashley Moose's handy SKY Add-in URL Builder.
  • You may want to change the date range of Actions that are analyzed. Edit the ‘Filter array – only include Actions in the last 6 months from the run time’ to the required number of days.
0f4a167b5322b6ddacea623d0838d535-huge-im
  • Update your Create a constituent note Type for where you want the Note saved

AI Builder learnings:

  • Microsoft requires you to insert an Approval step after the ‘Create text with GPT using a prompt’ action. However, you can set that Approval to timeout after a minute and not send a notification. By ‘configuring run after’ to also include ‘is skipped’ and ‘has timed out’ the flow will continue without the approval. Since this summary is not being viewed by the donor (like text generated in an acknowledgement), I was ok with foregoing the approval.
  • The AI Builder model for “Summarize text” is geared towards longer form documents. When I entered sample Action Notes that were at least 50 words, the summary worked well. When there wasn’t enough data in the Action Notes, I received a friendly response that “I'm sorry, but the text provided is too short to generate a meaningful summary.” Therefore, you will likely want to update the flow to only include specific action types or actions where there are notes. If you store donor profile files as attachments or in SharePoint as PDFs these could also be included for analysis.

Thank you to @Glen Hutson for the assist with troubleshooting.

Comments

  • @Heather McLean I have configured approval to 'is skipped" but it still does not work.

    138b8ee94dcc3800b64bffc571c02f71-huge-im

    I am missing something else? Thanks…Bob

  • @Bob Rickards - also check “has timed out”. Let me update my post.

  • @Heather McLean Yeah..still not working. ‘Start and wait on approval’ gives me:

    “ActionTimedOut. The workflow action 'Start_and_wait_for_an_approval' timed out while waiting for webhook callback.”

    Is there another piece we are missing? Love this concept by the way. You could create a gift summary or profile summary. Great stuff!

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 PowerUp Challenge #3 Gift Management Name Dropper

    @Bob Rickards
    hmm, this looks odd. I don't see any reason why you would want to “configure run after” for a “compose” action that 99% of time should be successful (unless the compose uses expression that has error, which should be fixed instead of using configure run after.

    I will load this flow and check it out when i got some time later

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 PowerUp Challenge #3 Gift Management Name Dropper

    @Bob Rickards
    Ok, so I loaded the flow, a few things to note:

    • After the Compose - convert array to string and sort descending based on recency action, it is the action Create text with GPT using a prompt, which Configure run after is not needed.
      • In case you are not familiar with Configure run after, your screenshot suggest that you are trying to change configure run after on the Create text with GPT using a prompt, which is looking at the previous action's result to see if itself will run or not,
    • @Heather McLean after importing the flow, I see that the action Send an email (V2) that contains the summary has configure run after “is successful” and “has timed out”. Which I dont' know if that's really what you want to do here. Basically this means, if the request to approve the GPT generated text was “timed out” (the “approver” never approved), an email with the generated text should still be emailed, does not sound right.
      • Actually, the way your flow is now, even if the approver rejected the approver, an email with the generated text still goes out too

    @Bob Rickards before messing with configure run after, what issue were you having (error message from flow run), let's fix that.

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 PowerUp Challenge #3 Gift Management Name Dropper

    @Heather McLean

    In general for an approval, there are a few situation you have to take into consideration (assuming you did not change the “Approval type” to custom response):

    • Time out - approver never touched the approval request
    • requestor (if specified) cancel the request
    • approver click Approve
    • approver click Reject
    86734756716bb03ba27849e1812d1cbf-huge-im
    44dcea7f121060cd67aa6d9df15bc123-huge-im

    Meaning, you need an action added as parallel branch, and that action needs to have “timed out” as configure run after.

    then you need an action (I use switch) that condition on the “button” being clicked (cancel result in blank Approval Outcome, which goes into the “Default” switch case, other 2 switch case is Approve and Reject.

  • @Alex Wong Ok…i made the change…but here is what has been happening.

    d3ff7d0b9bf2d43762667d7f12cbbcc6-huge-im

    It seems to skip the approval and says the email was completed yet I do not get an email nor does it update the actions list after that.

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 PowerUp Challenge #3 Gift Management Name Dropper

    @Bob Rickards
    go to the approval 3-dots… click on setting, remove the string there for time out. Normal approval time out is 30 days (or was it 28 i forgot now).

    currently, it is PT1M, meaning the approval action will time out after 1 minute.

    2nd problem, the email action will execute as it has configure run after time out also, and your result show it was executed, so why did you not get email is the question, open the email action and check the info in it, what email address was sent to will be shown.

  • @Alex Wong Ok…made the changes you suggested. I Also went to the power automate approval section to approve the process. (we need to find a work around as no one wants to sit and approve all these requests) I still did not get an email or have an action added.

    a58aaa189c26b1bf22574f26e73c3c5a-huge-im

    It does have my email and the email is correct.

  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 PowerUp Challenge #3 Gift Management Name Dropper

    I got this flow loaded and ran it and found the following issue that @Heather McLean can fix in the template:

    • UNLESS your intention is actually for no one to approve the request, let it quickly time out and do the rest of the work of sending the email and recording the constituent action. Then you might just want to do PT1S (1 second timeout)
      • OTHERWISE
      • Approval setting - PT1M - 1 minute time out is way too short
      • Approval Enable notification = No means no email or team notification that there's approval to approve, should do Yes on this
      • previously mentioned action “pathing” where you take care of when the request timed out, when request is rejected or cancelled, and when it is approved.
    • putting the AI generated text as “Item link” is not good. item link and item description is like you have a cloud document (i.e. sharepoint) and you want to link it with the approval for the approver to click to see. the information from the AI generated text should be in the Details section (unforunately, Details do not take HTML code, it takes “Markdown”, so get rid of the AI generation of HTML, just plain text is fine.

    some screenshot of my run:

    3bc5123f47d14dc4b41df69be43f3f0f-huge-im
    approval
    141692b766c05bb9df06c4bdb4f60f0a-huge-im
    email after approval
    a94ec3667f31c3c4181651184d8bf796-huge-im
    action created on constituent after all is done
  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 PowerUp Challenge #3 Gift Management Name Dropper

    As for the email that you trying to use HTML. I'm going to assume that's b/c the AI generated text has “paragraph” (new line character) that isn't “displayed nicely” in the email. There are a few things you can do to handle this, one is using a <pre> HTML tag.

    9ddbad1a83d8e858f248d74836b363d3-huge-im

    this will preserve the “paragraphing”

    OR you can simply send a plain text email, not HTML email.

  • @Alex Wong

    • My intention is this flow was for No one to approve the request. Since this isn't donor facing content, it is clearly designed for personal use, and is marked as AI Generated, I felt the approval step was meddlesome to the process.
    • If you want to see an example of more complex approvals of donor-facing AI content, please look at my Birthday campaign example.
    • In my tests the HTML presented the text in the final email well formatted, but then it didn't look great in saving of the action/ note. That's why I used the HTML to plain text action to just revert it back before saving there.
  • Alex Wong
    Alex Wong Community All-Star
    Ninth Anniversary Kudos 5 PowerUp Challenge #3 Gift Management Name Dropper

    @Heather McLean
    Understood.

    The only issue here would be the approval itself. A timed out request will still show up in the approval section of Teams as “Requested” status and will not go away due to the time out, this can quickly become a “confusion" factor. I understand that you are trying to satisfy the Power Automate requirement of having an approval action right after GPT generated text, then have the approver be a “service” account where no one will login and use.

    As for the remaining steps that @Bob Rickards is having issue with, you don't need to change the approval steps or configure run after differently from when it was imported from template. it should work as-is (though as the Approval is meant to time out, having configure run after (on the “send an email” action), you really only need the “time out” checkbox checked, but that's minor, and won't hurt anything to keep the “success” checkbox checked. If your email action is successful, you definitely should have the email in your inbox. If you still don't find it, check the email connector to see which account the email is coming from and let your IT team know to do a message trace on the email. If your constituent action step is successful (I haven't seen a screenshot of that action to know if it succeed or failed), then the constituent record will have the action created. If you are not getting, will have to dig into the “output” of the action to see why.

Categories