A tiny, shippable growth experiment built on Val Town.
This project is intentionally small: one email, two links, and a fully-instrumented mini web app. It demonstrates how I approach growth engineering at dev-tool companiesβship fast, measure everything, and wire feedback loops end-to-end.
pillChoice is a two-path experience inspired by the classic βchoose your pillβ metaphor:
- Red pill β a public, role-tailored CV page + concrete growth ideas
- Blue pill β a hidden route that triggers a server-side automation
Both paths log events to a shared SQLite database so behavior is observable immediately.
This was built as an application experiment for a Growth Engineer role at Val Town.
Rather than sending a traditional cover letter, I wanted to:
- Build inside the platform
- Show how I think about activation, instrumentation, and growth loops
- Demonstrate comfort with Val Townβs execution model (Deno, Hono, stdlib)
-
Single-page React app
-
No router library β routing is done via
window.location.pathname -
Client-side event tracking on:
- page views
- pill selection
- Hono HTTP app (
index.ts) - Val Town
std/sqlitefor persistence - Optional email + webhook triggers on the blue-pill route
Events are stored in SQLite with:
- timestamp
- event type
- pill choice (if applicable)
- path
- user-agent + referrer
You can inspect recent events at:
/api/events?limit=50
| Route | Description |
|---|---|
/ | Landing page with pill choice |
/red | Public CV + growth plan |
/blue | Hidden route that triggers automation |
/api/events | JSON event log |
These are not required, but enable extra proof points:
WEBHOOK_URLβ POSTs a JSON payload when/blueis visitedNOTIFY_EMAIL_SUBJECTβ subject line for notification emailNOTIFY_EMAIL_TOβ recipient (if supported by plan)
There is no local dev server.
Instead:
vt watch # sync changes continuously vt browse # open the live site vt tail # view logs
The deployed site is the development environment.
- Minimal surface area β fewer moving parts, clearer intent
- Observable by default β every meaningful action emits an event
- Fast to iterate β new experiments should take minutes, not days
Thanks for taking the time π
This project is small on purpose. The goal isnβt polishβitβs to show how quickly I can:
- understand a platform
- build within its constraints
- and turn an idea into a measurable experiment
β Andy