MVP to Production SaaS Upgrade

Faculty grade in any format. Students get structured, criterion-aligned feedback.

A private client's early-stage grading SaaS for faculty and instructors. We rebuilt it end to end in six months. Faculty upload assignments as documents, PDFs, or audio and video recordings, attach a rubric or prompt, and receive structured feedback they can export as a PDF. Students join by course code and see their graded work in the same dashboard.

6 months Multi-tenant SaaS · Credit-metered billing · Multi-modal AI grading Launched Oct 2025
The Brief

A demo that worked in a meeting, turned into a SaaS faculty can depend on.

The brief

The client had spent months building a grading workflow that faculty genuinely liked. The grading logic was solid. Everything around it was not. There was no billing. Authentication was partial. Document intake only covered text. Faculty and students used the same surface with no real separation. The platform worked on one laptop and nowhere else. The brief was simple: take this from a demo-stage product to a launched, multi-tenant SaaS with billing, role-based access, reliable hosting, and a document pipeline that could handle the work faculty actually receive.

What production-ready meant in this engagement

Production-ready is not a checklist. For this platform it meant four concrete things. First, a real billing layer with credit metering, so a grading call could not run unless the user had credit for it. Second, a real identity layer with email verification, Google sign-in, and refresh-token sessions. Third, a document intake that could read what faculty actually upload, not just typed text. Fourth, a split between the relational teaching model and the billing state, so a late-night webhook could never corrupt a student's assignment record. Every one of those shipped.

Who this is for

Faculty and instructors who spend hours every week marking student work and want feedback to stay consistent from the first paper to the fortieth. Academic leaders who want a self-serve SaaS their teaching staff can sign up for without an IT project. Founders of early-stage SaaS products who have working features and need the production layer built out before they can charge for it. The platform is multi-tenant, so each instructor manages their own courses, rubrics, and students inside their own scope.

Private client6 monthsLaunched Oct 2025Faculty grading SaaSMVP to production
From demo to launched SaaS
6 mo
One continuous engagement from production readiness audit through public launch
Input formats in the grading pipeline
4
PDFs, Word documents, plain text, and audio or video recordings all enter the same flow
Grading modes shipped
2
Rubric-aligned and prompt-only, both returning structured feedback ready to export
Billing plans live end to end
3
Free trial, Starter, and Pro. Credit-metered, webhook-verified, no manual top-ups
How we delivered

Production readiness audit, platform build, and a launch that held.

What we did

  • A launched multi-tenant grading SaaS with marketing site, application, and API
  • Credit-metered billing with three Stripe plans and hardened checkout
  • Multi-modal document pipeline covering PDFs, Word documents, plain text, and audio or video recordings
  • Role-based access for faculty and students with email verification and Google sign-in
  • Dual-store architecture keeping academic data and billing state safely separated
  • Production hosting with monitoring, alerts, and safe deployment practices

Our process

Phase 1: Production readiness audit
4 weeks

We started by mapping what the MVP was doing well and where it would break the moment a paying faculty member tried to use it. Data model, API contracts, auth flow, cost per grading call, deployment story. From that we agreed on the production scope, the stack choices, and the rollout plan.

Phase 2: Platform build
16 weeks

The real work. We rebuilt the application on Next.js with a typed backend, added credit-metered Stripe billing with origin-guarded checkout, wired up email verification and Google sign-in, layered in rubric and prompt grading modes, and expanded the document pipeline to accept Word, PDFs, and transcribed audio and video. Along the way we split persistence so billing and academic data stopped sharing a single failure surface.

Phase 3: Launch and stabilize
4 weeks

We shipped the application to AWS Elastic Beanstalk, the marketing site to Netlify, and the webhook chain to Stripe. Monitoring, logs, and health checks went live alongside the public launch. The platform has been running on that footprint since October 2025.

Services covered

Production readiness auditFull-stack buildBilling and paymentsAuthentication and access controlAI grading pipelineProduction hosting and launch
Architecture

