Hacking our solution to higher crew conferences

Summarization header image

Since this weblog was initially printed, I’ve additionally launched the Distill CLI. You’ll be able to learn the observe up weblog publish or tinker with the code on GitHub.


As somebody who takes loads of notes, I’m all the time looking out for instruments and methods that may assist me to refine my very own note-taking course of (such because the Cornell Technique). And whereas I usually want pen and paper (as a result of it’s proven to assist with retention and synthesis), there’s no denying that expertise may help to boost our built-up talents. That is very true in conditions equivalent to conferences, the place actively collaborating and taking notes on the identical time might be in battle with each other. The distraction of trying right down to jot down notes or tapping away on the keyboard could make it arduous to remain engaged within the dialog, because it forces us to make fast selections about what particulars are essential, and there’s all the time the danger of lacking essential particulars whereas attempting to seize earlier ones. To not point out, when confronted with back-to-back-to-back conferences, the problem of summarizing and extracting essential particulars from pages of notes is compounding – and when thought-about at a gaggle degree, there may be vital particular person and group time waste in trendy enterprise with these kind of administrative overhead.

Confronted with these issues every day, my crew – a small tiger crew I prefer to name OCTO (Workplace of the CTO) – noticed a possibility to make use of AI to reinforce our crew conferences. They’ve developed a easy, and simple proof of idea for ourselves, that makes use of AWS providers like Lambda, Transcribe, and Bedrock to transcribe and summarize our digital crew conferences. It permits us to collect notes from our conferences, however keep centered on the dialog itself, because the granular particulars of the dialogue are mechanically captured (it even creates a listing of to-dos). And in the present day, we’re open sourcing the software, which our crew calls “Distill”, within the hopes that others would possibly discover this convenient as properly: https://github.com/aws-samples/amazon-bedrock-audio-summarizer.

On this publish, I’ll stroll you thru the high-level structure of our mission, the way it works, and offer you a preview of how I’ve been working alongside Amazon Q Developer to show Distill right into a Rust CLI.

The anatomy of a easy audio summarization app

The app itself is straightforward — and that is intentional. I subscribe to the concept that programs ought to be made so simple as potential, however no less complicated. First, we add an audio file of our assembly to an S3 bucket. Then an S3 set off notifies a Lambda operate, which initiates the transcription course of. An Occasion Bridge rule is used to mechanically invoke a second Lambda operate when any Transcribe job starting with summarizer- has a newly up to date standing of COMPLETED. As soon as the transcription is full, this Lambda operate takes the transcript and sends it with an instruction immediate to Bedrock to create a abstract. In our case, we’re utilizing Claude 3 Sonnet for inference, however you’ll be able to adapt the code to make use of any mannequin obtainable to you in Bedrock. When inference is full, the abstract of our assembly — together with high-level takeaways and any to-dos — is saved again in our S3 bucket.

Distill architecture diagram

I’ve spoken many instances in regards to the significance of treating infrastructure as code, and as such, we’ve used the AWS CDK to handle this mission’s infrastructure. The CDK provides us a dependable, constant solution to deploy sources, and be sure that infrastructure is sharable to anybody. Past that, it additionally gave us a great way to quickly iterate on our concepts.

Utilizing Distill

Should you do this (and I hope that you’ll), the setup is fast. Clone the repo, and observe the steps within the README to deploy the app infrastructure to your account utilizing the CDK. After that, there are two methods to make use of the software:

  1. Drop an audio file immediately into the supply folder of the S3 bucket created for you, wait a couple of minutes, then view the ends in the processed folder.
  2. Use the Jupyter pocket book we put collectively to step by means of the method of importing audio, monitoring the transcription, and retrieving the audio abstract.

Right here’s an instance output (minimally sanitized) from a latest OCTO crew assembly that solely a part of the crew was capable of attend:

Here’s a abstract of the dialog in readable paragraphs:

The group mentioned potential content material concepts and approaches for upcoming occasions like VivaTech, and re:Invent. There have been ideas round keynotes versus having hearth chats or panel discussions. The significance of crafting thought-provoking upcoming occasions was emphasised.

Recapping Werner’s latest Asia tour, the crew mirrored on the highlights like partaking with native college college students, builders, startups, and underserved communities. Indonesia’s initiatives round incapacity inclusion had been praised. Helpful suggestions was shared on logistics, balancing work with downtime, and optimum occasion codecs for Werner. The group plans to analyze turning these learnings into an inner publication.

Different subjects lined included upcoming advisory conferences, which Jeff could attend just about, and the evolving position of the fashionable CTO with elevated deal with social affect and world views.

Key motion objects:

  • Reschedule crew assembly to subsequent week
  • Lisa to flow into upcoming advisory assembly agenda when obtainable
  • Roger to draft potential panel questions for VivaTech
  • Discover recording/streaming choices for VivaTech panel
  • Decide content material possession between groups for summarizing Asia tour highlights

