Real-Time Pitch Deck Analytics Tool Development by miri sanReal-Time Pitch Deck Analytics Tool Development by miri san

Real-Time Pitch Deck Analytics Tool Development

miri san

miri san

I built this after a founder friend wanted to track investor views on his pitch deck and see if he could find out which pages were working and which were not.
After talking to my founder friend Yash, he mentioned that he has analytics on his product which helps him improve his product marketing data to improve their marketing campaigns.
But there isn't a tool for him to make informed decisions for his pitch deck.
He shares the deck and it goes into the void. There are no signals or insights that can help him improve his deck before sharing it with other investors.
First User
First User
This is the lens I had before starting to think about the product...
Founder looking at investors
Founder looking at investors
So this raises the question, what can that founder decode from just looking at their interactions.
There are three things:
This will help the founder identify which parts of their deck are working and which are not, so they can update it for the next investors.
Track user activities - Ignore the first and last pages from overall metrics and account for inactive state of browser tabs
The goal of share-your-deck.com is to replace uncertainty with clarity, and every deck shared is an opportunity in motion.
These were the two pillars on which the whole branding is based:
1. Opportunity
2. Visibility
So they also became the root of our logo.
Using the familiar hexagonal "sale" shape to symbolize opportunities to save and discover value, and using the eyes to represent vision, we built our logo.
Together, the eyes and the radiant form tell a complete story of active visibility.
The deck isn't just sent. It's seen, tracked, and understood in real time.
This also becomes the mascot for the brand.
Logo breakdown
Logo breakdown
SYD Logo
SYD Logo
SYD Mascot
SYD Mascot
Tech stack for this product is Angular and NodeJS on top of GCP. The reason is that I have seen these in production every day at my job at Velt.dev so I know it can scale and provide good devex as well.
The full development of this app was done alongside Cursor to speed up the go-to-live process.
It took me 2 weeks of work to make everything.
Architecture
Architecture
Deck Tracking Architecture
Serverless from the jump — no Node layer. Browser talks straight to Firebase via SDK; auth, rules, and indexes are the whole "backend."
Anonymous writes by design — database.rules.json has the eyebrow-raising "auth == null || auth != null" (i.e. always true) on sessions/. Viewers aren't logged in; the fileId in the path is the access control.
Public-read workspaces — anyone can read workspaces/* (so /{slug} works without auth); only the owner email on the token can write.
Storage is just a CDN for PDFs — no resizing, no signing dance. URL lives on the workspace doc.
fileSummaries as a tombstone — on delete, aggregates are computed once and parked in Firestore so analytics outlive the source PDF.
Angular standalone SPA where services are providedIn: 'root'.
We have three timers (1s UI, 5s sync, 5s inactivity), activity listeners that pause the clock so idle time doesn't inflate "time on page."
Batched writes, not chatty so the page changes pool and flush every 5s. Arrow-key users hit the DB the same as slow readers.
LocalStorage as a session lifeline. Keyed pdf_session_{filename}_{email} with 24h TTL.
Cache service in front of every aggregate. Toggling the domain filter busts the cache via an RxJS filterChanged$ subject; components re-render without a refetch.
ngx-extended-pdf-viewer does the PDF lift — the app only owns the analytics overlay and the page-change hook.
Dashboard
Dashboard
People's Tab - Which pages did the visitor look at most
People's Tab - Which pages did the visitor look at most
Specific Page View
Specific Page View
Firebase, one command — `firebase deploy` ships hosting, rules, and indexes in a single shot. No CI/CD pipeline.
Static SPA on the CDN — Angular builds to `dist/`, Firebase Hosting serves it globally with SPA rewrites.
Two environments, one repo — dev and prod swap Firebase projects at build time via Angular's `fileReplacements`.
Rules live in git — Firestore, RTDB, and Storage rules ship from the repo, not console clicks.
With each iteration, I got feedback from my friend and I kept improving the product.
Here are some things that I added after the feedback:
Ability to have a constant URL even after the PDF is updated so everyone has the latest deck
The app currently has 3 users since I haven't invested time in marketing as I have been just building it so far.
Like this project

Posted Jun 2, 2026

Developed a pitch deck analytics tool to track viewer interaction.