A stack built for paying faculty: credit-metered, role-scoped, multi-format, multi-store.

Frontend
  • Next.js 14 with TypeScript
  • Material UI and Tailwind CSS for the application surface
  • Marketing site and in-app experience in one codebase
  • Responsive faculty and student dashboards
  • HTML feedback that renders in-app and exports to PDF
API
  • Flask with SQLAlchemy
  • JWT auth with refresh tokens and Google sign-in
  • Credit-checked grading endpoint shared by faculty and students
  • Webhook handlers for Stripe billing events
  • Server-side guardrails on cost and payload size
Data
  • MySQL on AWS RDS for the relational teaching model
  • MongoDB Atlas for credit balances and billing state
  • Cascading enrollment cleanup so course deletion stays clean
  • Separation between academic data and billing side effects
  • Schema built around faculty, courses, rubrics, and assignments
AI and grading
  • OpenAI GPT-4o-mini for rubric and prompt-only grading
  • OpenAI Whisper for audio and video transcription
  • Word-count cap enforced before any model call
  • Structured HTML output so feedback renders the same in-app and in PDF
  • Two grading modes sharing one credit ledger
Document pipeline
  • PDF ingestion via PyMuPDF
  • Word document ingestion via docx2txt
  • Plain text intake
  • Audio and video transcription via Whisper
  • One normalized text stream into the grader, regardless of source
Billing and credits
  • Three Stripe plans live: Free trial, Starter, Pro
  • Credit meter decremented only on a successful grading call
  • Origin-guarded checkout redirect to block a known class of redirect attacks
  • Stripe webhooks that update credits automatically
  • Billing state stored separately from academic records

Deployment pipeline

Build
Next.js 14 • Flask • TypeScript • SQLAlchemy
Application, marketing site, and API build in sync against the same environment contracts.
Deploy
AWS Elastic Beanstalk • Netlify • MongoDB Atlas
API runs on Elastic Beanstalk. Marketing and application front end run on Netlify. Staged rollout with rollback.
Monitor
Application logs • Health checks • Webhook delivery tracking
Every billing event and every grading call leaves a trail the client can read without pulling up a codebase.

Stack summary

How faculty use the platform
  • Upload what they already have
    Assignments come in as PDFs, Word documents, typed text, or recorded audio and video. Faculty do not reformat anything before uploading.
  • Grade how they already teach
    Two modes live side by side. Rubric-aligned for courses with a defined grading scheme, prompt-only for open-ended review. Both return structured feedback with headings, bullets, and criterion scoring.
  • Export in one click
    The same HTML feedback that renders in-app exports to PDF for distribution. No second formatting pass, no copy and paste, no broken layouts.
How the platform stays trustworthy
  • Verified identities
    Registration is gated on email verification. Google sign-in is offered for one-click onboarding. Sessions use refresh tokens so faculty stay signed in between grading sessions without weakening security.
  • Role-scoped data
    Faculty manage courses, rubrics, prompts, and assignments. Students join by course code and see only their own work. A single endpoint serves each role its own scoped view.
  • Billing isolated from academic data
    Credits and billing state live in MongoDB. Courses, rubrics, and assignments live in MySQL. A webhook retry can never corrupt a student's grade record, and a classroom data fix can never leak into billing.
How costs stay predictable
  • Credits decrement on success
    A grading call only spends a credit once it lands. A failed model call does not silently burn the user's allowance, which is the difference between a plan faculty trust and one they do not.
  • Word-count cap at the server
    Every grading request is capped before it reaches the model. Per-run cost stays predictable even when someone uploads a much longer document than expected.
  • Structured-output prompts
    The grader is constrained to emit HTML rather than free prose, so formatting is consistent, export is deterministic, and the cost of a grading run does not balloon on a verbose response.

Key integrations

StripeOpenAI GPT-4o-miniOpenAI WhisperAWS RDS (MySQL)MongoDB AtlasGoogle OAuthAWS Elastic BeanstalkNetlifySMTP
What we delivered

