← all projects
Live2026 · Solo engineer

VolleyPacket

A multi-user SaaS that turns one spreadsheet into a personalized document for every recipient and delivers them by email and SMS, with a full delivery report. FastAPI and Next.js, built to stay correct across many workers on infrastructure that restarts under it.

An administrator has a spreadsheet full of people — exam candidates, applicants, new hires — and needs to get each person their own document, then prove it arrived. Mail-merge tools stop at the document. Email tools never build one. VolleyPacket owns the whole job, from a messy spreadsheet to a delivery report.

The problem

Sending personalized documents to hundreds or thousands of people is slow and easy to get wrong. The source data is messy: typo’d emails, phone numbers stored as numbers, photo links buried in a Drive folder. The work usually splits across three tools with a lot of manual copying in between. Worst of all, once everything is “sent”, nobody can say for certain who actually received what.

What I built

A multi-user web app that owns the entire pipeline. Upload a spreadsheet, pick or AI-generate a template, and it renders a personalized PDF for every row, then delivers each one by email and SMS through the provider the user configured, and hands back a report of exactly who got what. It can also pull and optimize recipient photos to embed in the documents.

It is a real product, not a demo. Every account is strictly isolated, with its own email and SMS providers, and its own plan and billing. Long runs, thousands of rows at a time, can be paused, resumed, and cancelled while they are in flight.

How it holds up

The hard part is not generating one document. It is staying correct while generating thousands, on a system that can restart underneath you. VolleyPacket runs several workers on infrastructure whose local disk does not survive a redeploy, so the database is the single source of truth for every job’s state, never a worker’s memory. Each task (PDFs, emails, SMS, photos) streams its progress from the database, so a restart mid-run loses nothing and the person watching sees an honest, moving status the whole time.

On security

VolleyPacket handles real people’s data on a live system, so it was hardened deliberately, not by accident. That security work grew into its own project, Libero: a full threat model and a custom security gate in the build pipeline that stops the guarantees from quietly regressing.