Security
We keep the security story short and true. Here is exactly what happens to your data and to the AI request behind your routine — no claims we cannot back up.
Your account, answers and routines are stored in our database and protected by row-level security, so each row can be read only by its signed-in owner — you. Passwords are handled by our authentication provider and are never stored by us in plain text.
Your answers reach our server for one purpose: to build the AI request that produces your routine. That is the only reason they leave your device.
The AI provider API key exists only on the server and is never exposed to the browser. The call to the model happens server-side, so the key cannot leak to the client.
Generation requests are rate-limited by IP address to prevent abuse and keep the service available. The server also checks and limits the size of each request body.
Before your routine is shown, the model's output is validated against a strict schema and against business rules — valid times, no overlapping blocks, at least seven hours of sleep. If it does not pass, we try to repair it once before returning a generic error.
When something fails, the browser gets a plain, generic message. Stack traces, internal details and keys are never sent to the client. Traffic is served over HTTPS by our hosting provider.
For the full detail on what we collect and why, read our privacy policy.
In our database, associated with your account. Access is protected by row-level security, so only you — signed in to your account — can read your answers and routines. Your browser also keeps a local copy so the app can restore your view quickly. See our privacy policy for details.
Yes. Your answers and generated routines are saved in our database, linked to your account, so you can sign in and see them again. They are protected by per-user access control, and they are sent to our AI provider only to generate or recalibrate your routine. You can delete them at any time.
The AI provider API key exists only on the server and is never exposed to the browser. Every call to the model runs server-side, so there is no path for the key to reach your device or anyone else's.