Inspiration
Onboarding is one of those things every business does and almost none of them do well. New hires get handed a stack of modules, click through them once, and nobody really knows whether anything landed, whether the content made sense, or whether a question went unasked because there was nowhere obvious to put it. In Australia specifically, workforces are genuinely multilingual, and the businesses onboarding them are already using their own systems, their own branding, their own onboarding pages. We didn't want to ask them to abandon any of that for a login they'd have to teach their employees to use. We wanted something that could sit inside what they already had.
What it does
Onboardly is an embeddable onboarding widget that a business drops into its existing onboarding page. It walks a new hire through that company's real training modules, gates progress behind a quick comprehension check instead of a passive "click next," and lets them ask a follow up question that gets answered by Gemini, grounded strictly in that company's own uploaded documents so it never invents an answer to something it wasn't taught. We proved this isn't a one off app by running the exact same underlying engine as two genuinely different onboarding experiences: a warehouse operations team (Southern Cross Distribution) and a software engineering team (Southern Cross Digital), each with their own branding, content, and even a video module, on one shared codebase.
How we built it
The core app is Next.js with TypeScript and Tailwind, backed by Supabase for a multi tenant data model where every module, document, and worker is tied to a company_id, so one engine can serve unlimited businesses without their content ever mixing. Gemini powers the grounded Q&A layer, explicitly instructed to answer only from the retrieved document context and say so plainly when it doesn't know rather than guess. The floating assistant widget is draggable and expandable, built to eventually ship as a real <script> tag embed with its own iframe, so it can genuinely be dropped into a site we don't control, not just live inside our own app. The landing page runs on an animated, custom color system defined once in globals.css so the whole brand updates from one place.
Challenges we ran into
The idea itself went through several real pivots before we landed here. The version we shipped is meaningfully different from where we started, and each pivot meant revisiting assumptions we'd already built code around. Working as a team on the same core files in parallel meant real merge conflicts, including two of us independently building a quiz feature and a video module feature into the exact same component at the same time and having to reconcile both by hand rather than just picking one. We also hit the very practical problem of a fast moving AI ecosystem. Package versions, model names, and API shapes changed under us mid build, which meant double checking things we assumed were stable.
Accomplishments that we're proud of
Getting two visibly different, fully working onboarding experiences running on one shared engine, not two separate copies of similar code, is the thing we're most proud of, since it's the actual proof that this is infrastructure and not just an app with a coat of paint. We're also proud of the Q&A layer's honesty. It refuses to answer rather than make something up, which mattered more to us than a flashier but less trustworthy demo. And we're proud we resolved every merge conflict without losing either teammate's work.
What we learned
We learned the real difference between building an app and building something embeddable, and how much that distinction changes every decision underneath it, from the database schema to how the widget itself is structured. We learned how to actually ground an LLM's answers and gate its confidence rather than trusting it to know its own limits. And we learned, the hard way, how to coordinate a team editing the same files under deadline pressure, and how to review someone else's code carefully enough to merge it in without breaking either person's work.
What's next for Onboardly
Real SaaS billing through Stripe, a genuinely deployed <script> tag embed tested on a website we don't control, full multilingual voice through ElevenLabs wired end to end, and a manager facing dashboard showing completion and common questions across a business's whole workforce. Longer term, we want Onboardly to be the layer any business can drop into onboarding, regardless of industry, without ever having to touch what they've already built.
Built With
- elevenlabs
- gemini
- react
- supabase
- tailwindcss
- typescript
Log in or sign up for Devpost to join the conversation.