Crafting experience...
6/12/2026
Built At
Progress x GitNation
Hosted By
GitNation
Talks & workshops by core teams and top engineers.
Conference speakers prepare talks almost completely blind. And they are the key to any succesful event. They write their content weeks in advance for an audience they've never seen, and the only feedback loop is the Q&A after the talk β when it's too late to adapt. The problem affects speakers most directly, but it ripples outward: attendees sit through talks pitched at the wrong level (a senior-heavy room getting an intro talk, or 55% juniors getting deep internals), organizers field "the talk wasn't what I expected" feedback, and sponsors get zero signal about who's actually in the room. The data to fix this already exists β it's sitting in the registration system β but nobody turns it into something a speaker can act on.
CrowdShift is an AI-powered audience intelligence layer on top of conference registration data. As tickets sell, it builds a continuously updating picture of who's actually coming to each talk: demographics, tech stacks, experience levels, and pre-submitted questions. The speaker gets a timeline slider showing how their audience evolved from "talk confirmed" to "sold out" β and at any snapshot, can generate an AI brief that translates raw numbers into concrete advice: "Your audience shifted from 65% senior to 55% junior. State management is the #1 concern Lead with Zustand vs Redux, cut the fiber internals section." Three role-based views serve the whole ecosystem: speakers see aggregate insights for their talk, organizers see the full attendee picture plus per-segment marketing copy, and sponsors see privacy-safe aggregates only β no PII ever crosses that boundary.
The frontend is a React + TypeScript SPA (Vite) that communicates with a FastAPI backend over REST. The user logs in by role β speaker, organizer, or sponsor β and the frontend fetches talk snapshots, demographics, and AI briefs from the backend based on their context. The backend computes demographics in real-time from a SQLite database seeded with 500 synthetic attendees, their registrations, and milestone snapshots. When a speaker requests a brief, the backend aggregates the audience data for that snapshot and sends it to a Gemini AI agent, which returns a structured JSON brief (headline, profile, shift alert, recommendations, tone). If the API key isn't available, a rule-based fallback generates the brief locally. The frontend renders everything through Kendo UI for React β charts for demographics, grids for questions and attendee data, and a slider for scrubbing through the registration timeline.
Learning Kendo UI from scratch in a hackathon timeframe β figuring out the theming system, chart APIs, and grid configuration all at once. As a solo neurodivergent developer, scoping a full-stack system (React frontend, Python backend, AI agent, seeded database, role-based access, privacy model) and actually shipping it in under 24 hours meant constantly fighting the urge to over-engineer while still delivering something cohesive.
Picked up Kendo UI for React cold and built a full dashboard with interactive charts, filterable/sortable/pageable grids, and a timeline slider β all themed with dark/light mode. The Grid component in particular is incredibly powerful out of the box. Also proud of the end-to-end flow: registration data β snapshot milestones β real-time demographics β AI-generated speaker brief, all wired up and working live.
The obvious next step is replacing seeded data with live integrations β Tito, Eventbrite, and conference CMS webhooks β so snapshots update in real time instead of at milestones. After that: speaker-side notifications ("your audience shifted >15% since your last brief"), question clustering so 200 submissions collapse into 5 themes, possible surfacing of the most repeated ones, and post-talk feedback loops that close the circle by comparing the predicted audience against who actually showed up and the satisfaction level. On the product side, the sponsor view is an underexplored revenue angle β anonymized audience intelligence is something sponsors already pay for in worse forms. And technically: swap SQLite for Postgres, add real auth instead of hardcoded role login, and stream brief generation token-by-token so it feels alive instead of loading. Ideally also add a possibility for speakers to send updates to attendees of their talk.