Inspiration

Most intermediate to advanced lifters have dabbled with logging their workouts, but have fallen off due to the inherent friction. Writing by hand is low mental strain, but requires you to carry around a notebook and doesn't afford lookups or easily searching. Apps are great, but require dozens of taps just to log a single set, let alone navigate throughout complex UI's that break your focus and distract you from the task at hands. I've been an avid lifter for over a decade and have always wished for a product that made tracking and surfacing insights easy.

That's why I built Huberbro. Huberbro enables lifters to log entire workouts and ask their coach anything all without ever touching their phone. Just say "Hey Coach" at any time during your workout and Huberbro comes to life. It's like having a super human personal trainer in your pocket that never forgets anything and is always ready to help you perform at your best.

Before Build Week, the iOS app already supported voice workout logging, session summaries, workout history, and AI-generated weekly reports. Those experiences could describe a session or summarize a week, but they did not feel like one coach who stayed with you across the app. Build Week gave me a sharper product question: what if the coach that knows your history could also see the set you just completed, remember what you asked last week, and continue the same conversation inside an active workout?

What we built

During Build Week, I turned Huberbro's coaching features into one durable, app-wide coherent coach.

The Coach is available by text or voice from both home and an active workout. The same conversation follows the user between those surfaces and survives dismissal, background work, and relaunch. While a workout is still in progress, Coach can reason over a bounded snapshot of the live, unsaved sets without pretending that they are part of completed history. It can combine that snapshot with persisted training history and the user's latest weekly report when a question genuinely needs more than one source of the users data.

That changes the experience from isolated AI outputs into a continuing relationship. A lifter can ask what last week's report said to improve, begin today's workout, log a few sets, and then ask, “Does what I've done so far address that?” Coach carries the earlier question forward and grounds the answer in both the dated report and the workout happening now.

How it works

On iOS, a shared SwiftUI CoachStore owns one typed-and-voice conversation. Conversation state is bounded, identity-scoped, stored atomically with device file protection, and recoverable after relaunch. Questions can keep processing when the sheet is dismissed. The collapsed launcher communicates progress, unread answers, and retry states without trapping the user in a chat screen.

On the FastAPI backend, GPT-5.6 first selects a behavioral route and the evidence needed for the question. The allowed sources are the active-workout snapshot, persisted training history, and the latest Weekly Report. Only selected, bounded evidence reaches answer synthesis. Separate contracts handle report questions, general training advice, app help, health-and-safety questions, unsupported workout-changing requests, and personalized multi-source answers.

gpt-5.6-terra powers the Coach's routing and response paths. gpt-5.6-sol in pro/max reasoning mode powers the deeper two-stage Weekly Report analysis added during the same eligible period.

The first release is intentionally read-only. Coach can explain and advise, but it cannot create, edit, finish, or delete workout data. That boundary lets the assistant be useful without silently mutating the user's training record.

How Codex changed what I could build

I am a non-technical founder. Huberbro, including this Build Week extension, was built through close collaboration with Codex and other OpenAI models going back to GPT-4o and event GPT-3.5-turbo.

I made the product calls, defining what needed to get done and setting the bar for good enough. Codex acted as the engineering lead that could trace the existing SwiftUI, background-audio, FastAPI, queue, and SmartQuery systems; turn the product behavior into reviewable cross-stack changes; implement them; and test their failure boundaries.

That collaboration mattered most when the happy path was not enough. We tested identity scoping, prompt injection, SQL boundaries, network deadlines, background completion, app relaunch, accessibility, Reduce Motion, and the risk of breaking the existing voice-logging pipeline. Real beta questions exposed routing and grounding failures, and Codex helped trace them to root causes instead of adding one-off keyword fixes.

Challenges

The central challenge was that “persistent context” is not just chat history. Current workout sets are live device state; workout history is persisted backend state; a Weekly Report is a dated artifact about a completed window. Combining those carelessly can produce confident but temporally false answers.

We therefore modeled the active workout as its own immutable, bounded evidence source. GPT-5.6 chooses the minimum relevant source set for each question, and the backend keeps safety, report-only, general-advice, and unsupported-action paths separate from personalized retrieval.

The second challenge was durability. A coach that disappears when its sheet closes does not feel app-wide. We built background completion, truthful processing stages, unread state, retry behavior, exact notification deep links, and relaunch recovery while preserving Huberbro's already-shipping voice logging.

Accomplishments we're proud of

  • Shipped the Build Week experience in the production App Store app.
  • Created one text-and-voice conversation across the surface area of the entire app.
  • Grounded answers in live sets without confusing unfinished work with saved history.
  • Added bounded multi-source reasoning across active workout, history, and weekly report.
  • Preserved privacy and product safety through identity scoping, allowlisted context, read-only actions, and conservative health handling.
  • Finished the eligible code with 340 passing Python tests plus focused iOS and simulator validation.
  • Preserved the exact dated Build Week commits in the private judging repository while keeping unrelated proprietary infrastructure out of scope.

What we learned

The most important lesson was that model quality and product truthfulness are inseparable. A strong model still needs explicit temporal semantics, narrow evidence contracts, and honest progress states. The assistant feels more intelligent when it knows which context not to use.

I also learned that being non-technical does not mean outsourcing product judgment. Codex made the engineering surface accessible, but the best results came from being extremely specific about the user experience, boundaries, and failure behavior I wanted.

What's next

Scale. This is officially the soft launch for Huberbro. We've been testing in private beta for the past 6 months and this submission represents the first public distribution channel for Huberbro. We're excited to share Huberbro's capability with the world providing lifters with an easier and better way to train.

Built With

Share this project:

Updates