Path
Everything shipped, and the day it shipped.
Every technical and product decision behind Milo, in the open, as it gets made. What shipped and the tradeoff it carried, what is being worked on now, and what is only an intention. Dated honestly, including the quiet weeks.
Not shipped yet
no dates promised- Up next
Accounts and sessions
Sign up, log in, log out, with authorisation checks on every protected route so no account can reach another's resumes by changing an id.
- Auth
- Backend
- Up next
Create a tracking link
Paste the URL your resume already lives at and get back milo.app/r/abc123. URL validation with SSRF guards, since the server must never be tricked into fetching an internal address.
- API
- Security
- Queued
The viewer itself
PDF.js rendering with page navigation, zoom and fullscreen, plus the download flow that records the event before handing the file over.
- Frontend
- Queued
Event pipeline and dashboard
Anonymous sessions, deduplicated page views, dwell time per page, and the analytics that turn those into views, unique viewers, downloads and traffic source.
- Analytics
- MongoDB
- Wanted, unscheduled
Link controls
Expiring links, one link per application, and UTM presets so a candidate can tell LinkedIn from a referral without hand-editing query strings.
- Product
- Things shipped
- 5
- Days with a release
- 3
- Days since the first
- 5
13 August 2026
2 releases- Shipped
Product app, and the design system underneath it
Marketing shell for the app, with a story section where one beat index drives the copy feed, the figure pose and a WebGL backdrop of 54 cards rendered as a single InstancedMesh. Tokens and shared components moved into their own packages so both apps render from one source; Tailwind v4 needs explicit source globs to scan a linked package, verified against the built CSS rather than assumed.
- React
- Three.js
- Design system
- Monorepo
- Shipped
Polyglot monorepo with a single task runner
npm workspaces for TypeScript, Poetry for the FastAPI service, and a Makefile so one command lints both languages. CI splits into parallel JavaScript and Python jobs. Prettier is fenced out of the Python package, proven by dropping an identical malformed file into each and checking only one was flagged.
- Infrastructure
- CI
- Python
- Shipped
12 August 2026
1 release- Shipped
Source-available licensing, notices generated not guessed
Elastic License 2.0, diffed byte for byte against two official Elastic repositories rather than reproduced from memory. Third-party notices built from each dependency own license file, which surfaced that lucide-react carries ISC terms plus a separate MIT notice for Feather-derived code.
- Licensing
- Compliance
- Shipped
9 August 2026
2 releases- Shipped
Waitlist API, and a Mongo client that survives a cold start
Zod validation at the boundary, rate limiting, and a honeypot that returns success so bots learn nothing. Duplicates are rejected by a unique index rather than a read-then-write check that would race. One cached client per serverless instance, and a rejected connect promise clears itself, since a memoised rejection makes a warm instance fail forever after the cluster is fixed.
- API
- MongoDB
- Security
- Reliability
- Shipped
Landing page, and privacy enforced in the schema
A scroll-driven WebGL story in five acts. Progress lives in a ref, not state, so the canvas runs at 60fps while React re-renders about five times across the section, and it degrades to a static composition under reduced-motion or without WebGL. There is no identity field to switch on later: IPs are hashed with a rotating salt for rate limiting only, and Permissions-Policy denies camera, microphone and geolocation at the HTTP layer.
- Three.js
- Performance
- Privacy
- Accessibility
- Shipped