The dare was one day.
The evening before, over a beer with coworkers, I said I would build the idea in a day. The first commit landed at 06:35. Background replacement worked at 08:00. Virtual try-on followed at 08:23.
Auth, billing, rate limiting, and Sirv storage were in before noon. The first MVP merge is timestamped 12:05. Batch processing and a side-by-side compare mode landed that afternoon. There were 31 commits on day one.
436e069Initial commit from Create Next Appf001584background replacement + model selection6aa7e81virtual try-on71ab430multiple product angles + lighting removal5ec7242auth, billing, rate limiting, Sirv integrationc19bf1emerge the MVP branchd9f6f2ebatch mode + multi-selectb659a90compare mode
The launch spike never ended.
There were five blank days in the first 220. February was the quiet month. It still carried 316 of my commits, mostly billing, entitlements, and the plumbing that turns a demo into a business.
The shape changes in March when other engineers enter the history. April contains the live framework migration. June and July show the QA and agent machinery at full speed. July is partial below, the first nine full days plus the snapshot commit just after midnight on the 10th, and it already exceeds every complete month except April.
This is what 220 days bought.
The old page reduced the whole run to seven numbers. That missed the story. Below is the actual sequence: tools become workflows, workflows become a DAM and PIM, supplier intake becomes governed publishing, and the repo develops its own production line.
December 2025
From dare to connected platform in 30 days.
602 mine
A product before lunch
Background replacement, virtual try-on, multi-angle product shots, auth, billing, rate limits, Sirv storage, batch mode, and compare mode all land on day one.
436e069
c19bf1eSingle tools become a visual workflow
The canvas arrives with reusable tool configs, multiple execution modes, generated-image sources, batch inputs, undo and redo, and a full-screen studio.
650e590
a5bace3Durable jobs, live progress, human review
Large batches and workflows leave the browser request cycle for Inngest, stream progress over SSE, reconnect after interruption, and pause at an image-review step inside a DAG.
53fde2f
cc9ae98Sirv delivery, analytics, 3D, and MCP
Processed files upload to Sirv, PostHog starts measuring use, new 3D models arrive, billing moves to background jobs, and the first MCP server gives agents a proper tool surface.
bb9b387
d5e45fdCatalog-scale processing
Product descriptions and batch alt text join the toolbox. CSV, Google Sheets, and XLSX imports feed a fan-out architecture designed for 100,000-plus items with live item status.
90a54c1
2cb96c3Five integration surfaces in four days
MCP gains OAuth, stateless HTTP, and Claude support. Shopify ships and moves from REST to GraphQL. Zapier, n8n, and the OpenAI Apps SDK follow. The platform can now be used from a store, an automation, or an agent.
212608e
c1a7f45
72c88f8January 2026
The tool collection acquires memory, products, and organisations.
531 mine
One model registry and a smarter graph
Model configuration is centralised across image, video, 3D, caption, and try-on tools. The orchestrator gains typed ports, multiple sources, Magic Fix, branching outputs, and connection validation.
059080c
9d3e4a6Context-aware prompts, WordPress, Sentry, GLB
Prompt expansion can inspect the source image. A WordPress plugin gets OAuth. GLB optimisation moves server-side with batch jobs. Sentry lands, then a programmatic SEO system capable of generating a very large route set.
d7d59a5
1ca234e
79a8053The DAM starts in one concentrated day
Assets, tags, favourites, filters, R2 storage, product columns, operation history, save-to-library, and product review establish the asset system under the AI tools.
5394a3a
d4051af
cb7b92fProducts and activity enter the same workspace
The dashboard absorbs assets, products, workflows, and activity. Bulk product assignment and context menus arrive. Usage analytics becomes a first-class workspace section.
125d23d
b703357Multi-organisation DAM
Role-based access, multiple organisations, nested collections, bulk download, share links with subfolder navigation, and a full-width workflow studio turn the library into a team product.
e215943
6c82a9d
cca1c01Shopify metadata and a cleaner data layer
Shopify metafields and metadata templates arrive while the data layer finishes its snake_case to camelCase Drizzle migration.
3758e6c
a53dac6February 2026
Supplier intake becomes a product, not an upload form.
316 mine
Approval workflows and the first supplier portal
Pinned image comments, approval workflow services, a supplier-facing upload portal, an approval queue, before-and-after autofix review, and one-click repair with controlled approval land together.
f6dc77f
e9f198e
489d4c3Search, permissions, trash, and Shopify workflows
BM25 search gains typo tolerance. Resource-level RBAC closes product, folder, and collection paths. Soft deletion gets a cleanup job. Shopify gets multi-step pipelines and a health dashboard.
addeba9
bed01d3
a7dd921Supplier batch intake
Scoped assignments, slot templates, spreadsheet imports, manual product matching, Dropbox, and Google Drive turn supplier delivery into a structured batch workflow.
ede7c9dSFTP, SAP, catalog imports, and live Shopify sync
Supplier SFTP and SAP import support arrive beside product CSV import. Shopify product edits can sync automatically with retry-safe GraphQL handling.
95b2fc4
7473589
ae93156The safety net gets serious
One commit adds 955 edge-case tests. Five paid AI vision checks are replaced with deterministic pixel analysis. The library gets marquee selection and keyboard navigation.
2beb40e
31e710a
b08037cAI moves inside the asset workflow
Create Studio launches, bulk AI processing starts from the library, tool state survives refresh, and Bearer-token auth unifies public API and session access. Generation Studio follows with five modes.
68beab6
337a0ae
948185eMarch 2026
The demo becomes an operable content system.
504 mine
The library is rebuilt on a real data grid
Assets and products move onto a shared virtualised grid with table and gallery modes, server-side product search, row-level import recovery, bulk actions, and hundreds of focused DAM tests.
67fe026The Alkosto pipeline proves supplier operations
A demanding real supplier specification drives reusable validation, product assignment, image specs, autofix, review, and delivery. The setup wizard and information architecture are redesigned around the workflow.
1b46de7Imports and side effects become durable
Product imports fan out as cancellable background jobs. Supplier SFTP gets stronger auth and cleanup. Batch and tool handoff moves through an event outbox so a retry does not casually duplicate work.
cc82f6aAutofix becomes a review system
Single and bulk repair share a review-session controller. Geometry fixes collapse into one smart-crop pass, buffers are reused, and supplier results remain manual where confidence is not enough.
ede85b0
ae2fac3The data grid gets extracted and profiled
Column resize, reorder, selection, keyboard navigation, and state ownership move into shared seams. Accessibility and render performance improve without losing the dense operator UI.
7bc6817
4b5577bSupplier delivery learns to roll back
Approved supplier assets can follow configurable Sirv delivery roots with a delivery audit and cleanup path instead of becoming irreversible file copies.
810b4e0April 2026
A live framework migration, followed by a data-model expansion.
1,337 mine
Next.js is replaced in 72 hours
TanStack Start boots on the 8th. Public pages, auth, products, assets, suppliers, settings, webhooks, MCP, Shopify, and uploads move route by route. The final Next runtime dependency is removed on the 10th.
2b77aee
1b3e106The QA fleet gets roles and campaigns
A lead, runner, and explorer become a three-agent QA framework. Axe-based accessibility scans, bug-hunt campaigns, dedicated role users, pooled execution, web-vitals capture, and worker heartbeats turn testing into an operated system.
550fd25
2a48b59Autofix becomes an agentic planner
Mask-aware margin repair, sellable-unit safety, atomic approvals, private agent state, diagnostics, and retry-aware planning let the system propose repairs without granting it unsafe freedom.
4e65c4e
74aa157The product-content graph takes shape
Typed attributes, variant identity, revision history, product search documents, publish projections, drift checks, proposal review, and backup verification give product content explicit owners.
af5afa8
cc60142Workflows gain real triggers
Uploads, schedules, product changes, and authenticated webhooks can start workflows. Dry runs, test events, attempt history, enable checks, filters, duplicate actions, and provenance make triggers operable.
93f91ab
4588de6QA becomes visible
The QA Monitor gains retained run history, quality gates, migration-aware status, bug-hunter summaries, and wiring audits while programmatic SEO gets route-specific metadata and cross-linking.
8832cbf
7221548May 2026
Governance, channels, repairability, and release trust.
979 mine
The product graph gets a written constitution
The repo defines one canonical path from organisation to source, product, variant, assignment, asset, attribute, publish projection, and readiness. A product readiness command centre follows.
4922c34
76e0197Readiness becomes channel-aware
Shopify, SAP, and other destinations get distinct requirements. Logical filter groups, saved views, CSV export, channel targeting rules, PIM workspace updates, and Sid Kit primitives make those rules usable.
8661f62
bfbb992Workflows learn DAM and PIM operations
The orchestrator can source from products and assets, write into the content system, and run through a typed Effect-based operation kernel with explicit credit, persistence, and finalisation boundaries.
17ccb65
0a4d83bRecovery paths stop being an afterthought
Invariant safety rails, projection repair, idempotent credits, queue health, dry-run reconciliation, HLS inspection, video remux, and filmstrip extraction close failure modes that only appear under real load.
f81e52e
1cffb47A real QA database and operator monitoring
Tests get an isolated PostgreSQL database. Inngest realtime subscriptions harden. Signup onboarding arrives, and Grafana becomes a menu-bar signal instead of a dashboard someone forgets to open.
8ab1f65
c3ab638Releases and email decisions become auditable
Release attestation binds proof to the exact pushed commit. The E2E coverage control plane gains evidence artifacts. Managed email gets versioned templates, policy decisions, test sends, audit history, and rollback.
d5d2237
3e438e5June 2026
The construction machine turns into a proof machine.
1,180 mine
QA campaigns become evidence-bearing work
Agent loops get workflow packets, result bundles, defect backfeed, coverage claims, mutation sentinels, evidence freshness, risk budgets, and an operator ledger instead of merely reporting “tests passed”.
d0ef47e
55e2e58Quality gates split by risk
Tiered edit, session, and ship gates keep feedback fast. An analytics command centre ships. The coverage matrix becomes tool-owned, Storybook gets a taxonomy, and supplier MCP tools expose SFTP, review requirements, and autofix safely.
f2a04c3
29a22f8Entitlements become source-aware
Plan access moves from scattered tier checks to named source grants, capability guards, admin ceilings, Shopify billing reconciliation, guarded backfills, and a cutover report.
25184b7
fca2a4cReadiness and public proof broaden
Product readiness previews, public page smokes, API auth-boundary contracts, area-aware coverage, and large proof waves shift attention from code presence to working user paths.
2297a6b
d54ae6bThe catalog-health loop becomes executable
Quota and readiness observers, asset linking, AI-fix workflows, supplier requests, Shopify sync, channel export, and browser proofs connect a detected product gap to a controlled action.
5bbe169
7e11baaThe old tool pages begin converging
The unified Create workspace migration starts pulling separate AI tool routes into one operation dock, stage, result inspector, attach flow, and shared job model.
a22f3ee
c60134fJuly 2026
Nine full days. The largest wave, then a deliberate correction.
1,189 mine
snapshot 10 Jul
Every major AI tool moves into one studio
Background removal, upscale, generation, translation, product copy, video, fashion, and depth tools share one workspace with library search, attach targets, chaining, model-aware progress, and reduced-motion processing scenes.
6500481
ac3d1cdNew tools and a supplier expansion wave
Image expand, relight, video upscale, generative fill, Fashn try-on, Kling, Seedance, and SVG vectorise arrive. Supplier search, live status, custom rejection reasons, quotas, onboarding email, and locked-plan states land beside them.
4057353
8873cd0The QA Manager and transaction guard
A supervised QA manager gets pause, snooze, breaker, cost, and heartbeat controls. A runtime guard now fails immediately if code tries to use the global database pool from inside a transaction, replacing two-minute deadlocks with a useful error.
4fbf953
af60353The product points at activation
Catalog health leads the dashboard. Named workflow recipes run on product selections. Drift-aware publish confirmation shows per-product results. The entire save, attach, approve, and publish loop gets analytics and consent-aware measurement.
a8cd589
9ab22a8First-run experience replaces empty machinery
Sample assets, an activation checklist, honest channel states, capability-led admin, privacy controls, quota email, and a catalog-health homepage give a new user a path instead of a wall of features.
01bd13a
0cb349dProof, rollback, and scope control
Readiness gets a mobile first-run experience. Shopify rollback receives a full design spike. Retention jobs handle high-volume tables. The homepage tightens to the product wedge, and clanker convergence now quarantines workers that exceed their assigned scope.
9638f45
5ef05cd
e1d4d80The product is the loop.
AI output is easy to make. Product content is hard to operate. Studio keeps the file attached to its product, variant, source, approval state, channel requirements, publish history, and rollback path.
workflow step types
Image work, product operations, branching, human review, storage, and Shopify delivery in a typed graph.
source: STEP_REGISTRYMCP tools
AI agents can search assets, manage products, run workflows, sync Shopify, and use supplier operations without bypassing entitlements.
source: mcp-server/README.md + registrationsOpenAPI operations
A published, ratcheted API surface. Every route is either documented or deliberately excluded with an owner and a reason.
source: public/openapi.json operationId countdatabase migrations
Products, variants, product-asset links, approvals, event intent, billing, jobs, integrations, and the history needed to recover from mistakes.
source: drizzle/**/migration.sqltest and spec files
Unit, integration, contract, edge-case, Storybook, and browser coverage. The number is large because the operating method depends on cheap regression detection.
source: tracked *.test.* + *.spec.* filesapproximate monthly infrastructure
Vercel, a self-hosted Inngest stack, PostgreSQL HA, Redis, and observability at the current capacity. Model usage is separate.
source: current project operating estimateI built a machine that builds.
AI agents type the code. That is the least interesting part. The leverage comes from giving them bounded work, isolated branches, tests, adversarial reviewers, and a path to converge without turning the repo into soup.
VibeQueue holds the work. The clanker army turns reviewed plans into worker batches. Each batch runs in its own worktree, passes focused tests and quality gates, then gets reviewed by specialist agents before convergence. My job is architecture, specification, judgment, and deciding what deserves to exist.
Primary identities from git shortlog. Another 144 commits belong to additional contributors, bots, and alternate identities.
Velocity created its own problem.
“Construction has outrun proof.”
That line is from the repo’s own July situation assessment. The end-to-end loop exists, but too much of the platform is rollout-gated and too little is backed by named merchants using it every week. The commit graph is evidence of an unusual production system. It is not evidence of product-market fit.
So Q3 has a surface freeze. No new tools, channels, or workflow step types without an explicit decision. The same fleet is moving onto activation, billing boundaries, browser proof, onboarding, App Store quality, and getting ten merchants through the full loop. A build record is stronger when it records the course correction too.
Every big number has a counting rule.
The codebase is private, but the claims are not hand-waved. This snapshot uses the current local dev branch at 20eef964. Here is exactly what was counted.
| Claim | Counting rule | Result |
|---|---|---|
| repo commits | git rev-list --count HEAD | 9,452 |
| author split | git shortlog -sne HEAD | 6,638 / 1,943 / 727 |
| daily activity | git log --author='igor@varyvoda.com' --format='%ad' --date=short HEAD | 215 active days |
| test files | git ls-files '**/*.test.*' '**/*.spec.*' | 4,751 |
| migrations | find drizzle -name migration.sql -type f | 263 |
| MCP tools | mcp-server/README.md checked against tool registrations | 47 |
| workflow steps | definitions exported through STEP_REGISTRY | 39 |
| OpenAPI operations | operationId entries in public/openapi.json | 64 |
I will walk through the private git history live in an interview, screen shared, with no prepared branch. The product itself needs no permission. Sirv AI Studio is public and free to try.