DEV Community

AJAYKUMAR POREDDIVAR
AJAYKUMAR POREDDIVAR

Posted on

I built Meeting Notes AI — Paste meeting transcript action items, decisions, summary

Building Meeting Notes AI: A Personal Quest for Efficiency

The Problem

I still remember the frustration of paste-ing meeting transcripts into a document, only to spend hours extracting action items, decisions, and a summary. It was a tedious task that took away from more important work. As a senior developer, I knew there had to be a better way. I wanted to automate the process, but I didn't know where to start. I began by trying out various tools that promised to make meeting notes a breeze, but none of them quite fit my needs. I needed something that could accurately extract insights from meeting transcripts and make my life easier.

What I Tried First

I tried using tools like Otter.ai, Trint, and Temi to automate my meeting notes. While they were good at transcribing audio files, they fell short when it came to extracting meaningful insights. Otter.ai was too expensive for my team's budget, Trint had poor accuracy, and Temi's interface was clunky. I needed something more tailored to my needs, so I decided to build my own solution. I wanted a tool that could not only transcribe meetings but also extract action items, decisions, and summaries with high accuracy.

How I Built It

I built Meeting Notes AI using React, Groq, Vercel, and Stripe. I chose React for the frontend because of its flexibility and ease of use. Groq, a powerful query language, helped me to extract insights from meeting transcripts. Vercel provided a seamless deployment experience, and Stripe made it easy to handle payments. Here's a glimpse of the code that powers the app:

import { groq } from 'groq';
import { client } from '../sanity-client';

const query = groq`
  *[_type == "meeting" && transcript != null] {
    "actionItems": *[_type == "actionItem" && meeting->_id == ^._id],
    "decisions": *[_type == "decision" && meeting->_id == ^._id],
    "summary": summary
  }
`;

const MeetingNotes = () => {
  const [meetingNotes, setMeetingNotes] = useState([]);

  useEffect(() => {
    client.fetch(query).then((data) => setMeetingNotes(data));
  }, []);

  return (
    <div>
      {meetingNotes.map((note) => (
        <div key={note._id}>
          <h2>Meeting Notes</h2>
          <ul>
            {note.actionItems.map((actionItem) => (
              <li key={actionItem._id}>{actionItem.text}</li>
            ))}
          </ul>
          <ul>
            {note.decisions.map((decision) => (
              <li key={decision._id}>{decision.text}</li>
            ))}
          </ul>
          <p>{note.summary}</p>
        </div>
      ))}
    </div>
  );
};

export default MeetingNotes;
Enter fullscreen mode Exit fullscreen mode

This code snippet shows how I used Groq to query the meeting transcripts and extract action items, decisions, and summaries.

What I Learned

One surprising insight I gained from building Meeting Notes AI is that users are willing to pay for a tool that saves them time and increases productivity. I was hesitant to charge for the app, but the feedback from users has been overwhelmingly positive. They're willing to pay a premium for a tool that accurately extracts insights from meeting transcripts, making their lives easier.

Try It Free

Ready to streamline your meeting notes? Try Meeting Notes AI for free at https://meeting-notes-1xeizsbl2-sweths-projects-68683994.vercel.app and see how it can transform your workflow.

Top comments (0)