Skip to content
NewThe humanizer lint now explains every flag and offers a one click fix
About

A content operation with a signature

WriterDean turns a short brief into a published piece that reads like a person wrote it, and keeps the record of how. The dean signs off on every piece, after the humanizer.

Three people stand at the edge of a field raked into straight furrows, looking toward the horizon
The noise is raked into straight lines by hand. That is the job, and the people who do it still look at the horizon.
The name

Why a dean, and why a signature

Most writing tools stop at the draft. The draft is the easy part. What a content team spends its week on is everything around it: the brand's positioning, the research behind a claim, the keyword the piece has to own, the review, the publish, the refresh six months later. WriterDean runs that whole operation, and the last thing that happens to every piece is a pass that makes it read like a person wrote it.

A dean is the person who signs off. Not the writer, and not the machine: the one who reads the work against the standard and puts a name to it. The mark is that signature, one stroke that writes a W and lifts off in a flourish. In the app it is drawn while a run is thinking, and it settles when the run is done, so the brand and the product's state are the same shape.

The rule behind the name is the one the product keeps most stubbornly: the humanizer cannot be turned off. It is not a feature you can pay to skip. The whole point of the operation is that what leaves it carries a signature a reader would trust.

The story

What we hold to

Five rules the product keeps

The code enforces each one, not a policy page. Where a rule has a check behind it, the check is named.

Principles

  1. 01The humanizer runs last, and nobody can switch it offEvery piece ends with the same pass: a rewrite for the tells that give machine text away, then a lint that scores it. The app has no setting for it, and the API refuses a request that tries. If the output reads too plain, the fix is in the brand document, not in a toggle.
  2. 02Every run keeps its traceA finished piece sits beside the record of how it was made: each stage, the skills it loaded with their versions and hashes, the model, the tokens, the cost, the gates it passed. You can read why a sentence exists. So can an auditor.
  3. 03Skills, not promptsThe pipeline runs vendored marketing skills, written as instructions a person could follow and locked by version and hash. A change to a skill is a commit, and the trace says which version wrote each piece.
  4. 04Nothing inventedThe site shows no logos we do not have and no quotes nobody said. These pages read their numbers from the product's own catalogs, and the screenshots come from the running interface.
  5. 05Readable by everyoneEvery color pair on every surface passes WCAG AAA, in both themes. The accessibility run is part of the deploy gate, and a page that fails it does not ship.
  6. The rule in the APIThe API refuses a request that sets the humanizer off, with 400 and a message that says why. The reference shows the fields that trigger it.Read the rule
By the numbers

Read from the catalogs, not typed in

These counts come from the same files the app runs on. Add a template or a skill and the number here changes with it.

Numbers

  • 91
    templates, each with its own chain
  • 51
    versioned skills with hashes
  • 9
    stages on every long form run
  • 12
    sections in the brand document
  • 9
    publishing channels
How we build it

Plain parts, one database

How it is built

Next.js and React
The site, the app and the API routes, deployed on Vercel.
Postgres on Supabase
One database with row level security per workspace, so a query cannot forget a tenant. Sign in with email, a one time code, Google or GitHub.
A pg-boss worker
Runs the pipelines, the publishing jobs, the refresh scans and the automations, from the same database.
OpenAI models, Anthropic optional
Each stage is routed to a model class. A deterministic mock stands in for tests and demos.
Stripe and PayPal
Subscriptions and invoices. Card details never touch our servers.
Playwright and axe
End to end tests against a production build, and the AAA accessibility audit that gates every deploy.
Recently

Decisions, with dates

A short log of what changed and why. The repository keeps the full version, newest first.

Decisions

  1. The documentation, the API reference, this page, the status page, the legal pages

    The footer had pointed at pages that did not exist. They now do, written from the code and the catalogs so they cannot drift from the product.

  2. The product became the visual

    We retired the generated backgrounds that said nothing about the business from every screen. The live demo took the hero, and each section shows the artifact it produces.

  3. One type family, one wordmark drawn by hand

    Inter carries every size. The wordmark is drawn as paths, so nobody can retype it, and its w is the mark.

  4. First production deployment

    The web app went up on Vercel with the domain attached, ahead of the DNS switch that followed. The site you are reading is that same deployment four days and one redesign later.

Talk to us

One address, read by the people who build it

Questions, a bug, a plan that does not fit, a page that says something wrong: write and say which.

Contact

Your first article is on us

Sign up, paste your site, pick a template. You will have a researched, humanized draft with its full trace in a few minutes.

Write your first article free
  • No card needed
  • Free plan included
  • Full trace on every run