Penny — the human guide

A plain, illustrated walk-through of everything Penny does today. If you only read one page, read this one.

Penny lets you put a price on a single piece of writing — 5p, 10p, £1, or "pay what you think it's worth" — and share it as an ordinary link. Someone follows the link, taps the price once, and your piece appears, decrypted, in front of them. No subscription. No account-per-publication. The first time ever, a reader spends about thirty seconds setting up; after that, one tap works on every writer here.

It runs entirely on pretend money — Stripe test cards, no real charges anywhere — because this is a pilot measuring whether people will pay pennies for good writing, and which of two payment models they prefer. Every screen, every tap, every millisecond of speed is real. Only the money is fake.


The whole thing in one picture

flowchart LR
    W[Writer] -->|"paste text,<br/>set a price"| Studio
    Studio -->|"sealed in the<br/>browser"| Link[["a shareable link<br/>/r/your-piece"]]
    Link -->|"posts on Twitter,<br/>email, anywhere"| R[Reader]
    R -->|"taps the price,<br/>pays a few pence"| Unlock{{"key released →<br/>decrypts in the browser"}}
    Unlock --> Read[Reads the piece]
    R -.->|"their AI agent<br/>can read too"| Agent[Agent buys via a key]
    Read --> Ledger[(append-only ledger:<br/>who paid whom, provable)]
    Agent --> Ledger

Penny never sees your words. Your browser scrambles them before they leave; Penny only ever holds the key and the payment record. When a reader pays, the key is released and their browser unscrambles the text. That's the whole trick, and it's why a 10p price can be instant.


