SMBeBetter
What it does
SMBeBetter is a macOS app that writes the onboarding program a small business was never going to write.
The founder fills out a short Company Profile once: what the business actually does, why it exists, why it takes interns on, what it can offer them, and what it needs back. That last part is the piece almost nobody says out loud, and making it explicit is the whole point.
Each intern fills out their own profile: skills they bring, what they want to learn, the field they're aiming for, and who they report to.
Then, entirely on the founder's Mac, an on-device model reads both profiles and generates a week by week onboarding syllabus: a theme, a goal, a concrete deliverable, and three tasks per week, each one matched to what that specific intern is actually good at and wants to learn. No API calls, no server, nothing to host. If Wi-Fi is off, it still works, because it never needed it.
The founder reviews and edits before anything ships. Nothing reaches an intern until it's approved. Once it is, the intern sees their real plan instead of a single "show up weekly with an update" instruction, and can check tasks off as they go.
We also built a meeting matcher: every intern paints three separate weekly timetables (university, other work, and hours actually free for the internship), the founder paints their own calendar, and the app computes the first shared slot across everyone. It's a When2Meet that keeps running instead of one you fill in once and forget.
How we built it
SwiftUI on macOS 26, SwiftData for local persistence, and Apple's Foundation Models framework for generation. The syllabus is defined as a @Generable Swift type, so the model hands back a structured object with weeks, goals, deliverables and tasks rather than free text we'd have to parse and hope about.
We split the work by role. One of us focused on the product definition, the founder and intern flows, the pain point research, and the pitch. The other built the Xcode project, the SwiftData models, the Foundation Models integration, and the UI.
We treated the AI integration as the highest-risk part of the build and did it first, before any onboarding screens existed, testing it end to end against hardcoded sample profiles until we had real generated output on the actual device. Everything else got built around a feature we already knew worked.
Challenges we ran into
Foundation Models is brand new, which meant no Stack Overflow answers and very little to search for when something didn't behave the way the documentation implied it should. We spent real time getting @Generable output to come back reliably structured rather than close-but-not-quite.
None of us had shipped a macOS app before. Working out what a desktop onboarding flow should feel like, rather than porting an iPhone layout sideways, took longer than we expected. We ended up rebuilding the navigation around a sidebar partway through once we realized our first version read as a phone app running on a bigger screen.
We also had exactly one Mac between us capable of running Apple Intelligence, which meant one person building while the other tested, reviewed, and kept the pitch and the pain-point research moving in parallel.
Accomplishments that we're proud of
Getting real, working, on-device generation running end to end, on our own real internship experience as the test case, not a made-up scenario. Watching the model produce a plan that actually would have helped us, using nothing but two short profiles and no internet connection, is the moment that made the weekend feel worth it.
We're also proud that the meeting matcher ended up genuinely computed rather than the mocked placeholder we planned for. Once the profile data existed, the honest version turned out to be less work than faking a convincing one.
What we learned
How to actually integrate Apple's on-device Foundation Models framework into a real SwiftUI app, from @Generable schema design to prompt structure to handling the case where the model isn't available at all. How to think about privacy as a feature rather than a compliance checkbox: for a business handling sensitive client work, "your data never leaves this Mac" isn't a nice-to-have, it's the reason the app is usable at all.
We also learned something less technical: the problem we shipped a fix for wasn't hypothetical. Writing the Company Profile screen meant writing down, in plain language, everything our own internship never told us. That's a strange thing to build at 2am.
What's next for SMBeBetter
Real founder-to-intern sync via CloudKit, so this stops being two roles on one device and becomes what it's meant to be: a founder's Mac and an intern's Mac talking to each other. Proper invite links instead of a shared join code. Multi-team grouping for founders managing more than one project at once. And a living syllabus that updates itself as a placement progresses, instead of a plan generated once and never revisited.
Log in or sign up for Devpost to join the conversation.