Turn rough meeting notes into a clean summary, action items, risks, and decisions.
This is a small AI workflow project built for a professional portfolio. The goal is to show a practical business use case, a polished interface, and a clear example of structured LLM output without requiring a large or complicated codebase.
This app takes unstructured meeting notes and turns them into:
- A concise summary
- A list of action items
- A list of risks or blockers
- A list of decisions made during the meeting
It supports two modes:
Demo AI: local rule-based parsing so the app works immediatelyLive AI: OpenAI-powered structured output using the Responses API
- It solves a real problem that businesses understand immediately
- It demonstrates prompt design and structured outputs
- It shows how AI can turn messy input into organized workflow artifacts
- It is simple enough to run locally, review quickly, and discuss in interviews
- LLM-powered workflow automation
- Structured output generation with JSON schema
- Converting messy text into usable business deliverables
- Clear fallback behavior when an API key is not present
- Separating frontend display logic from backend AI orchestration
- Node.js
- Vanilla HTML, CSS, and JavaScript
- OpenAI Responses API
- Local
.envconfiguration
meeting-notes-to-action-items/
data/
sample-notes.txt
public/
app.js
index.html
styles.css
.env.example
.gitignore
package.json
README.md
server.js
git clone <repo-url>
cd meeting-notes-to-action-itemsnode server.jsVisit:
- Click
Load Sampleto insert example meeting notes - Click
Analyze Notesto generate results - Or paste your own notes into the text area
If no OpenAI API key is configured, the app still works using a built-in demo parser.
This is useful because:
- the project is runnable right away
- reviewers can test the UX without extra setup
- the app still demonstrates the intended workflow
In demo mode, the badge in the output panel shows Demo AI.
If an OpenAI API key is configured, the app sends the notes to the OpenAI Responses API and requests structured output using a JSON schema.
In live mode, the badge in the output panel shows Live AI.
In the project folder, run:
cp .env.example .envOpen .env and update it to look like this:
OPENAI_API_KEY=your_real_api_key_here
OPENAI_MODEL=gpt-5.4-mini
PORT=3000Notes:
- Do not leave
your_api_key_herein place - Do not add spaces around the
= .envis ignored by Git and should not be committed
If the server is already running:
- Press
Control + Cin Terminal - Run
node server.jsagain
When live mode is working correctly, the app should use OpenAI and show Live AI in the mode badge.
A visitor can use this repository in two ways:
This is useful for employers, clients, or collaborators who want to understand:
- the problem being solved
- the interface and user flow
- the backend request logic
- how structured AI output is handled
Anyone can clone the repo and run it:
git clone <repo-url>
cd meeting-notes-to-action-items
node server.jsIf they want live AI output, they also need their own OpenAI API key in a local .env file.
- public/index.html: page structure and app layout
- public/styles.css: visual design and responsive layout
- public/app.js: frontend behavior and result rendering
- server.js: static server, demo parser, and OpenAI request logic
- data/sample-notes.txt: example notes for testing
Check that .env contains your real OpenAI key, not the placeholder value from .env.example.
Make sure:
.envexistsOPENAI_API_KEYis set- you restarted the server after editing
.env
.env is a hidden file. You can create it in Terminal with:
cp .env.example .env
open -e .envPress Control + C in the Terminal window where node server.js is running.
- Add export to Markdown or email-ready format
- Add copy-to-clipboard buttons for generated sections
- Add upload support for transcript files
- Add saved history for prior meeting analyses
- Add rate limiting and authentication if the project is later deployed
If you discuss this project with a client or employer, a few honest talking points are:
- “I built a tool that turns messy meeting notes into structured follow-up outputs.”
- “I used OpenAI’s Responses API with structured JSON output.”
- “I designed the app so it still works in demo mode without requiring API setup.”
- “I focused on a practical business workflow rather than a novelty AI demo.”