All payments made in the preview are in test mode. Read more

Documentation

How the platform is built

Architecture, analysis engine, retention, API access and the security model behind Manucheck.

Platform overview

Manucheck is a single application with two customer paths: direct subscribers on monthly commercial plans, and promotional license holders who activate a plan with a redemption code. Both use the same dashboard, database, analysis engine and reporting system.

Analysis runs against the current KDP guidance ruleset held in the policy database. Every report records the policy version and effective date it was generated with, so an older report can always be interpreted in context.

Architecture

The frontend is a server-rendered React application. Application logic runs in typed server functions rather than a separate API tier, which keeps request validation, authorisation and database access in one place.

Data lives in PostgreSQL with row-level security on every user-owned table. Files are held in a private object-storage bucket with per-user path policies. Secrets are held in managed secret storage and read only inside server handlers.

The design maps directly onto an AWS deployment: static frontend on Amplify, server handlers on Lambda, PostgreSQL on RDS, files on S3, secrets in AWS Secrets Manager and telemetry in CloudWatch.

Analysis engine

Extraction converts DOCX, EPUB, PDF and TXT into normalised text. DOCX and EPUB are unpacked and their document XML is stripped to text; PDFs are read through their text layer.

The extracted text is sent to OpenAI under the customer's own API key with a structured system prompt derived from the active policy version. The model returns a strict JSON document containing scores, issues, recommendations, a checklist, metadata suggestions and a risk review.

Responses are validated before storage. A malformed response fails the run and reports the reason rather than persisting partial data.

Data retention

Manuscripts carry an expiry timestamp set to seven days after upload. A reminder is issued at day five and the record is purged at day seven, removing the stored object, the extracted text and any cached processing artefacts.

Reports are retained indefinitely under the customer's account and contain findings rather than manuscript content.

API access

Pro accounts can drive analysis programmatically. Requests are authenticated with a bearer token issued from the account and are subject to the same plan limits, validation and retention rules as the dashboard.

The submission endpoint accepts a document and returns a job identifier; the report endpoint returns the structured report document once the job completes.

Security model

Authentication is email and password or Google, with verified email addresses and secure password reset. Sessions are bearer-token based and validated server-side on every privileged call.

Authorisation is enforced in the database with row-level security, so a bug in application code cannot expose another customer's data. Roles are stored in a dedicated table and checked through a security-definer function, never read from the client.

All inputs are schema-validated before use. Uploads are constrained by extension, size and per-user storage paths. Administrative actions are written to an append-only audit log.

Deployment reference

The platform maps cleanly onto managed AWS services for teams that need to run it in their own account.

LayerServiceNotes
FrontendAWS AmplifyStatic hosting, CI from the main branch, edge caching and custom domains.
BackendAWS LambdaServer handlers deploy as isolated functions behind API Gateway.
DatabaseAmazon RDS for PostgreSQLMulti-AZ, automated backups, row-level security enforced in-database.
StorageAmazon S3Private manuscript bucket with lifecycle expiry at seven days.
SecretsAWS Secrets ManagerEncryption master key and service credentials, rotated on schedule.
MonitoringAmazon CloudWatchStructured logs, analysis latency metrics and alarms on failure rates.