Grovvve
Co-founder & Developer
Therapists spend more time on admin than on therapy. A practice platform where scheduling, notes, intake, messaging and billing all know about each other.
1 / 3
- Status
- In development
- Role
- Co-founder & Developer
Problem
Private-practice therapists run their business across a scheduling tool, a notes tool, a billing tool and a personal phone, none of which talk to each other. Every appointment gets re-entered three times, and the admin overhead lands on a clinician rather than an operations team.
The tools that do integrate are enterprise EHR systems priced and scoped for hospitals, not for a solo practitioner.
Approach
Grovvve is built around one insight: every workflow should be aware of the others. A booking request auto-populates a client record. A session note links to the appointment it belongs to. An invoice is generated from that same appointment. A signed intake form appears in the client's profile without anyone filing it.
One login, no integrations, and the connective tissue is the product rather than a feature of it.
Architecture decisions
Clients never need accounts. Asking a therapy client to create a login just to fill in an intake form is friction at exactly the wrong moment, so booking, intake, secure messaging and feedback are all reachable through single-use private links instead. No password, no signup, and no account recovery to support.
Every practice is fully isolated from every other. Each therapist is a separate tenant, and access is enforced at the data layer rather than left to individual screens to remember, so one practice's records are never reachable from another's session.
AI structures notes, it does not write them. Dictation is transcribed, then shaped into one of 19 clinical formats including SOAP, DAP, BIRP, EMDR, CBT and DBT. The clinician stays the author and the model only does the formatting. Completed notes are locked and digitally signed with a timestamp.
Stack
Next.js 16 App Router with TypeScript in strict mode, on Supabase Postgres. Dashboard data is fetched on the client for responsiveness, with server rendering reserved for the public pages where SEO and first paint actually matter.
Stripe and Paddle for subscriptions, checkout, billing portal and webhooks. Twilio for SMS reminders, Resend for transactional email, Upstash Redis for rate limiting, TipTap for rich text, next-intl for localisation, Vitest for tests.
Built with
- Next.js 16
- · TypeScript
- · Supabase
- · Stripe
- · Groq
- · Twilio