AgendaForge

Speaker and Agenda Management SaaS
  • #React
  • #TypeScript
  • #Convex
  • #OpenAI
  • #MCP
  • #Cloudflare Workers
  • #Zapier
  • #n8n
  • #Expo
  • #Stripe
  • #Astro

Product: AgendaForge
Role: Founding Engineer, working directly with the founder
Project Type: Speaker and agenda management SaaS, web and mobile
Stack: React 19, Vite, TypeScript, Convex, Expo, Cloudflare Workers, OpenAI, MCP, Stripe, Astro, Bun, Turborepo


Project Overview

AgendaForge is a platform for conference organizers. At its heart it manages speakers and the agenda: calls for speakers, reviews, sessions, rooms and a published schedule.

Around that core sit the parts that make it stand out. AI that works inside the event. Automations that connect it to the tools teams already use. And a design studio that turns every confirmed speaker into a card worth sharing.

I joined as the founding engineer and worked side by side with the founder, from an early repo to a live product with paying plans. I wrote most of the code across the web app, the mobile apps, the backend, the MCP server and the integrations, and I was part of the product decisions along the way.


Working With the Founder

This was never a ticket queue. The founder owned the vision and the final call. My job was to turn ideas into plans, speak up when the plan and the code disagreed, and ship.

  • Plans before code. For every large feature I wrote a plan with the options, the risks and my recommendation. We went through it together and locked the decisions before I started building.
  • Honest audits. While planning the AI coordinator, I traced every AI feature the website promoted and found that four of the five quietly returned empty results. I brought it to the founder, and we fixed the data first instead of building on top of it.
  • Pushing for safety. I argued for AI that proposes and people who approve. It became a product rule: risky AI actions wait for a human, and every AI change can be reviewed and undone.
  • A shared way to ship. We agreed that merged to main means live, and kept a ship log with the real status of every feature, so we always knew what customers could actually use.
  • Thinking about the business. I reviewed pricing and the payment flow with the founder and flagged where card fees would come out of our margin before a real customer ever paid.

AI Inside the Event

The goal was AI that saves an organizer real hours, not a chatbot in a corner. I built it in three layers.

Spark, the event coordinator

  • A chat assistant on every event page, opened from a corner button or Cmd+J
  • Answers questions about speakers, sessions, sponsors and forms, and acts through the same tools as the rest of the app
  • A Needs you inbox with the actions Spark wants to take, waiting for approval
  • Its own event permission, so only the right teammates can use it
  • History marks every Spark action as asked by, approved by or done on its own

An MCP server for outside AI

  • A remote MCP server so Claude, ChatGPT and Cursor can work with an organizer's events
  • 53 tools across events, sessions, the agenda, forms, submissions, contacts, sponsors and email
  • Sign in with OAuth or a scoped API key
  • Writes need approval by default. Organizers can allow direct writes that expire on their own, with separate switches for destructive actions and for sending email
  • An AI activity review where any change an AI client made can be restored
  • An interactive agenda board that renders inside Claude instead of plain text

AI suggestions across the product

  • Agenda suggestions: AI places unscheduled sessions into rooms and times, and only clash free proposals can be applied
  • Pipeline Pulse: groups lookalike proposals in a form by topic, so reviewers spot overlap at a glance
  • Speaker research: web research on each finalized speaker with sources cited, and a step to confirm it is the right person before anything is saved
  • AI form building and a summary of written answers for each question
  • AI written posts for LinkedIn and X
  • Every AI action shows its cost first and draws from the event's AI credit allowance

Automations and Integrations

Organizers already live in Slack, ClickUp, spreadsheets and automation tools. AgendaForge goes to them instead of asking them to move.

Slack and ClickUp

  • Per event triggers that post to a Slack channel or create a ClickUp task when a form is submitted or a contact changes
  • Message templates with speaker details like name, company, job title and headshot, plus blocks that repeat for every speaker on a proposal
  • A Slack alert whenever an AI client changes something

Zapier, Make and n8n

  • A public Zapier app with instant triggers for contacts, sponsors and sessions, and actions that create records
  • Make scenarios on the same hooks and API
  • A community node for n8n with actions and triggers, plus a setup guide
  • Lifecycle events worth automating: speaker confirmed or declined, submission created, review completed and event published

Developer platform

  • A public REST API with an OpenAPI spec, scoped API keys and rate limits
  • Signed webhooks
  • Google Sheets sync and a WordPress plugin

