7
3
5

Estimate → approve → build

Point at it.
It gets done.

Markup is a headless dev shop behind a script tag. Clients drop pins where something's wrong; the pipeline estimates, builds, and stages the fix — you click once and staging rolls live, with rolling backups the whole way.

One pin, end to end

Watch a request ship itself

Pin
Approve
Build
Stage
Live

Your client clicks the exact spot on their own site. A snapshot freezes the page — the pin can never drift.

yourclient.com/orders/new
2
“the handling fee never shows up here”
2Pin #2 · pricing boxestimating
Maya — the handling fee never shows up here
Agent — fee rows exist but don't transfer to the invoice. Small, contained fix.
Estimate: 2 pts · $290 Approved ✓
⎇ fix/handling-fee-transferPR #214

Invoice: carry handling & processing fees onto issued invoices

opened by markup-agent · 3 commits · +148 −12

  • build passed
  • unit tests 212 passed
  • e2e — invoice totals passed
staging.yourclient.com/invoices/5000214staging
12 doors — shaker, painted$1,846.00
Shipping (our truck)$75.00
Handling — 16 pieces$16.00
Total$2,249.00
before/after attached to pin #2 — client verified in 20 seconds
Roll live

staging → production

  • backup 07:30 — verified
  • backup 19:30 — verified
  • ↺ roll back any deploy, one click

Built for Shopify

Your storefront's dev team, behind one app install

Theme work is where Markup shines. Pin the thing on your live storefront — a section that breaks on mobile, a badge in the wrong place, a landing page you wish existed — approve the estimate, and the machine does the work on a copy of your theme. You get a preview link; publishing is one click; the theme you're running today stays untouched until you say go, and it's your instant rollback after.

01 · INSTALL

Add the app

One app-embed toggle in your theme editor puts the pin widget on your store. No code edits, no developer needed to get started.

02 · PIN

Point at the storefront

You and your team drop pins on the live store. Every pin gets an estimate in dollars — nothing runs until you approve it.

03 · PUBLISH

Preview, then go live

Every fix lands on an unpublished duplicate of your theme with a shareable preview. Like it? Publish. Don't? It never touched your store.

On the Shopify track, tokens are included in the subscription — no API keys, no meters, no surprise usage bills. Theme jobs are bounded work, so the estimate you approve is the whole price.

The proof moment

Every delivery ships with its receipt

The snapshot taken when the pin dropped is the “before.” When the work lands, Markup pairs it with the “after” — so acceptance takes seconds, not another meeting.

Try it — drag the handle.

Invoice #5000214updated 2:14 pm
12 doors — shaker, painted$1,846.00
4 drawer fronts — slab$312.00
Shipping (our truck)$75.00
Handling — 16 pieces$16.00
Total$2,249.00
Invoice #5000214issued 9:02 am
12 doors — shaker, painted$1,846.00
4 drawer fronts — slab$312.00
Shipping (our truck)$75.00
Handling—
Total$2,233.00
↔
beforeafter

The headless dev shop

Maintained like you had a team on it — because you do

Markup isn't another inbox of feedback. Wire it to your repo and CI — or hire us to — and the whole path from “this is wrong” to “fixed in production” runs itself. And you're backed both ways: rolling backups behind every deploy, and our engineers behind you whenever you want humans on the work.

01 · INSTALL

Drop in the widget

One script tag on any site — production, staging, a prototype. Clients pin what they want changed; no accounts, no new tool to learn.

02 · CONNECT

Point it at your repo + CI

Connect GitHub and your pipeline — or have us set it up. Approved pins become branches, pull requests, and green check runs.

03 · SHIP

Approve twice, ship safely

You approve the estimate, then approve the go-live. Everything lands on staging first, with rolling backups — rollback is one click.

What's in the box

Small widget. Whole workflow.

Everything a studio needs to run visual review with clients — and nothing that requires them to make an account or learn a tool.

Pins that survive

A click drops a numbered pin anchored to a snapshot of the page. The live site can change underneath — the pin stays where the feedback was.

Threads, not tickets

Every pin is a conversation with a comment count. Zoom into the exact area, go back and forth, resolve when it's actually done.

Estimates on the pin

Attach an effort estimate to any pin and let the client approve it in place. Scope conversations happen where the work is, not in email.

Stages that mean something

Reviews move draft → approved → in progress → delivered → accepted. Everyone can see where each request stands at a glance.

