Vuelette
A collaborative image curation and delivery tool for photographers and model agencies. Upload shoots, rate and favourite images together, build sets and portfolios with public share links, and let AI surface visually similar images via in-process vector search, with smart versioning that no competitor in the price class offers.
Vuelette is being grown by request only, with a small set of users, while the core flow is tested before it's opened up to scale. The whole curation pipeline (upload, review, curate, share) is running on real data today; the deliberate, test-first pace is exactly what keeps it solid rather than rushing a public launch and crashing.
The feature set
The architecture
Cheap today. A clear path to scale.
SQLite in WAL mode is exactly right at this scale: zero infra cost, dead-simple backups, and fast enough that the in-Node vector search returns under 200ms. Running this for almost nothing is a feature, not a shortcut.
The data layer is built to move to Postgres when concurrent writes and multi-user load make it worth it: the obvious next rung, planned from the start rather than bolted on in a panic.
When the image count outgrows in-process cosine, the embeddings move into a real vector index (pgvector); the search stays the same to the user, only the engine underneath changes.
A distributed database only when the volume genuinely demands it. Each rung is the cheapest thing that holds at that size; you never pay for big-system infra before you have a big-system problem.
Two ideas competitors
don't have.
The first is visual vector search inside a gallery tool. Three prototype iterations were actually benchmarked and the results saved; the winning approach stores each embedding as a packed Float32 array and runs cosine similarity in plain Node, scaling to ~100k images under 200ms, with no vector-DB dependency, at effectively zero cost per shoot. Pixieset, ShootProof and Pic-Time don't do this.
The second is stable image identity across versions. The image_versions table lets the same image ID, and all of its ratings, comments and set memberships, survive when a photographer uploads a retouched version, matched on the camera's original filename. Competitors treat every upload as a brand-new image; this quietly solves a problem nobody else has.
The honest read: as a personal tool it's ~80 to 85% there; as a distributable SaaS the core works but onboarding, plan limits and billing are the remaining miles. That gap is named on purpose, and so is the data roadmap above: SQLite now because it's the right, cheap choice at this size, Postgres and a vector index when the load earns them. Knowing exactly when to spend is how you avoid shipping slop.
Want a build like this?
Vuelette is what deliberate, test-first building looks like: a genuinely original vector pipeline shipped without the VC theatre. If your product needs the same care, let's compare notes.