Architecture
A router. Eight specialists. One conversation.
Most AI fitness apps either dump everything into a single chatty prompt or refuse to log anything from chat. Soveren is built differently.
Why split it into agents?
A single giant prompt that tries to handle goals, food, workouts, biometrics, plans, supplements, reminders, and injuries all at once loses focus fast. We tried that. Goals would get half-extracted, body parts would hallucinate, target values would silently come back null.
So we split the job: a cheap router decides what's in your message, and each domain gets a specialist with a tight prompt + a strict tool schema. The schema is enforced by the model API, which means "target_value is required when a number was mentioned" is a hard rule, not a hopeful instruction.
The flow
What happens when you hit send.
- 1
You send a message.
"Pushed bench 100kg 4x8, weighed 79, want to get to 70." Maybe a meal photo attached. Could be voice -> transcribed -> text.
- 2
Vision describes any images.
Each attached photo runs through a fitness-specific vision pass once. Result is cached so the same photo never gets analyzed twice.
- 3
Router classifies the intent.
A small fast model reads your message + image descriptions and picks which specialist agents to wake up. Goals + biometric? Food + workout? It's allowed to pick multiple, or none.
- 4
Specialists do the work.
Each selected specialist has a single focused prompt + a tool whose JSON schema is enforced by the API. No null target values when a number was clearly mentioned. No "reduce body fat to" with the percentage missing.
- 5
Tools write to your data.
Each specialist's tool calls the same actions your manual app forms use -- so what gets persisted from chat is identical to what you'd type in by hand.
The roster
Eight specialists, one focused job each.
Every specialist has its own prompt, its own tool schema, and its own bit of your existing data for context. That's why goals don't get confused with reminders, and food doesn't accidentally become a supplement.
GoalAgent
Sets + edits goals. Knows direction, units, and your existing goals so it doesn't duplicate.
BiometricAgent
Records any of 17 body measurements. Syncs your weight goal's current value.
FoodAgent
One past-tense meal -> N food entries with macros.
WorkoutAgent
Exercise + sets/reps/weight, with calorie estimates when missing.
SupplementAgent
Vitamins, protein, pre-workout. Knows your supplement library.
ReminderAgent
Future-time reminders, validated to be in the future, fires a delayed job.
InjuryAgent
Body-part-constrained injury records that drive movement restrictions.
IntentAgent
Plans for tomorrow that auto-link to entries when you log them.
Your data
Yours, always.
Your chat, your meals, your workouts, your weight -- never used to train models. Stored on infrastructure you can audit. Images live on private storage and only travel to the AI provider as short-lived signed URLs.
Try the chat-first coach.
Request a TestFlight invite and tell us what category we should add a ninth specialist for.
Request access