Inspiration
(This is the one section I genuinely can't write for you — why did you personally care about this problem? A specific meeting where an action item got dropped? A team you're on that's bad at follow-through? Devpost readers respond to a real, specific moment far more than a generic "meetings are inefficient" line.)
What it does
Paste a raw meeting transcript. GPT-5.6 extracts decisions, action items (owner, due date, priority), and open questions — each one grounded to the exact transcript line it came from. Nothing is filed until you review and approve it. Confirm, and it posts a recap to Slack, creates one Linear issue per action item, and writes a full meeting-notes page in Notion — live, not a mockup.
How we built it
- Backend: FastAPI + a small Python package (
relay/). Frontend: a single HTML file, no build step. - GPT-5.6 handles the one step that needs real reasoning: unstructured transcript → structured JSON (via structured outputs / JSON schema).
- Filing (Slack/Linear/Notion) is deterministic, direct API calls, not an LLM in the loop — more on why below.
- Model provider is swappable: OpenAI directly, or OpenRouter (so the app works on free models too).
What we learned
- The instinct to route everything through an LLM agent is wrong when the data is already fully structured. An agent is for judgment calls; filing an approved record has none left to make.
- Free-tier models are meaningfully worse at multi-step tool-calling than at single-shot structured extraction — the gap is bigger than we expected.
- Notion's page-creation API is strict about nested block shapes
(typed unions,
parentmust be an object) — a good stress test for any model's structured-output reliability. - "The agent said it succeeded" and "it actually succeeded" are not the same claim, and you have to verify the second one independently.
Challenges we ran into
- Live-tested three different models (including a 550B one) for the filing step. All three failed differently: one returned "success" after calling zero tools; one completed only 2 of 5 Linear issues before garbling; the biggest one made 8 different malformed attempts at Notion's block schema before hitting the tool-call limit.
- Caught a real correctness bug because of this: the app was reporting "filed" any time the agent didn't throw an exception — even when it had created nothing. Fixed by verifying actual API responses instead of trusting the agent's summary.
- The fix that actually worked: since the approved record is already structured JSON, we rewrote Slack/Linear/Notion filing as direct, deterministic API calls instead of agent-orchestrated ones. That fixed reliability and a garbled/mixed-language text bug in Slack messages, in one move.
- [Add your own: anything about OAuth/token setup, Windows-specific quirks, or the actual Codex session that gave you trouble worth mentioning.]
Built With
- codex
- css
- fastapi
- gpt-5.6
- graphql
- html
- httpx
- javascript
- json-schema
- linear-api
- mcp
- node.js
- notion-api
- openai
- openai-agents-sdk
- openrouter
- pydantic
- python
- rest-api
- slack-api
- uvicorn
Log in or sign up for Devpost to join the conversation.