The whole platform, in detail
Not a workout app with a coach bolted on, and not a directory that hands you a phone number. Clients search every coach across 196 countries and apply in the app. Coaches get a public profile that brings those clients in, with no listing fee and no commission. Everything after that — programmes, logging, measurements, scheduling, messaging — happens on the same account.
Two halves that normally live in different products
This is the whole idea, and the reason the feature list looks the way it does.
There are two people with a problem here, and they are looking for each other. One wants a coach and cannot tell which of them is any good. The other is a coach who needs clients and is advertising into a social feed. Both halves of that are on this platform — and so is everything that happens after they meet.
Coaching software
Assumes the client already exists. Good at programmes, no answer at all to which coach? — so winning the client is left to you.
Directories
Answer that one question and stop. A profile, a price, an email address — and the training happens in a spreadsheet somewhere else.
MyFitsy
Both. Get found, get hired, and coach them without anything changing hands.
For a coach, the profile is how you get clients
Not a settings screen you fill in for completeness. A real page at your own web address — bio, certifications, specialities, gyms, rates, before/after portfolio — plus reviews only people who actually trained with you can leave. It is listed in the search clients use to pick someone.
For a client, finding and training are one account
Search every public coach, filter by speciality and country, read the profiles, apply in the app. The moment a coach accepts, they are building programmes against your real measurements and reading back the weights you actually lifted.
Two consequences worth naming. Country stops mattering — search covers 196 of them, and the metric/imperial switch means a coach in Tallinn and a client in Toronto read the same session in their own units. A coach's market is no longer the people who walk past their gym. And the client is not a guest in the coach's software: they can track measurements, set goals and write their own programmes with no coach at all.
Which app does what
Two apps with deliberately different jobs, on one platform and one set of records.
| Capability | MyFitsy (client) | MyFitsy Coach |
|---|---|---|
| Search every coach on the platform | ✓ | — |
| Apply to a coach | ✓ | — |
| Appear in coach search | — | ✓ |
| Public profile with reviews | — | ✓ |
| Public web page at myfitsy.com/@handle | — | ✓ |
| Invite a client | — | ✓ |
| Accept or decline a connection | ✓ | ✓ |
| Build a programme for others | — | ✓ |
| Import a programme from a PDF, photo or text | — | ✓ |
| Build a programme for yourself | ✓ up to 10 | — |
| Have one built from four questions | ✓ | — |
| Pick exercises from the library | ✓ | ✓ |
| Link exercises into supersets | ✓ own programmes | ✓ |
| Watch the exercise animation | ✓ | ✓ |
| See today's workout | ✓ | — |
| Log every set — weights, reps, time or distance | ✓ | — |
| Skip a day | ✓ | — |
| Open past sessions by date | ✓ | ✓ per client |
| Record body measurements | ✓ | — |
| See your body over time | ✓ | — |
| View a client's measurements and trends | — | ✓ |
| Set and share goals, including a body goal | ✓ | — |
| Book a session | — | ✓ |
| See booked sessions | ✓ read-only | ✓ |
| Create groups | — | ✓ |
| Create a group room | — | ✓ |
| Talk in a group room | ✓ | ✓ |
| Message, with photos and video | ✓ | ✓ |
| Take a message back | ✓ | ✓ |
| Switch metric / imperial | ✓ | ✓ |
| Report an account | ✓ | ✓ |
| Delete your own account | ✓ | ✓ |
The features in detail
Each one is a summary you can skim, with the specifics one click down.
Coach search — finding, and being found
Search every public coach, nearest first, and apply from inside the app.
The client chooses who they want to train with. The coach is put in front of people already looking to hire someone.
- Every public coach on the platform, across 196 countries, filtered by speciality, language, price and rating — or browsed by gym
- Apply in the app — the coach accepts or declines
- Nearest first — to you, or to any city or country you name — then by rating. Placement is never for sale: no listing fee, no promoted spot
- Remote coaching is an ordinary connection, not a workaround
Specifics and edge cases
The same search read from the coach's side is a stream of people actively looking to hire, which is why the profile is worth filling in properly: a client arrives having already read your bio, specialities, rates and reviews, so the first message is usually about starting rather than about what you charge. Results come nearest first, then by rating, and nothing about the order can be bought. Suspended accounts drop out of search entirely. A coach appears publicly only once they have written a bio, which stops half-finished profiles being the first thing a client sees. Reviews can only be left by someone who actually trained with that coach.
| Coaches searchable | Every public coach on the platform |
| Countries | 196 |
| Specialisations to filter by | 32 |
| Results per search | Up to 50, nearest first, then by rating |
| Applying | From inside the app; the coach accepts or declines |
| Requirement to appear | A written bio, a public profile, no active suspension |
| Cost to the coach | None — no listing fee, no ranking boost for sale |
Coach profiles — how new clients find you
Bio, certifications, specialities, gyms, rates, before/after portfolio and reviews — listed in search and reachable at its own web address.
This is the client-acquisition side of the platform. The profile is what appears when someone is choosing a coach, and the link you send anyone who asks what you charge.
- A real web page at
myfitsy.com/@yourhandle, shareable anywhere - Reviews only people who actually trained with you can leave
- Your own rates, in whichever unit you sell — session, hour, course, week, month, programme or one-off
- No commission on anything you charge
Specifics and edge cases
Every account, coach or client, is given a unique handle automatically at sign-up, and it is what in-app search matches on. For a coach it also resolves to a public web page; a client's handle stays an identity rather than a page. The handle is derived from the display name, lowercased and stripped of anything that is not a letter or digit, with a number appended if it is taken, so no two accounts can collide — and a set of reserved words such as admin and support cannot be claimed at all. Changing it is allowed; the old address stops working, which the app warns about. A coach cannot delete a review, and there is one review per coach–client pair.
| Handle | Every account gets one, automatically |
| Public web page | Coaches only, at myfitsy.com/@handle |
| Handle format | 3–30 characters: letters, digits and underscores, starting with a letter |
| Specialisations | 32 to choose from |
| Countries | 196 |
| Price units | Per session, hour, course, week, month, programme, or one-time |
| Portfolio images | Up to 3 before and 3 after, per entry |
| Reviews | 1–5 stars, one per client, cannot be deleted by the coach |
| Listing fee | None |
| Promoted placement | Not for sale — search is ordered by distance and rating |
| Commission on your fees | None |
Coaching connections
A mutual-consent relationship between one coach and one client.
Nobody is added to anybody. Both sides agree, and either side can end it at any point.
- A client applies, or a coach invites — the other side accepts or declines
- The connection is what decides who can see whose data
- A client can work with several coaches at once
- Ending it keeps every completed workout — and the coach keeps only what was logged up to that day
Specifics and edge cases
Health data should never be shared on one party's decision alone, so consent is the foundation the rest of the platform sits on. There is exactly one relationship record per coach–client pair, so reconnecting with a past coach reactivates it rather than creating duplicate history. Ending a relationship deactivates that coach's programmes for the client but keeps the training record intact. While a request is waiting or has been declined, the coach sees nothing of the client's. When coaching ends, the coach keeps the client's measurements and workouts up to that day and sees nothing newer; blocking removes even that.
| Consent | Required from both sides, always |
| Coaches per client | No limit |
| Clients per coach | No limit |
| Relationship states | Pending, active, ended, declined |
| Records per pair | One, reused on reconnection |
| Ending it | Either side, at any time |
| Before it is accepted | The coach sees nothing of the client's |
| After it ends | The coach keeps measurements and workouts up to that day, nothing newer |
Workout programmes
A named plan made of ordered days, each an ordered list of exercises.
Build a plan once and give it to any number of clients, then see what each of them actually did against it.
- Three kinds of exercise: weights, bodyweight and cardio — a pull-up and a 5 km run are both first-class
- Reps as free text, so 8–10 and AMRAP both work
- Type the first letters and previously-used exercises are offered, video link included
- Supersets in one tap — link neighbouring exercises and the client sees them as A1, A2, going straight on from one to the next
- Assign to a client or a whole group, starting on any day of the plan
Specifics and edge cases
Each kind carries only the fields it has any use for: weights take sets, reps and a load; bodyweight takes sets and reps, since the load is the person; cardio takes time and distance. Suggestions keep the newest video link for a name, so correcting a mistyped URL replaces it everywhere it is offered, and a suggestion you no longer want can be hidden and later restored. Assigning a second programme does not cancel the first. Assigning the same programme twice to one client is blocked in the database, because that would only duplicate their plan. Someone joining mid-cycle can be started on the day that suits them rather than forced back to day one. Deleting a programme never deletes the workouts logged on it.
| Days per programme | No limit |
| Exercises per day | No limit |
| Exercise kinds | Weights, bodyweight, cardio |
| Weights exercise | Sets, reps, target weight, rest, note, video URL |
| Bodyweight exercise | Sets, reps, rest, note, video URL |
| Cardio exercise | Target time up to 24 hours, target distance up to 1,000 km |
| Autocomplete suggestions | 8 shown by default, up to 25 |
| Programmes per coach | No limit |
| Same programme twice to one client | Blocked (unique index) |
Programme import
A PDF, photos of a printed plan or pasted text, turned into a programme you can edit.
Most coaches arrive with years of programmes already written — in PDFs, in notes, on paper. Import reads them for you, so none of it has to be typed in again.
- Camera, photos, a PDF, or text pasted from your notes — up to 10 pages in one import
- Days, exercises, sets, reps, weights, rest and notes laid out as an ordinary programme, supersets included
- Kept in the language it was written in, in your own wording
- One import, one credit, however many pages; a failed import gives its credit back
- Your pages go to our AI provider only after you agree
Specifics and edge cases
The pages are read by Anthropic's Claude AI. Nothing is sent until you have agreed to it on a screen that explains what follows, and you can withdraw that permission in Settings. Anthropic uses the pages only to create your programme, does not train on them and deletes them within 30 days; MyFitsy deletes the uploaded files as soon as the import ends. What comes back is an ordinary programme in your Programs list, to read through and edit before you assign it. Credits come in packs of 1 and 10, bought in the app through the App Store or Google Play, which show your price before you confirm. They do not expire.
| Sources | Camera, photos, PDF, pasted text |
| Pages per import | Up to 10 in all — photos, PDF pages and pasted text together |
| Cost | 1 credit per import, however many pages |
| Failed import | Credit returned automatically |
| Language | Kept as written |
| Read by | Anthropic's Claude AI, only after you agree |
| Uploaded files | Deleted when the import ends |
Programmes clients build themselves
A client can write up to ten of their own and run one at a time.
Training does not only happen under a coach. Someone between coaches, or training alone before they find one, uses the same builder and the same logging.
- Up to 10 programmes, one active at a time
- Yours — a coach you train with can read them, never edit or assign them
- Appears on Today exactly like a coach's programme
- Deactivating keeps the plan and every logged workout
Specifics and edge cases
Most people arrive without a coach, and making the app useless until they have one is both a bad first experience and a bad argument for the platform. It also means the history they bring to their first coach is real data rather than a conversation. The ten-programme cap and the single active programme are a database trigger and a unique index rather than interface behaviour, so Today never has to guess which plan you meant. A coach you are training with can read them, but never edit or assign them. Deleting removes the plan; the workouts logged against it stay.
| Programmes per client | 10, enforced in the database |
| Active at once | 1 |
| Visible to a coach | To read only, while they coach you — never edited or assigned |
| Structure | Identical to a coach's: days, exercises, all three kinds |
| Shows on Today | Yes, the same as an assigned programme |
| Deactivating | Keeps the programme and every logged workout |
The exercise library
412 movements, each with a short animation.
A programme that says “Romanian deadlift” is only useful to somebody who already knows what one is. The library puts the movement next to the instruction, so the answer is in the app rather than in a video search halfway through a set.
- 412 exercises, searchable by name or muscle and filtered by equipment
- Each carries a looping animation of the movement, played mid-session
- Picked into a programme by a coach or by a client building their own
- An exercise typed by hand still works exactly as before — the library is an option, not a requirement
Specifics and edge cases
The animations are licensed for commercial use and are not ours to give away, so they are held in private storage and reached only through short-lived signed addresses. There is no download, and they do not appear on this website. Clips are cached on the phone after the first play, so a programme costs its download once rather than on every session — which also means the gym's wifi stops mattering.
| Exercises | 412 |
| Media | One animation and one still per exercise |
| Search | By name or muscle, filtered by equipment |
| Storage | Private bucket, short-lived signed URLs |
| Offline | Cached on the device after first play |
| Custom exercises | Still supported, unchanged |
A programme from four questions
For a client who wants to start today and has nobody to write one.
The gap between deciding to train and having a plan is where most people stop. Four questions is short enough that nobody abandons it, and what comes out is a real programme rather than a sample.
- Goal, where you train, roughly how experienced you are, days a week
- Produces a full programme written into the same tables as any other
- Every day of it is editable — swap, add or remove anything
- It is a starting point, not an assessment: nobody has looked at you, and it does not ask about injury or illness
Specifics and edge cases
The programmes are written in advance and chosen by the answers, not generated on the fly. That is deliberate: a plan assembled at run time can assemble something nobody would prescribe, and there is no way to check every combination it might produce. Written plans can be read before anybody trains on them. The app says plainly on the screen where you keep the plan that nobody has assessed you.
| Questions | 4 |
| Counts toward | The client's ten own programmes |
| Editable | Yes, every day and every exercise |
| Generated by AI | No — written in advance, chosen by your answers |
| Needs a coach | No |
Workout logging and history
Open the session, see each target, record what actually happened.
The target is the plan; the log is what happened. Every coaching decision needs the second one, and asking for it over chat does not scale.
- Every set logged — weight and reps, or time and distance for cardio
- Pre-filled with what you did last time, with your last three sessions beside each set
- Skip a day deliberately, and the plan moves on rather than sticking
- History is a list of dates: tap one and see the session exactly as logged
- Finish and start the next one straight away, if you train two days back to back
Specifics and edge cases
A skip advances the rotation exactly like a completed session, so a missed Monday does not leave the plan stuck, and it is recorded as a skip everywhere it is read rather than quietly hidden — the coach sees the difference between a skipped day and a light one. An exercise can be marked not completed rather than silently dropped, which is the difference between "did not do it" and "did it lighter". Nothing is thrown away when a programme ends or is deleted.
| Recorded per set | Weight and reps; time and distance for cardio |
| Pre-filled from | Your last completion of that same programme day |
| Skipping a day | Recorded as skipped; advances the rotation |
| After finishing | Day marked complete; the next one can be started at once |
| History | Every session by date, opened in full |
| Retained | All of it — including after a programme ends or is deleted |
Measurements and trends
Fifteen tracked metrics, your body figure through time, and charts with a rate of change.
Scale weight alone is a poor progress signal. Circumferences show the recomposition it hides — which is the difference between a client quitting in week six and staying.
- Body weight, an estimated body-fat percentage and 13 circumference sites
- Your body over time — your figure with every measurement on it, from your first day to today
- Charts answer how fast, not just how much: “0.4 kg per week”
- Ranges from one week to all time
Specifics and edge cases
Charts report a rate rather than an average, because an average tells you nothing you cannot already see — a rate answers the question people actually have, which is how long this will take. It is a least-squares trend through your readings, quoted per week on the week view and per month on the others, and a value worked out between readings is drawn dotted so it never passes for one. Blanks are fine; record what you have. The body-fat figure is an estimate from measurements, not a clinical measurement, and the app says so on screen.
| Metrics | Weight, body-fat estimate, and 13 sites: neck, shoulders, chest, waist, hips, both arms, both forearms, both thighs, both calves |
| Chart ranges | 1 week, 1 month, 3 months, 6 months, 1 year, all time |
| Rate of change | Per week on the week view, per month on the others |
| Entries per metric | No limit |
| Who can see them | You, and a coach while they coach you; a former coach only up to the day it ended |
Goals
One measurement, or the whole body, with a target and a date.
“Lose weight” is not trackable. “Waist from 92 cm to 84 cm by 1 October” is — and it gives you something concrete to measure against.
- Reads from logged measurements, so it updates itself
- Body goals — targets for several measurements at once, with one date
- Marked complete on the day the target is reached
- Every goal on one page — current, past deadline and completed
- Shareable as a picture with a message, in your own units
Specifics and edge cases
A shared goal carries a written summary alongside the picture, and its numbers follow the unit system the person actually uses — a client working in pounds does not share a card in kilograms. Your body figure on the picture is optional. Goals are yours alone: a coach sees only the training goal on your profile.
| Metrics available | Weight or any of the 13 circumference sites |
| Body goal | Several measurements, one date |
| Deadline | Optional |
| Progress source | Your own logged measurements |
| Sharing | Picture plus text, in your own units; your body figure optional |
| Who can see them | Only you, unless you share one |
Calendar and scheduling
An hour-by-hour day grid for coaches; a month view for clients.
Session times were the last part of coaching still living in a chat thread, where they get buried and nobody has a record of what was agreed.
- Tap a gap in the grid to book that time
- Repeat weekly — presets, or any number of weeks you choose
- Clashes are caught, with an explicit override for genuine double sessions
- Editing a series asks whether you mean this session or all later ones
Specifics and edge cases
Overlapping bookings are detected server-side and refused with a distinct error the app catches, rather than being silently allowed. Moving a group session moves every attendee together. Switching days auto-scrolls to that day's first booking, so a day with sessions never looks empty. Clients see their sessions read-only.
| Grid hours | 05:00–23:00 |
| Start times | Quarter-hour steps |
| Duration presets | 30, 45, 60 and 90 minutes |
| Custom duration | 5 to 600 minutes |
| Weekly repeat presets | 4, 8, 12 or 24 weeks |
| Custom repeat length | Any number of weeks up to 52 |
| Note per session | Up to 500 characters |
| Who can book | Coaches only — clients see sessions read-only |
Groups and group sessions
A named set of a coach's clients, for booking and bulk assignment.
Bootcamps and small-group training were otherwise repetitive: the same booking typed out once per person, the same programme assigned five times.
- One booking for everyone in the group
- One action to push a programme to every member
- Members never see each other
- Collapses to a single block on the coach's calendar
Specifics and edge cases
A client sees the group's name on their session and never the attendee list. Members who already have the assigned programme are skipped rather than duplicated, and the result reports how many were skipped. Clients whose relationship has ended are not booked. Deleting a group leaves sessions already booked from it in place.
| Groups per coach | No limit |
| Members per group | No limit |
| Group name | 1 to 60 characters |
| A client in several groups | Allowed |
| Deleting a group | Sessions already booked from it remain |
| Attendee visibility | Members never see each other |
Messaging, with photos and video
Realtime chat between a coach and a connected client, one to one or in a room.
Coaching conversation belongs next to the training record, not mixed into a personal chat app where it competes with everything else in someone's life.
- Photos and video, because form checking is visual
- Attachments are private — not published, not public
- Links in messages are tappable
- Unread counts on the tab bar; read state tracked
- Take a message back, or clear a conversation out of your own list
Specifics and edge cases
Attachments live in a private bucket, unlike profile and portfolio images. Someone filming their own body for a coach is not publishing it, so the files are reachable only through signed URLs issued to the people in that conversation — the two of you in a direct message, everyone present in a room — and a leaked path is not a leaked video. Upload types are restricted by storage itself, not just by the app. One to one, you can only message someone you have a coaching relationship with, current or past. Deleting your account removes your messages from the conversation on both sides. Taking a message back removes it for everyone; what it said is kept where no user can read it, so a report about somebody can still be acted on.
| Delivery | Realtime |
| Message text | Up to 2,000 characters |
| Attachments | Images and video, one per message |
| Maximum file size | 50 MB, enforced by storage |
| Accepted types | JPEG, PNG, HEIC, HEIF, WebP; MP4, QuickTime, M4V |
| Storage | Private bucket, reachable by signed URL only |
| Who you can message | Your active or past coaching connections only |
| Encryption | In transit, not end-to-end |
Group rooms
A coach and several of their clients in one conversation.
A training group and a room are different things and the difference matters. A training group is administrative — book five people into one session, push one programme to all of them — and its members never learn who else is in it. A room is a conversation, and a conversation where you cannot see who is talking is not one.
- The coach makes the room, chooses who is in it, and can add or remove anyone
- Everyone in a room sees the others — names, pictures and what they write. This is the one place in MyFitsy where clients learn about each other
- The same photos, video and read state as a direct message
- Anyone can leave, and what they already wrote stays
- Report or block any member from inside the room — the people icon at the top, then tap a person
Specifics and edge cases
Reporting and blocking live in the room because they have to. Everywhere else in the app the other party is a coach, and a coach has a profile carrying both controls. A room can hold clients who are not each other's coach and have no profile to open, so the member list is the only place those controls could go. A block is enforced in the database and runs both ways: afterwards neither person sees the other's messages, in either direction, whichever of them pressed the button.
| Who can create one | A coach |
| Members | The coach's own clients |
| Room name | Up to 60 characters |
| Message text | Up to 2,000 characters |
| Attachments | Images and video, as in a direct message |
| Leaving | Any member, at any time |
| Deleting the room | The coach who made it |
Metric or imperial
One switch changes every number in both apps.
A platform whose premise is that a coach in one country can train a client in another cannot be metric-only.
- Kilograms or pounds, centimetres or inches, kilometres or miles
- Applies to measurements, goals, targets, logs, charts and shared cards
- Coach and client can each use their own — on the same session
- Height reads as feet and inches, because nobody says they are 70 inches tall
Specifics and edge cases
Everything is stored in metric and converted only where it is shown or typed. That is why the two sides can hold different settings on the same data without either of them being wrong, and why switching back and forth never degrades a stored figure. It takes effect immediately and needs nothing re-entered.
| Systems | Metric and imperial |
| Weight | kg or lb |
| Circumference | cm or in |
| Height | cm, or feet and inches |
| Distance | km or miles |
| Scope | Per account, both apps, every screen |
| Stored as | Always metric; converted at the edges only |
| Coach and client differing | Fine — each sees their own |
Reporting and moderation
Any account can be reported from its profile, with a written reason.
A platform where strangers meet to discuss their bodies needs this to exist before it is needed. A reporting flow added under pressure is always worse than one designed calmly.
- Report a coach or a client from their profile
- A written reason is required — a bare flag cannot be acted on fairly
- Outcomes run from a warning to a permanent suspension
- A suspended account is locked out in the database, not by hiding buttons
- Profile pictures and portfolio photos are screened by Google Cloud Vision before anyone can see them
- Block anyone, instantly — no moderator, no waiting, and they are never told
Specifics and edge cases
Because enforcement sits in the database, a suspended account cannot write anything through the API either, and it disappears from coach search. Suspensions carry an expiry and lift themselves. The affected person is notified, including when a suspension is lifted, and every warning and ban is kept as an audit trail. You cannot report yourself, and a report is visible only to the person who filed it and to the moderator.
| Who can be reported | Any coach or client, from their profile |
| Categories | Harassment, inappropriate content, spam, impersonation, safety, other |
| Reason | Required, 10 to 2,000 characters |
| Actions available | Warning, 7-day, 30-day or permanent suspension |
| Enforcement | In the database — a suspended account cannot write at all |
| Blocking | Instant and silent; ends the relationship and cancels future sessions |
| Undoing a block | Settings → Blocked accounts |
| Image screening | Automatic, on upload, before delivery |
| Report visibility | The reporter and the moderator only |
Activity and notifications
A feed of everything that happened, with unread state.
Changes made by the other person need to surface without them having to send a message about it.
- Sessions booked, moved and cancelled; applications and responses; programmes assigned; workouts completed; reviews; reminders; an imported programme ready to check
- Written by the database when the event happens — so it cannot be forged
- Pushed to your phone, with a per-account switch if you would rather they were not
- A weekly series is one notification, not one per week
- Unread counts as badges in both apps
Specifics and edge cases
Notifications are generated by the same database operation that made the change, not by the app. That means they cannot be missed because a device was offline when the change was made, and clients have no permission to insert them at all — so the feed is a genuine audit trail rather than something the app hopes to keep in sync. A group booking produces one notification per member rather than one per row.
| Event types | 21 |
| Written by | Database triggers and functions, never the client |
| Series booking | One notification, not one per week |
| Group booking | One per member |
| Phone push delivery | Yes, with a preference toggle in Settings |
| In-app feed | Always kept, whether or not push is on |
Your account and your data
Password changes, self-service recovery, and deletion with a grace period.
Both matter at exactly the moment someone is least willing to email support about it.
- Sign in with Apple, with Google, or with an email address and password
- Locked out? Reset your password from the sign-in screen
- Delete your account yourself, from Settings
- 30 days to change your mind — sign in and tap keep, and nothing is lost
- After that it is erased automatically, not when somebody remembers
Specifics and edge cases
Deletion is a two-stage process on purpose: people delete things in a bad week and regret it in a better one. Once the grace period passes, a scheduled database job erases the account permanently, including the messages you sent, which go from the other person's conversation too. Reviews you wrote stay but are stripped of your name, so a coach's rating is not rewritten every time a client leaves.
| Ways to sign in | Apple, Google, or email and password |
| Password recovery | Self-service, from the sign-in screen |
| Grace period | 30 days |
| Cancelling deletion | Sign in during the grace period and confirm you want to keep it |
| Erasure | Automatic, by a scheduled database job |
| Cascade | Profile, measurements, goals, workouts, sessions, connections, programmes, and a coach's credits |
| Retained | Reviews you wrote, anonymised |
| Data export | By email request |
Who can see what
Enforced by row-level security in the database, not by the app hiding buttons — so it holds even if someone uses the API directly.
| Data | You | Your coach | Other coaches | Other clients |
|---|---|---|---|---|
| Display name, photo and @handle | ✓ | ✓ | ✓ | ✓ |
| A coach's public profile | ✓ | ✓ | ✓ | ✓ |
| Body measurements and body-fat estimate | ✓ | ✓ | — | — |
| Logged workouts and skipped days | ✓ | ✓ | — | — |
| Goals | ✓ | — | — | — |
| Programmes you wrote for yourself | ✓ | ✓ to read | — | — |
| Your messages | ✓ | ✓ (only yours with them) | — | — |
| Chat photos and video | ✓ | ✓ | — | — |
| Booked sessions | ✓ | ✓ | — | — |
| Group attendee list | — | ✓ | — | — |
| Date of birth, height, gender | ✓ | ✓ | — | — |
| A report you filed | ✓ | — | — | — |
“Your coach” is a coach you are training with now. When coaching ends, your former coach keeps your measurements and workouts up to that day and sees nothing newer, and no longer sees your profile or the programmes you wrote. While a request is waiting or has been declined, a coach sees nothing of yours. Blocking a coach removes even what they had.
How the data model backs this up
Worth knowing if you care where your health data goes.
Security in the database, not the app
Every table has row-level security enabled. A query for someone else's measurements returns nothing, whatever the app asks for. The apps are not the security boundary — the database is.
Sensitive writes are checked first
Booking, responding to an application, cancelling a series, applying a suspension: these run as database functions that verify the rules before acting, so the checks cannot be skipped by talking to the API directly.
Limits are constraints, not interface behaviour
The ten-programme cap, one active own-programme, one review per pair, no duplicate assignment. A limit that exists only in the app is not a limit — it is a suggestion to anyone holding an API key.
Hosted in the EU
Supabase in Stockholm. No advertising networks and no third-party analytics SDKs in either app. Measurements are special-category health data under Article 9 and processed only with explicit consent — see the privacy policy.
Every limit in one table
Collected here so you do not have to hunt for them.
| Coaches searchable | Every public coach; 196 countries, 32 specialisations |
| Search results | Up to 50, nearest first, then by rating |
| Clients per coach / coaches per client | No limit |
| Handle | 3–30 characters |
| Coach programmes, days, exercises | No limit |
| Client's own programmes | 10 max, 1 active |
| Exercise kinds | Weights, bodyweight, cardio |
| Cardio targets | Up to 24 hours, up to 1,000 km |
| Exercise suggestions | 8 by default, up to 25 |
| Programme import | Up to 10 pages; 1 credit per import |
| Groups, and members per group | No limit |
| Session note | Up to 500 characters |
| Calendar grid | 05:00–23:00, quarter-hour steps |
| Session duration | 30/45/60/90 min presets, or 5–600 custom |
| Weekly repeat | 4/8/12/24 presets or custom, up to 52 weeks |
| Tracked measurements | 15 (weight, body-fat estimate, 13 sites) |
| Chart ranges | 1W, 1M, 3M, 6M, 1Y, all |
| Rate of change | Per week on the week view, per month on the others |
| Message text | Up to 2,000 characters |
| Chat attachment | 50 MB; images and video only |
| Portfolio images | 3 before + 3 after per entry |
| Reviews | 1–5 stars, one per coach–client pair |
| Report reason | Required, 10–2,000 characters |
| Suspensions | Warning, 7 days, 30 days, permanent |
| Notification event types | 21 |
| Unit systems | Metric and imperial, per account |
| Account deletion grace | 30 days |