A launched SaaS. Faculty grading, in production.

A launched, multi-tenant grading SaaS for the client. Live in production since October 2025, carrying real faculty, real students, and real billing.

A grading workflow that holds up outside a demo. Faculty upload the documents and recordings they already have, choose between rubric-aligned or prompt-only grading, and hand students structured feedback that exports straight to PDF.

Billing that runs without engineering intervention. Three Stripe plans, credit-metered grading, webhook-updated balances, and a hardened checkout redirect. The client charges, the platform collects, and nobody has to babysit it.

A data model the client can live with. Academic records and billing state sit in separate stores, so one failure surface never takes the other down, and adding a feature on one side never breaks the other.

MVP to productionMulti-tenant SaaSNext.jsFlaskMySQLMongoDBStripeJWTOpenAI GPT-4o-miniOpenAI WhisperAWS Elastic BeanstalkNetlify
Feature highlights
  • Multi-format assignment intake covering PDFs, Word documents, text, and audio or video
  • Two grading modes: rubric-aligned and prompt-only
  • Structured HTML feedback ready to export as PDF
  • Credit-metered billing with three Stripe plans
  • Role-based faculty and student dashboards
  • Email verification and Google sign-in
  • Hardened Stripe checkout redirect
  • In-app support inbox that notifies the team and confirms to the user in one send
  • Dual-store architecture with MySQL for academic data and MongoDB for billing

Innovations

A dual-store architecture that stops billing from touching academic records

Courses, rubrics, assignments, and enrollments live in MySQL. Credit balances and billing state live in MongoDB. A retried webhook can never corrupt a student's grade, and a classroom data fix can never leak into billing. This is the single biggest structural change between the MVP and the launched platform.

Credits that only count what actually worked

Every grading call checks credits before it runs and decrements only on success. A failed model call does not silently burn a user's balance. That one rule is the difference between a plan faculty trust and one they do not.

A document pipeline that matches how faculty actually teach

PDFs, Word documents, typed text, and transcribed audio or video all feed into the same grading flow. Faculty do not preprocess anything. Spoken presentations are graded through the same rubric engine as written essays.

Structured feedback that renders and exports without a second pass

The grader is constrained to emit HTML with headings, bullets, and justifications. That same HTML renders in-app and exports to PDF through the PDF engine. Faculty get one output they can use in two places, and the layout never breaks between them.

Impact on Teams & Workflows
  • The client moved from an early-stage demo to a launched, multi-tenant SaaS that bills, authenticates, and grades on its own footprint, in one continuous six-month engagement.
  • Faculty feedback stays consistent from the first paper graded to the fortieth, because grading runs through the same structured pipeline every time, whatever the input format.
  • Billing infrastructure runs hands-off. Credits, plans, and checkout work end to end without an engineer having to sit next to the Stripe webhook chain every time a plan change goes through.
  • The launched platform is built so the next features ship on top of it, not around it. Multi-tenant scope, credit-metered calls, dual-store persistence, and typed API contracts all stay in place as the product grows.
What shipped in the production release
  • Marketing site, application, and API on one codebase surface
  • Faculty dashboard for courses, rubrics, prompts, and assignments
  • Student dashboard with course-code enrollment and graded view
  • Multi-format intake pipeline with automatic transcription for audio and video
  • Credit-metered grading with rubric-aligned and prompt-only modes
  • Three Stripe plans with webhook-updated credit balances
  • Email verification and Google sign-in with refresh-token sessions
  • HTML-to-PDF export on the same feedback output that renders in-app
  • In-app support inbox with email notification plus user confirmation
Production-readiness checks that gated the launch
  • Billing passes end to end on all three plans before any paying user
  • Credit meter decrements only on successful grading, not on failure
  • Academic data and billing state live in separate stores
  • Role scoping verified for faculty versus student on every endpoint
  • Document pipeline accepts every format the faculty surveyed use
  • Deployment story covers staging, production, and rollback
  • Monitoring and alerts in place before the first paying signup