Build a DocuSign alternative
Build a DocuSign alternative as a PDF, a signature field, and a private link. Personal is $11 a user a month for the box you already place by hand.
You can build a DocuSign alternative as a PDF, a signature field, and a private link. DocuSign is that product. The catalog line is “A PDF, a signature box, and a timestamp.”
Personal is $11 a user a month. Business Pro is $45 a user a month. Both figures are the annual plan, billed monthly. The pricing note leaves out Enhanced and IAM quotes. The first estimate is 10 hours.
The card marks it Weekend, and it scales with the team. The verdict is “The signature is a field”. Ship it when you send the same statement of work and you only need a mark on the last page.
Last time I wrote about vibe coding your own Splitwise. That was a teardown. This one is a regular backlog topic. Identity checks, in-sign payments, bulk send, and Salesforce stay on the skip row.
Build a DocuSign alternative from a PDF
The DocuSign page splits the work into three rows.
The first row is 10 hours. Upload a PDF, place signature fields, and send a signing link. The signer opens that link, adopts a signature, and the envelope can complete once.
The second row is 3 days. Date and name fields, void, a locked PDF, and a completion certificate. The certificate names the signer, the time, and a coarse IP.
The third row is a month and up. Identity checks, payments, bulk send, and Salesforce. The table labels that row as the part you should skip.
If you tell an agent to “clone DocuSign”, it aims at the third row. Copy the prompt, then pin it to the first one.
Store Envelope, Document, Field, SignatureEvent, and Certificate. The card names all five. For these 10 hours, Envelope, Document, Field, and SignatureEvent are enough. The certificate arrives with the locked file on the 3-day row.
An envelope is one send, with a status and a token. A document is the PDF in object storage. A field is a signature box on a page, with a position. A signature event is the mark, the time, and which token wrote it. A certificate is the later summary of that event.
The audience is a freelancer sending contracts and statements of work. The goal is to place signature fields on a PDF, send a private link, and keep a locked signed copy. The locked copy is the 3-day row. The 10-hour row keeps the original PDF and the event that says it was signed.
The same v1 also stands in for Dropbox Sign, Adobe Acrobat Sign, and SignNow. The card lists them and does not give them prices.
A proposal with a price and a yes is Better Proposals at $13–$42 a month, in Build a Better Proposals alternative. That acceptance is a name on a version. It is a different screen from a mark on a PDF. Who opened a file, and for how long, is DocSend at $65–$180 a month, in Vibe code your own DocSend. The non-goal says DocSend already covers view tracking, so this build does not count opens. HoneyBook is the wider client pipeline, at $29–$109 a month, billed yearly. The note leaves out processing fees.
The guardrail is the rule you paste into the prompt. Complete an envelope once per signing token. Flatten the signed PDF on the row that writes one. Keep signing links unguessable and revocable.
The 10-hour link is a random token. After a successful sign, that token cannot complete the envelope again. A void button, an expiry you edit, and the flattened bytes are the 3-day row. Until then, revoking the token is how you stop a link you sent too early.
How does a DocuSign alternative work
I am describing the catalog’s model of one envelope. You upload a PDF, you place a box, you send a link, and one token can finish the envelope once.
Your browser talks to one Astro app for the envelope and the field. Node.js plus Astro is the default. Use TanStack Start if React is your weekday language. The capability line on the card is Astro, HTMX, and R2.
The PDF goes to R2. The envelope, the fields, and the signature event need a SQL table. On the hosting this site uses, that table is D1. The signer never gets a bucket URL. The signing page loads the PDF through the app, and only while the token is still open.
Ada is sending an Oak & Co statement of work. Four pages. One signature field on page 4, low on the right. She uploads the file, drops the box, and copies the link. The email integration on the card can carry that link. The 10-hour path also works if she pastes it into the thread she already has open.
Cam opens the link. There is no account. The page shows the PDF and the box. He types his name in a script face, or he draws it. Save writes one signature event and marks the envelope signed. The token is spent.
He refreshes. The page shows the signed state and does not offer the box again. A second browser with the same link gets the same stop. Guessing another token returns nothing useful, because the token is unguessable and the query is the only key.
The original PDF stays the file you uploaded. The event stores the mark and the time. The 3-day row flattens those together into a PDF the signer cannot edit, and it writes the certificate. Doing that flatten in the first weekend is how the agent turns 10 hours into the month row. Leave the bytes alone until the event already sticks.
Every owner query is scoped by owner. A guessed envelope id from another account returns an empty page. The signing token is the only anonymous door, and it dies when the envelope completes.
Screens of a DocuSign alternative
v1 needs the field placement, the signing page, and a status line. Name fields, date fields, void, and the certificate can wait.
Place the field
The owner screen is the file name, the page, and the box. Oak SOW is on page 4. The box is the only field. Save stores the position with the document. Copy link is the send.
Signing page
Cam’s page is the same PDF and the same box. He can type or draw. Submit is the only action. There is no account form and no payment step.
Status
The owner sees waiting, then signed. The signed row shows the time. It does not yet show a certificate. That file, plus void, is the next row. A revoked token, on this cut, is a status you set before anyone signs. After they sign, the token is already spent.
How a signing link gets used
Ada uploads Oak SOW and places the box. She copies the link into the email she was going to send anyway. Cam opens it, draws a signature, and submits. The app checks the token, writes the event, and marks the envelope signed.
He opens the link again. The box is gone. Ada reloads her status page and sees signed, with the time. The PDF in R2 is still the upload. She can read the event beside it.
If she revokes the token before Cam opens it, his visit finds a closed envelope and writes nothing. If two tabs submit together, one event wins. The guardrail is one completion per token, so the second submit finds the envelope already signed.
What to leave out of a DocuSign clone
The skip row starts when the link has to prove who Cam is, take a payment, send the same PDF to a list, or write the result into Salesforce.
An identity check is a document scan or a third-party quiz before the box appears. A payment field charges a card inside the signing page. Bulk send is a mail merge of envelopes. Salesforce is a second system of record. The non-goal leaves all of those out.
The 3-day row is still yours after the weekend. Name and date fields, void, a flattened PDF, and a certificate with signer, time, and coarse IP. The event from the 10-hour row is the input. You are not starting over.
What you store in 10 hours is a mark and a time on a private link. The card does not call that an identity check. If the contract needs a verified signer, keep the $11 plan for that envelope and use this build for the statements of work where you already know who Cam is.
The scope post is the same three-row habit. The prompt post is the line that says the token completes once, and a second submit writes nothing.
Start with the first row
Go to Build your own DocuSign. Copy the Astro prompt, or TanStack Start if that is what you write.
Tell the agent the first estimate only. PDF upload, signature fields, a signing link. Ten hours.
Upload one statement of work you sent last month. Place the box where you used to ask for a scan. Sign it yourself on the link, reload, and confirm the second visit cannot sign again. Add the flattened file when you need a single PDF to store. Leave identity checks on the $11 plan until a stranger is the one holding the link.