Before / after proof

The snapshot at pin-time is the before. When you deliver, the client gets a draggable comparison — verification without a meeting.

Invisible install

One <script> tag. The widget mounts in a shadow root, so it can never collide with the host page's styles — yours or your client's.

Built for the agent era

Your AI agent works the pins too

  • Server-to-server API keys — agents read new pins the moment they land
  • Agents reply on threads, post confidence-gated estimates, and mark deliveries
  • Drafts stay private until published — a human approves what the client sees
  • Every action is audit-logged with who (or what) did it
# a new pin appeared — your agent picks it up
GET /api/projects/:id/pins?status=open
Authorization: Bearer mk_agent_…

# it scopes the work, confidence-gated
POST /api/pins/:pin/estimate
{ "points": 2, "confidence": 0.93 }

# ships the fix, attaches the proof
POST /api/pins/:pin/comments
{ "body": "Delivered — before/after attached",
  "deliverable": true }

For dev teams & day zero

Not on Shopify? Bring a repo — or start from one.

Run a Shopify store? That's the fast lane — connect it and you're done. For everyone else: choose an open-source starter, or point us at a repo you already have. Either way it lands in your own GitHub org with the widget installed, and from there you don't write code: you drop pins on the thing you want it to become.

🛍️

Storefront

Catalog, cart, checkout — pin your way to a shop.

🚀

Marketing site

Landing pages, blog, forms. Launch this week.

📊

SaaS dashboard

Auth, billing, admin — the boring parts pre-built.

📚

Docs & knowledge

Structured docs with search, versioned.

Your repo, your code, permissive licenses — the pipeline is the service, not a hostage. Self-serve, you connect your own hosting and CI/CD (guides included); on Concierge we set all of it up for you. Works with your AI assistant too: point it at Markup and let it queue the pins.

Install

One tag. Any site. No account for your clients.

Works on production sites, staging, prototypes — anything that runs in a browser. Shadow-DOM isolation means it can't break the page it's reviewing.

<script src="https://markup.rivlet.io/embed.js"
        data-key="your-project-key"
        defer></script>

Pricing

Simple while we're in early access

This replaces the retainer agency. On self-serve your own tokens power the work — we just rent you the machine (Shopify stores get tokens included). On Concierge, every job is billed by the estimate you approve. Never by the hour, either way.

Agency scope.
Zero retainer.

Markup is built for organizations that would otherwise keep an agency or a dev team on retainer — the same scope of work, from new features to full redesigns to ongoing maintenance. The difference: the platform is a subscription, and every dollar of development effort is approved by you, per pin, before it's spent.

Collect

$0 / mo

Client feedback, organized

  • 1 project, 1 domain
  • Unlimited pins & threads
  • You reply yourself — no agent
  • 30-day snapshot retention
Join the waitlist

Studio

$29 / mo

Run client review yourself

  • 10 projects, unlimited reviewers
  • Estimates & approvals
  • Before/after deliveries
  • Your team does the work
Join the waitlist

Pipeline

$299 / mo · your tokens

Rent the machine

  • Estimate → approve → build, on your own API key
  • No metered markup — your tokens at cost
  • Shopify: tokens included, no API key to bring
  • GitHub + your CI; agent builds & staging
  • Live run console — watch, pause, steer
  • Your devs review — or add ours, per delivery
Get early access
The full shop

Concierge

Per delivery — never hourly

Pipeline + our engineers — the agency replacement

  • A senior engineer reviews & integrates every delivery
  • Human review priced into each estimate you approve
  • We field your meetings — notes become queued, estimated pins
  • Everything in Pipeline
Talk to us

The agent never works on spec: every pin gets an estimate, and nothing runs until you approve it. On Pipeline the loop runs on your own LLM API key — your tokens, your budget, your call, with per-run caps. On the Shopify track tokens are included in the subscription, and work happens on an unpublished copy of your theme until you publish. Every run is supervised by a human: on Pipeline that's your team, from the run console; on Concierge it's ours. Early access carries no SLAs. Free projects are one domain per organization.

Enterprise

SSO, SLAs, security review, dedicated senior engineers, and custom terms — for organizations running serious development effort through the pipeline.

Contact us

Early access

Stop collecting feedback.
Start closing it.

Markup was built inside real client engagements before it had a landing page. We're opening it up team by team.