← Back to work
Case study · Online tutoring marketplace

Gotute

A tutoring marketplace connecting students with verified tutors for one-on-one sessions, with slot-based booking, Zoom or Google Meet delivered classes, and an escrow-style wallet that holds payment until a session actually happens.

Client
Abiomye Industries Pvt. Ltd.
Based in
India
What we built
A Laravel & Livewire tutoring marketplace with booking, wallet & disputes
Live site
Tutoring marketplace · Students · Tutors · Admin
The brief
Booking a tutor means
trusting a stranger with money.

A tutoring marketplace has to solve a harder problem than a normal storefront: a student pays for a session that hasn't happened yet, delivered by a tutor they've never met, over a video call, with no physical product changing hands to prove anything went wrong.

That meant Gotute needed more than a booking calendar and a payment button. It needed a way to verify tutors before they could list, a way to actually deliver the session, and a way to settle money fairly when a student and tutor disagree about what happened, without every disagreement turning into a manual, ad-hoc mess for the platform to sort out.

The build
A marketplace with
real trust built in.

We built Gotute on a Laravel and Livewire foundation, then layered in the parts that actually make a tutoring marketplace work: subject-based slot booking, tutor verification, an escrow-style wallet, and an admin-mediated dispute system.

Fixed time-slot booking
Tutors publish available slots per subject, including group slots that hold more than one student, and students book directly into an open slot.
Zoom & Google Meet sessions
Every confirmed booking gets a real meeting link generated automatically on Zoom or Google Meet, with the event also synced to both sides' Google Calendar.
Escrow-style wallet
Session payments sit in a pending state tied to the booking rather than landing in a tutor's balance the moment a student pays.
Tutor identity verification
Tutors upload identity documents that go through an admin approval queue before they're able to list and take bookings.
Admin-mediated disputes
Either side can raise a dispute on a booking; a threaded conversation brings student, tutor, and admin together before an admin decides the outcome.
AI-assisted profile writing
A GPT-4o-mini-backed "AI Writer" helps tutors draft their bio, education, experience, and session descriptions instead of starting from a blank field.
Money doesn't move
until the session does.

In a marketplace where strangers pay each other for a service that hasn't happened yet, releasing payment the instant a student books is asking for trouble the moment a session gets missed, cut short, or disputed.

So payment sits in escrow tied to the booking itself, not a tutor's balance, until the session clears. If both sides are fine with how it went, the money simply becomes available. If not, it stays frozen until an admin actually looks at it.

→
STEP 1
Payment goes into escrow
A student's payment is captured via Stripe or Razorpay and held against that specific booking as pending funds, not credited to the tutor yet.
→
STEP 2
Session happens, funds clear
Once the session completes without a dispute, the pending funds move into the tutor's available wallet balance automatically.
STEP 3
Disputes freeze the money
If either side disputes the session, the funds stay locked until an admin resolves it, refunding the student or releasing the tutor's pay, not whoever complains loudest.
Under the hood
Built like a real
services marketplace.

Past the booking and escrow flow, Gotute carries the operational tooling a two-sided marketplace needs to actually run, from payouts to platform-wide oversight.

Stripe & Razorpay checkout
Session payments run through Stripe or Razorpay, captured at booking time and held against that session rather than settled immediately.
Google Calendar sync
Every booking creates a calendar event for both student and tutor, kept separate from the actual Zoom or Google Meet link itself.
Post-session ratings
Students rate and review their tutor after each session, feeding directly into that tutor's public profile.
Tutor credentials on profile
Tutors upload certificates and credentials as part of a resume-style profile section, alongside their bio and experience.
Withdrawal requests
Tutors request payouts from their available wallet balance against a saved payout method; admin approves each request before it's marked paid.
Configurable platform commission
The platform's take rate is an admin-configurable setting, not a number hard-coded into the booking logic.
Role-based access
Admin, tutor, and student roles are enforced platform-wide via Spatie permissions, not ad-hoc checks scattered through the code.
Real-time via Laravel Reverb
Websocket broadcasting keeps things like booking status and conversations updating live instead of waiting on a page refresh.
Built on a Laravel foundation, extended for tutoring
Rather than starting a marketplace from zero, we built on a Laravel base and put the real engineering effort into the tutoring-specific layer: subjects, slot booking, escrow wallet, disputes, and verification.
A full admin operations console
Platform insights, user and identity approval, platform-wide bookings, the dispute queue, commission and payout settings, and subject taxonomy all live in one admin panel.
Not a booking form,
a two-sided marketplace.
Three roles, one platform
Admin, tutor, and student each get a permissioned view of the same underlying booking, wallet, and dispute system.
~230 backend files
Roughly 230 files across models, Livewire components, services, and controllers in the application layer alone.
Escrow-based trust, not blind payment
Every booking's payment sits in a pending state until the session clears or a dispute resolves it, one way or the other.
Tech stack
Tools we shipped with.
LaravelLivewireLivewire VoltTailwind CSSLaravel ReverbSpatie PermissionStripeRazorpayZoom APIGoogle Meet APIGoogle Calendar APIOpenAI APIMySQL
Building something
with real craft behind it?
If your product deserves better than a generic template, that's exactly the kind of build we like.
connect@northboundlabs.cc See more work