Part 1 — Signing in (there's no password)

Penny uses magic links. You type your email, you get a one-time link, you click it, you're in. That's the entire login — for writers and readers alike.

flowchart TD
    A[Go to /studio or /account] --> B[Type your email]
    B --> C[Penny sends a one-time link]
    C -->|"in local testing the link<br/>prints in the terminal"| D[Click the link]
    D --> E[Signed in · link expires in 15 min · works once]

You never make a profile, pick a password, or fill in a form. That minimalism is deliberate: every extra step loses readers.


Part 2 — Publishing a piece (the writer's journey)

Go to /studio, sign in, and you'll see the "New piece" form.

flowchart TD
    A["Draft your piece anywhere<br/>(Dropbox, a text file, wherever)"] --> B[Paste the markdown into /studio]
    B --> C[Add a title + a short teaser]
    C --> D{Pick a price}
    D -->|Fixed| E["tap a coin: 5p · 10p · 25p · 50p · £1<br/>(or a custom amount)"]
    D -->|"Pay what you think<br/>it's worth"| F[Readers choose, £0 allowed]
    E --> G{Where should the<br/>sealed file live?}
    F --> G
    G -->|"Penny hosts it"| H1[Publish]
    G -->|"I'll host it myself"| H2["Download the sealed file →<br/>upload to your storage →<br/>paste its link → Publish"]
    H1 --> I["Sealed in your browser.<br/>You get a share link."]
    H2 --> I
    I --> J[Post the link anywhere]

What you type. Your writing is markdown — headings, bold and italics, quotes, lists, links, tables, code. It can be as long as you like. You can embed images by URL (they need to live on a public web address; Penny doesn't upload images for you yet). Raw HTML and embeds (tweets, videos) are stripped, on purpose — decrypted writing runs in the reader's browser next to their keys, so we don't allow arbitrary code there.

Setting the price. Tap a coin — 5p, 10p, 25p, 50p, or £1 — or choose "Custom" for anything from 5p to £1. Or switch to "Pay what you think it's worth", where the reader picks (and £0 is an honest, visible option). You keep 98p in every pound; Penny's 2% covers the rails, taken at the moment someone reads.

Optional: an agent price. Under "Advanced" you can set a separate, usually higher, price for AI research agents (see Part 5). Leave it blank to charge agents the same as people.

Where the sealed file lives (your storage choice). This is new and it matters at scale:

flowchart LR
    subgraph "Option 1 — Penny hosts it (default)"
        P1[Your browser seals the file] --> P2[Uploads to Penny's storage]
        P2 --> P3[Penny holds the sealed bytes]
    end
    subgraph "Option 2 — You host it"
        O1[Your browser seals the file] --> O2[You download it]
        O2 --> O3[Upload to your Dropbox / S3 / site]
        O3 --> O4[Paste the link into Penny]
        O4 --> O5["Penny holds ONLY the key + payment,<br/>never your file"]
    end

Either way the file is already scrambled before it moves — the storage provider (even Penny) only ever holds noise. If you host it yourself, Penny stores nothing but the key and the payment record, and readers' browsers fetch the file straight from your storage. This is how Penny stays light: it never has to be a giant file warehouse.

Publishing. Hit Publish. You'll see "Sealed in your browser — Penny never sees your words," and a share link like /r/the-spike-in-my-inbox. Post that link anywhere — a tweet, a newsletter, a text.


Part 3 — Reading a piece (the reader's journey)

This is the product. A reader lands on your link and sees your byline, title, and teaser, with the body blurred and a copper price button floating over it.

flowchart TD
    A[Reader opens /r/your-piece] --> B{Signed in &<br/>set up?}
    B -->|"First time"| C["'Set up in 30 seconds'<br/>→ email + one payment step"]
    C --> D[Back on the piece]
    B -->|"Returning"| D
    D --> E[Taps the price]
    E --> F{Can they pay?}
    F -->|Yes| G["key released → browser decrypts →<br/>text blooms into view (~a few hundred ms)"]
    F -->|"Balance too low / tab full"| H[Top up or settle, then it completes automatically]
    G --> I["Paid. The writer keeps 98%.<br/>Re-reads are free forever."]

How you get paid. Your earnings accrue in your own currency and pay out when they reach a threshold. You choose the rail: your local currency (via Wise — you bear the small exchange fee, ~0.5%), USDC (a dollar stablecoin — no conversion fee; you cash out on your own terms), or the origin currency (no conversion, no fee). Penny never hides a deduction: you either bear the FX to get local money, or take USDC / origin currency to avoid it.

flowchart LR
    Z[Your accrued earnings<br/>in your currency] --> Y{Payout rail?}
    Y -->|Local currency| L["Wise → your bank<br/>(you pay ~0.5% FX)"]
    Y -->|USDC| U["stablecoin to your wallet<br/>(no FX fee)"]
    Y -->|Origin currency| O["no conversion<br/>(no fee)"]

The first-time setup is where the two pilot groups differ — this is the experiment:

flowchart TD
    Tap[First-ever tap while signed out] --> Assign{Randomly assigned<br/>to a group}
    Assign -->|"Balance group (Arm A)"| A["Add a £5 balance up front<br/>(refundable in full, anytime)"]
    Assign -->|"Tab group (Arm B)"| B["Save a card, pay nothing now.<br/>Reads go on a tab; the card is<br/>charged only when the tab hits £5"]
    A --> Read[Then: one tap per piece, forever]
    B --> Read

Both groups get the identical one-tap reading experience. Which "front door" more people walk through is the pilot's central question.

The tab, in detail (the more intricate of the two):

flowchart TD
    R[Reader taps a price] --> Ac[Read goes on the tab]
    Ac --> Chk{Tab ≥ £4.50?}
    Chk -->|No| Done[Keep reading]
    Chk -->|Yes| Settle[Penny charges the saved card<br/>in the background]
    Settle --> OK{Charge OK?}
    OK -->|Yes| Fresh["Tab resets to £0 ·<br/>quiet receipt on next page"]
    OK -->|No| Lock["Tab locks · reading pauses"]
    Lock --> Fix["Reader settles now, or adds<br/>a different card → recovers"]
    Fresh --> Done
    Fix --> Done

Reading before signing up — the anonymous tab (new in M15c). A writer can mark a piece "allow an anonymous first read." A brand-new reader then sees a different first button: "Read now · 50p — goes on your tab." One tap, no email, no card — the piece opens instantly, and a quiet pill notes what they owe. It is never called free, because it isn't: it's a tiny tab extended on trust.

flowchart TD
    A["Cold reader, no account,<br/>taps 'Read now · 50p'"] --> B["Piece opens instantly ·<br/>pill shows 'Your tab: 50p'"]
    B --> C{Finishes the piece?}
    C -->|Yes| D["One quiet sheet appears once:<br/>'Settle your tab · 50p' (Apple/Google Pay)"]
    D -->|Pays| E["Card saved → they now have a real,<br/>normal tab like any Arm B reader"]
    D -->|Closes it| F[Nothing happens · no nagging]
    F --> G["2nd piece → asked for an email ·<br/>3rd piece → asked for a card"]
    G -->|Never returns| H["After 30 days the pennies are<br/>written off as a marketing cost —<br/>writers are never paid from unsettled reads"]

The ladder is deliberate: the first read costs nothing to start, the second asks for an email, the third asks for a card. Freeloading is capped in pence (per browser, per network address, per article, and globally, with a kill switch) and the writer chooses per piece whether to allow it at all — the hard-gate option is unchanged and watertight.


Part 4 — Your account

At /account you see your money and your history.


Part 5 — Letting an AI agent read for you

Your own research tools can buy articles too, from your balance or tab, within limits you set. You never hand an agent your login — you mint a scoped key.

flowchart TD
    A[/account → Agent keys → Create key/] --> B["Set a daily cap (£2)<br/>and a per-read cap (50p)"]
    B --> C["Copy the key — shown once<br/>(pk_agent_…)"]
    C --> D[Register it with your AI tool<br/>via the bundled MCP server]
    D --> E["Ask your agent to read a Penny link"]
    E --> F["Agent quotes the price (free),<br/>then buys within your caps"]
    F --> G["Agent gets the decrypted text;<br/>the purchase is YOURS (re-reads free)"]
    F -->|"over a cap / tab locked"| H["Polite refusal telling the agent<br/>where you can fix it"]

Part 6 — Running the pilot (operator notes)


The map of everything (page inventory)

| Page | What it's for | |---|---| | / | The landing page — the pitch, the how, the honest FAQ | | /r/[slug] | The product — a piece to read, gated behind its price | | /studio | Write, price, choose storage, publish; your earnings dashboard | | /account | Your balance or tab, refund/settle, agent keys, history, delete | | /transparency | Public proof the key-release log is complete and unlinkable | | /admin | Operator-only: funnels, tap speed, the per-group scorecard | | /docs/agents | Developer guide for AI-agent access (keys, MCP, x402) | | /privacy, /terms | Honest pilot stubs |


Troubleshooting


Everything above is real and working today. The only thing that's pretend is the money.