Inspiration
Everyone still shares PDFs the same two ways: as an email attachment, or as a Drive link. Both feel unfinished. The attachment bloats the inbox, the Drive link opens into someone else's interface with a "Request access" button waiting to embarrass you, and in both cases you have no idea whether the thing you spent a week on was ever opened.
The moment it clicked for me was watching how much effort goes into the document before it gets sent, and how little thought goes into the sending. A manufacturer's rep builds a beautiful 40-page product catalogue and then fires it into a Gmail thread where it dies. A real estate agent shoots a walkthrough video and can't get it to play inside the brochure — because embedding video in a PDF genuinely doesn't survive being shared; the file references a local path the recipient's browser viewer ignores. The document is good. The delivery is broken.
FactorPage came out of that gap: the file is finished, so give it a real home on the internet instead of a download prompt.
What it does
You upload a PDF you already made — Canva, Word, InDesign, anything — and FactorPage turns it into a hosted web page with its own link. That page carries your branding, a QR code for print, a call-to-action, and video that plays on the page above the document. You can put several documents on one page as tabs, drop animated overlays onto specific spots on a page, and embed the whole thing as a widget in an existing site.
On the analytics side, you see when a page was opened and how long the viewer stayed — enough to know your proposal landed and when to follow up.
How I built it
The app runs on Laravel with a hardened PDF.js viewer on the front end. Files live in DigitalOcean Spaces behind a CDN. Auth is passwordless — Laravel signed URLs sent as magic links from a dedicated sending subdomain, so there's no password to forget on a tool you might use twice a month.
The domain architecture ended up being the most consequential design decision. Marketing lives on one domain, free user pages on subdomains of a second, paid branded pages on a third. That split exists so free pages can stay out of the search index without dragging the marketing site's reputation around with them.
The overlay system was the fun part. Placements are stored as fractional coordinates relative to the page rather than pixels, so an animated element pinned to a diagram stays pinned through zoom and across screen sizes. Transparent GIFs get converted to animated WebP, opaque ones to MP4 — same authoring experience, very different file sizes.
The marketing site is Webflow, and I built the SEO tool pages out on top of a keyword model rather than guessing at topics.
Challenges I ran into
Untrusted files are the whole threat model. Every upload is a document from a stranger that other strangers will open. The pipeline does magic-byte validation, malware scanning, and strips active content out of the PDF before it's ever served, with scripting and eval disabled in the viewer. None of that is visible to a user, and all of it had to exist before launch.
Subdomains are harder than they look. Wildcard SSL with auto-renewal, apex coverage, and a Public Suffix List submission so browsers treat user subdomains as separate sites — an infrastructure problem I'd completely underestimated when I sketched the architecture.
One wrong line in robots.txt can kill your growth engine. Free pages carry a link back to the main site. Blocking those pages in robots.txt would have looked like the responsible choice and would have silently made every one of those links worthless, because a crawler can't follow links on a page it isn't allowed to fetch. The fix is a noindex, follow meta tag with the file left open. That distinction cost me a day of reading and would have cost months of compounding.
Writing honest copy is a constraint, not a footnote. I banned a set of phrases from the entire site — anything about watermarks, permanence, or claiming to identify who opened a document. It rules out most of the phrases competitors reach for first, and it means every page had to be argued rather than assembled.
What I learned
Nobody in this category pays for storage. They pay for analytics and access control. The bytes are the cheapest thing in the product.
I also learned how much of a solo build is deletion. The landing page had eight sections, five rotating value propositions, and eight different labels for one button. Cutting it down did more than any feature I shipped that month.
What's next
Finishing the subdomain infrastructure, lead capture for the pages, and integrations that put the product inside the tools people already make PDFs in — starting with Google Workspace and Canva. The plan is deliberately gated on evidence: platform work begins when there are twenty activated users coming back to upload a second document, not on a date.
Log in or sign up for Devpost to join the conversation.