One workspace for the front of house — a production-ready component library, client portals with approvals and billing, and a suite of browser web tools.
The site builder inside Stacklumen. Design on a real canvas, publish managed client sites, and hand over the keys without handing over the build.
Where the work runs — workspace, team, clients, brand and plan. One account across the whole suite.
Production-grade applications, internal tools, and SaaS platforms on a modern TypeScript stack. Eight to twelve week sprints with full code ownership at handover.
Pixel-honest marketing sites with hand-rolled GSAP animations, Lenis smooth scroll, and embedded systems tuned to platform limits. Dark mode and accessibility included.
The suite · One platform, two apps
Web builds from $3,000, custom software from $24,000. Fixed scope, six weeks.
See pricingAcross the suite
Company, docs, roadmap and legal all live under Resources — nothing is duplicated here.
Learn
Follow along
Products, Pricing, Company and Legal are their own panels — nothing is duplicated here.
SupportA public record of meaningful work — product features, new services, site changes, brand updates. We update this when something actually lands, not on a marketing cadence. The roadmap covers what's next; this page covers what's done.
The documentation is now one click away from anywhere in the product, from a shortcut in the frame toolbar rather than only from a link on the marketing site. Alongside it, the profile stopped being a single text box.
Every product's rail now carries the agency's own logo and name, read from the database rather than from the auth provider — so which tenant you are working in is legible at a glance, not just which product you opened.
A client row expands into one card per product — always all four — showing what Stacklumen, Baselumen and the then-separate Hublumen and Kitlumen each held for that company, and a button that goes and does the next thing there. Empty cards render too, because a product showing nothing for a client is usually the next thing to do.
Checkout is handled by the auth provider's billing rather than a direct Stripe session, so a plan typed into the dashboard becomes an entitlement the apps already read. Prices were reconciled against the catalogue at the same time.
Subscriptions are billed to the workspace rather than to the person who happened to click Subscribe, so a team of five needs one plan rather than five. Plans can also be granted by hand from the dashboard and land in the same entitlements table a real subscription writes to.
The shared documentation shipped across all four products — two thirds of it describing the suite once, each product adding only what is genuinely its own. Alongside it, a first-run tour, mandatory account setup, and a public support form for people locked out of the thing that is broken.
Entitlements had been written correctly, read correctly and enforced nowhere — every reference to a plan check lived in a comment. Access is now refused on the server with a 402, and the screen renders that refusal as an offer rather than an error.
Agency, Clients, People, Billing, Profile, Account, Roadmap, Requests and Community became one implementation vendored into all four repositories, with a drift check so an edited copy fails a build instead of quietly disagreeing about what a plan includes.
The dashboard opens on the estate — every workspace, product and entitlement — rather than on the sales pipeline. Beside it, a Plan board that reconciles every entitlement against what Stripe actually says.
Stacklumen is the authentication primary and the other three are satellites of it. Signing in on one now returns you to the host you came from, keeps your session across the handshake, and signs out where the session actually lives. Documented in full, because it took a day to find and would take a day to find again.
Every signed-in screen now renders inside one workspace shell — mounted once, with the section as state — instead of being a set of authenticated web pages that rebuilt the navigation on every click. Cross-app links point at each product's workspace rather than its homepage.
The waitlist framing came off the portal product — then Hublumen, now client portals in Baselumen — across the site, and the pricing was corrected to what is actually charged.
⌘K / Ctrl-K from anywhere in the product, searching screens, clients and settings. The orange secondary accent introduced alongside it was replaced with brand blue two commits later — one accent, used sparingly.
The starting price for a Webflow build was published as $8,500 and had not been that for some time. Corrected everywhere it appeared.
Around fifty Astro marketing pages were replaced by native Webflow pages and 308-redirected rather than deleted, so every existing link keeps working and the search signal consolidates onto one copy. What stays in the app is what has to: the documentation, the legal documents, the invitation landing page, the partner-program link target and the merch store.
A tiered all-in hosting model — a flat agency fee alongside the native host's own fees — written into the app terms, the offer terms, pricing and the documentation at the same time, so the four could not disagree about it.
A client capabilities page carrying eight explicit commitments and a Webflow-plus-Astro-first position, and a plain explainer for the $300 native-framework upgrade with its free-upgrade path. Upgrade terms were added to both the app terms and the offer terms.
Invited referral partners now have a self-serve area at /app/partners/dashboard — their referral pipeline, a commission summary (20% of collected revenue, paid as we're paid), a refer-a-client form, and a shareable referral code. Staff invite and manage partners from /app/admin/partners and move each referral through to paid commission.
Both pages lived in a nested folder that stacked on the Webflow Cloud /app mount, producing /app/app/help and /app/app/partner-program. Moved them up a level so they resolve cleanly at /app/help and /app/partner-program, with the nav, command-palette search, and in-page links repointed.
Added a ⌘K / Ctrl-K command palette on every app page: fuzzy search across pages, tools, docs and quick actions, recent destinations, and live blog + case-study results — opened from a new search button in the navbar.
Shipped a tabbed admin dashboard (Overview / Inbox / Pipeline / Clients / Chat / Audit / Integrations) and then pulled the blue gradient backdrop and "Mission Control" theming off it. Sophisticated working surface, not a control-room demo.
Clients now have a thin touch-surface portal: chat with the team, sales materials, business info, personal tasks. The "Hublumen" tab inside was the upgrade invitation — the full file-delivery / approvals / billing portal product (now client portals in Baselumen) was reserved for that.
Restyled the Hub home to a brand-aligned hero + four numbered sections + CTA strip (was a 755-line apps grid). Added a Baselumen preview page, an explicit How-We-Work walkthrough at /process, and this changelog.
Added a standalone $200 tier on /upgrades for clients who want a polished theme switch without committing to the full custom-code overhaul.
PDFs (Capabilities Overview, Services & Pricing, How We Work, Selected Work, Upgrades & Add-Ons, Norway Offer 2026) gated behind an email submit. Captures lead in Supabase + tags the subscriber in Mailchimp.
Standalone contact page with project type / budget / timeline / message fields, video hero, and dual Resend notifications (autoresponder to submitter + staff alert). Every "Start a project" CTA across the app now routes here.
Substantive content identical to the marketing-site /portal-terms; restructured into a docs-style sticky-rail TOC with nine numbered sections. Five draft sections flagged for legal review (IP, GDPR/CCPA, Billing, Indemnification, SLA).
Managed paid-media programs across Meta, Google, YouTube, TikTok, LinkedIn, Reddit, X, Pinterest. Retainer band $500–$3,000/mo, ad spend band $200–$5,000/mo. Calibrated for law firms, medical practices, warehousing — not DTC.
No newsletter spam. Join the early-access list and we'll email when there's a real reason to.