What’s extra, the crew has created a Slack webhook that mechanically posts these summaries to a crew channel, in order that those that couldn’t attend can compensate for what was mentioned and rapidly evaluation motion objects.

Bear in mind, AI is just not excellent. A few of the summaries we get again, the above included, have errors that want handbook adjustment. However that’s okay, as a result of it nonetheless quickens our processes. It’s merely a reminder that we should nonetheless be discerning and concerned within the course of. Essential considering is as essential now because it has ever been.

There’s worth in chipping away at on a regular basis issues

This is only one instance of a easy app that may be constructed rapidly, deployed within the cloud, and result in organizational efficiencies. Relying on which research you take a look at, round 30% of company staff say that they don’t full their motion objects as a result of they’ll’t bear in mind key info from conferences. We are able to begin to chip away at stats like that by having tailor-made notes delivered to you instantly after a gathering, or an assistant that mechanically creates work objects from a gathering and assigns them to the best particular person. It’s not all the time about fixing the “large” downside in a single swoop with expertise. Typically it’s about chipping away at on a regular basis issues. Discovering easy options that grow to be the inspiration for incremental and significant innovation.

I’m notably interested by the place this goes subsequent. We now reside in a world the place an AI powered bot can sit in your calls and might act in actual time. Taking notes, answering questions, monitoring duties, eradicating PII, even trying issues up that might have in any other case been distracting and slowing down the decision whereas one particular person tried to seek out the information. By sharing our easy app, the intention isn’t to point out off “one thing shiny and new”, it’s to point out you that if we will construct it, so are you able to. And I’m curious to see how the open-source group will use it. How they’ll prolong it. What they’ll create on high of it. And that is what I discover actually thrilling — the potential for easy AI-based instruments to assist us in increasingly more methods. Not as replacements for human ingenuity, however aides that make us higher.

To that finish, engaged on this mission with my crew has impressed me to take alone pet mission: turning this software right into a Rust CLI.

Constructing a Rust CLI from scratch

I blame Marc Brooker and Colm MacCárthaigh for turning me right into a Rust fanatic. I’m a programs programmer at coronary heart, and that coronary heart began to beat so much sooner the extra acquainted I obtained with the language. And it grew to become much more essential to me after coming throughout Rui Pereira’s great analysis on the power, time, and reminiscence consumption of various programming languages, after I realized it’s large potential to assist us construct extra sustainably within the cloud.

Throughout our experiments with Distill, we wished to see what impact transferring a operate from Python to Rust would seem like. With the CDK, it was simple to make a fast change to our stack that allow us transfer a Lambda operate to the AL2023 runtime, then deploy a Rust-based model of the code. Should you’re curious, the operate averaged chilly begins that had been 12x sooner (34ms vs 410ms) and used 73% much less reminiscence (21MB vs 79MB) than its Python variant. Impressed, I made a decision to essentially get my arms soiled. I used to be going to show this mission right into a command line utility, and put a few of what I’ve realized in Ken Youens-Clark’s “Command Line Rust” into follow.

I’ve all the time beloved working from the command line. Each grep, cat, and curl into that little black field jogs my memory lots of driving an outdated automobile. It might be somewhat bit tougher to show, it’d make some noises and complain, however you’re feeling a connection to the machine. And being energetic with the code, very similar to taking notes, helps issues stick.

Not being a Rust guru, I made a decision to place Q to the take a look at. I nonetheless have loads of questions in regards to the language, idioms, the possession mannequin, and customary libraries I’d seen in pattern code, like Tokio. If I’m being trustworthy, studying the way to interpret what the compiler is objecting to might be the toughest half for me of programming in Rust. With Q open in my IDE, it was simple to fireplace off “silly” questions with out stigma, and utilizing the references it offered meant that I didn’t should dig by means of troves of documentation.

Summary of Tokio

Because the CLI began to take form, Q performed a extra vital position, offering deeper insights that knowledgeable coding and design selections. As an example, I used to be curious whether or not utilizing slice references would introduce inefficiencies with massive lists of things. Q promptly defined that whereas slices of arrays could possibly be extra environment friendly than creating new arrays, there’s a chance of efficiency impacts at scale. It felt like a dialog – I might bounce concepts off of Q, freely ask observe up questions, and obtain instant, non-judgmental responses.

Advice from Q on slices in Rust

The very last thing I’ll point out is the function to ship code on to Q. I’ve been experimenting with code refactoring and optimization, and it has helped me construct a greater understanding of Rust, and pushed me to assume extra critically in regards to the code I’ve written. It goes to point out simply how essential it’s to create instruments that meet builders the place they’re already snug — in my case, the IDE.

Send code to Q

Coming quickly…

Within the subsequent few weeks, the plan is to share my code for my Rust CLI. I want a little bit of time to shine this off, and have of us with a bit extra expertise evaluation it, however right here’s a sneak peek:

Sneak peak of the Rust CLI

As all the time, now go construct! And get your arms soiled whereas doing it.

Leave a Reply

Your email address will not be published. Required fields are marked *