Design Studio

Every event needs speaker announcements, and every speaker is a chance to promote the event to their own audience. Design Studio is a Canva style editor built into the product for exactly that.

  • A full canvas editor: multi select, grouping, locking, a layers panel, smart guides and distance measuring with Alt
  • Text that hugs its content, a color and font picker, canvas backgrounds and autosave
  • Brand kits for each organization and templates shared across events
  • Cards made automatically when a speaker is approved or confirmed, filled in with their name, photo and talk
  • Published card pages and share kits, so speakers post their own card with a ready caption
  • Referral tracking that shows which shared cards brought in registrations
  • Social posts that carry a speaker's card as the image, rendered on the server and planned on a content calendar

The Core: Speakers and Agenda

Under all of this is the everyday work of running a program.

  • Call for speakers forms with themes, review rounds, scoring and conflict of interest rules
  • Speaker and sponsor portals with tasks, file requests and personal schedules
  • An agenda grid with rooms as columns, zoom levels, drag and drop and live clash warnings
  • A draft agenda with a publish step that shows what changed and emails the speakers affected
  • Room screens beside each door that show what is on now and next
  • Ticketing with Stripe, badge printing and a native app for checking people in at the door

Tech Stack

Apps

  • React 19, Vite and TypeScript: The organizer web app and public pages
  • Expo: The organizer mobile app and the door app
  • Astro: The marketing site, docs and changelog

Backend

  • Convex: A real time database and server functions, with access rules in one place
  • WorkOS: Sign in and organizations

AI

  • OpenAI: The Spark coordinator, agenda suggestions, form tools and post writing
  • MCP on Cloudflare Workers: The remote MCP server, with OAuth and scoped keys
  • Exa: Web research behind speaker dossiers

Automations and media

  • REST API and signed webhooks: The base under Zapier, Make and n8n
  • Cloudflare Workers and R2: Uploads and delivery for every file, including Design Studio media

Tooling

  • Bun and Turborepo: One workspace for every app, integration and shared package
  • Unit, integration and regression tests across packages

Key Technical Challenges

1. AI that proposes, people who decide

An AI that can change a live event is useful and dangerous. If it moves a session or emails a speaker by mistake, the organizer pays for it in front of their audience.

So every AI write goes through the same permission checks as a person. Risky actions wait in an approval inbox. Direct writes from outside AI clients are off by default, expire on their own when switched on, and keep destructive actions and email behind their own switches. Every change lands in the history with who asked, who approved, and a way to restore it.

2. Agenda suggestions that can never create a clash

The model returns a batch of placements at once. Checking each one against the saved schedule is not enough: two suggestions can both land in Room A at ten, and each one looks fine on its own.

I added a validator that checks every placement against the saved schedule and against the rest of the batch, for rooms and for speakers. It also rejects any ID the model made up or pulled from another event. Only clean suggestions can be applied.

3. One set of rules for every writer

Sessions can change from the web app, the REST API, MCP, Spark, imports and portal tasks. If each path kept its own checks, they would drift apart.

I moved the scheduling rules into one conflict core that every writer calls. A proposal cannot be scheduled from any of them, and overlap warnings read the same everywhere.

4. One webhook engine, many automation tools

Zapier, Make and n8n all want triggers and actions, each in their own format. Building three separate integrations would triple the upkeep.

Instead I built one public API with signed webhooks and subscribe hooks, and made each tool a thin layer on top. A new event type shows up in all of them at once.

5. Turning a card builder into a design tool

Design Studio started life as a simple speaker card builder. Patching it into a Canva grade editor would have left two systems living in the code.

With the founder we chose a clean break: a new data model, the old code removed, and the one card in production worth keeping carried over by a seed. All media moved to object storage behind an edge worker in the same release, so the new editor never touched the old file path.


Key Learnings

  • Audit what exists before building on top of it
  • AI should propose and people should approve until trust is earned
  • One solid core with thin adapters beats many separate integrations
  • Writing the plan with the founder first made the build faster, not slower

Conclusion

AgendaForge is the biggest product I have worked on, and the one where I had the most say. I helped shape what we built, not only how we built it.

Working as a founding engineer taught me to think like an owner: about the organizer at the venue, the cost of every AI call, and every promise on the website.

Back to Work

Contact me

Send me an email or message me on LinkedIn if you're looking for someone who builds without the fluff.

Open to work
Please wait...