Education
A marketplace for private tutors
Parents find a tutor by subject and level, book a session, and pay through the platform. The tutor is paid after the session is confirmed. Both sides rate each other, and a parent can see the notes from every past session with that tutor.
Automatically generated draft
Written by machine against our own engineering playbook. The company is invented; the decisions are the ones we would make on a real build. A reviewed blueprint goes further — nine sections, agreed line by line, and it is what the build is tested against.
Section 01 · What has to work
The product succeeds if a parent can find, book, and securely pay for a tutoring session, with tutors reliably receiving payment after the session is confirmed complete.
Section 03 · Screens
Every screen, and what it is for.
- ›Marketplace Search — Parent searches for tutors by subject and level; seeing results must be instant.
- ›Tutor Profile — Parent views a tutor's details, ratings, and availability; loading their calendar must be instant.
- ›Booking Checkout — Parent selects a time slot and pays; confirmation of successful payment must be instant.
- ›Session History — Parent reviews notes from their past sessions with a tutor; loading the session list must be instant.
- ›Tutor Dashboard — Tutor manages their schedule and sees upcoming bookings; loading their next session must be instant.
- ›Post-Session Summary — Tutor confirms a session is complete and adds notes; saving the notes must be instant.
Anything not on this list is not in version one. That is what keeps a fixed price fixed.
Section 04 · The data model
What it stores, and who can read a row.
user
uuid, text name, text email, text hashed_password, timestamptz created_at, enum('parent', 'tutor') role
Access · A user can read and write their own row.
tutor_profile
uuid user_id, text bio, numeric(10,2) hourly_rate, text[] subjects, jsonb availability_schedule
Access · Publicly readable. Only the owning tutor can write.
session
uuid, uuid parent_id, uuid tutor_id, timestamptz start_time, int duration_minutes, numeric(10,2) final_cost, text notes_for_parent, enum('booked', 'completed', 'paid_out', 'cancelled', 'disputed') status
Access · The parent or tutor associated with the session can read it.
rating
uuid, uuid session_id, uuid rater_id, uuid ratee_id, int score, text comment, timestamptz created_at
Access · Publicly readable after the associated session is completed.
Those access rules belong in the database, not in the screens. Someone who edits the address bar still cannot read a row that is not theirs — and the test that proves it blocks delivery if it fails.
Section 05 · States
booked → completed → paid_out | cancelled(reason) | disputed
Most scope arguments three weeks into a build are really arguments about a state nobody named at the start.
Section 06 · Where this breaks
What bites products like this one.
Time zone mismatches cause users to miss sessions, leading to disputes.
Store all times as timestamptz (UTC) and always display them in the user's local, labeled timezone.
A parent disputes a session after payment has been released to the tutor.
Hold funds in escrow and release only after a confirmation state is met by both parties or a short grace period expires.
A tutor's availability changes, but a session is booked concurrently, causing a double-booking.
Use database-level transactions with row locking when a parent is booking a specific time slot to prevent race conditions.
Section 08 · Deliberately left out
What version one does not do.
- ×In-app messaging and video calls — For v1, users bring their own communication tools; we only broker the booking and payment.
- ×Recurring availability for tutors — Tutors must manually create each available slot. Add recurring rules when booking volume demands the efficiency.
This is the section that protects the date, and the only place in the document where somebody says no. It is also why clients trust the rest of it.
Still open
What we would ask before quoting.
- What payment gateway will manage holding funds (escrow) and paying out tutors (e.g., Stripe Connect, Adyen for Platforms)?
- Does the platform provide the video call environment, or do users get a link to an external service like Zoom or Google Meet?
- What is the exact process for resolving a 'disputed' session, and who has the final say on releasing or refunding payment?
Half of this already exists
Members Circle
The community half of this is a solved problem: paid membership, moderation triaged automatically, and a weekly digest that brings people back.
It is one of our pre-built products: the code is handed over to you, adapted to your own wording and rules, and the rest of the specification above is built on top of it rather than from scratch.
Your product, not this one
Get this written for what you are actually building.
Describe it in a sentence and the generator returns the same sections for your own product. Free, no email, nothing saved to a list.
Next step
Find out if your idea fits in 10 working days.
Tell us what you want to build. We reply the same day with a straight yes, no, or here is what we would cut.