What we shipped, when
New features, performance improvements, and product expansions — published as they ship.
2026-05-17
Booking requests captured by email — wire one form action
Appointment-booking blocks now ship with a real server endpoint at /api/booking. Wire your generated booking form to POST against https://northluma.com/api/booking and every request lands in your inbox with the visitor's name, email, phone, service, preferred date, preferred time, and message — plus a copy persisted server-side for backup. The endpoint validates every field (closed enum for time-of-day, calendar-real date check, international-tolerant phone regex) so a single typo returns a clear error code rather than a silent drop. Use it for early traffic, then graduate to Formspree, Netlify Forms, or your own SMTP when you want to own the full data path.
Visual block editor: drag, hide, regenerate, export
Open any generated site at /builder/edit/[id] and rearrange it like a real design tool — drag blocks to reorder within a section, hide blocks you do not need, regenerate any one block with a single click, and export the polished HTML as a download. Edits live in your browser tab; cross-device sync is the next step on the roadmap.
Live preview during generation: streamed block-by-block
The /builder generation screen now streams progress as it happens. A live status strip surfaces each milestone — sanitisation, prompt prep, the AI call, quality checks — then reveals each header, body, and footer block as it lands. Screen-reader friendly via aria-live announcements. Falls back to the classical sync flow on corporate networks that buffer streaming responses.
Template library expanded to 500 industry recipes
The hand-curated template bank now ships 500 entries across 14 industries — hospitality (cuisines from bistro to kebab shop), healthcare (specialities from allergy to sleep medicine), wellness, beauty, fitness, real estate, home services, construction trades, pet care, creative services, legal practice areas, finance specialities, tech/marketing agencies, and commerce/retail verticals. Every recipe is a complete starting point: palette, font pair, block layout, and industry-tuned copy.
SEO automation: LocalBusiness, FAQPage, and Article schema
Every generated site now ships a complete schema.org @graph in JSON-LD: WebSite, LocalBusiness (with embedded sub-organizations for multi-location businesses), WebPage, BreadcrumbList, FAQPage when you seed three or more FAQ pairs, and Article schema for blog posts. Plus per-page meta robots, og:url, og:site_name, and a Google Maps embed driven by your address — no Maps API key required.
Visual SEO form: address, hours, FAQs, multi-location
Tick the seo-local or seo-multi-location capability and a full SEO form unfolds inside /builder. Add primary address, geo coordinates, opening hours per day, FAQ pairs, sameAs profile URLs, and up to 24 additional locations — each with their own slug, address, phone, and hours. Phone and address never reach the AI prompt; they flow only into the page metadata and structured data.
Real Cal.com booking embed
Tick the booking-cal capability and paste your Cal.com username — the generated site embeds your real booking calendar via Cal.com's free public iframe, with a placeholder card for visitors with JavaScript disabled. You manage your availability and event types on Cal.com's free plan; NorthLuma pays nothing and adds no recurring API cost.
Real e-commerce: Stripe Payment Links, Gumroad, Payhip, PayPal.me
Tick the commerce-shop capability, paste your products with names, prices, image URLs, and Payment Link URLs from any of the supported providers — the generated site renders a real product grid with working Buy buttons that route visitors directly to your hosted checkout. 11-currency selector, up to 12 products per site, no API keys required on our side.
Real blog: RSS feed, sitemap, Article schema per post
Tick the cms-blog capability and seed three to five posts — the generated site surfaces them in a 5-card feature strip on the homepage and bundles a complete content kit in the API response: RSS 2.0 XML, sitemap.xml entries, Blog index JSON-LD, and per-post Article JSON-LD. Wire /blog/[slug] in your static-site host of choice; the structured data is ready for Google rich results.
Members area: magic-link sign-in and Google OAuth
Tick the auth-members capability and paste your members-portal URL — the generated site renders a sign-in CTA that routes to your customer-managed auth flow (Clerk, Auth0, Supabase, Firebase, WorkOS, Magic, or your self-hosted NextAuth). Plus northluma.com itself now ships /auth/signin with email magic-link (via Resend) and Google OAuth, and a /members page that lists your order history.
In-browser admin editor for live copy edits
Tick the cms-editor capability, set a passkey, and the generated site ships an /admin gate. After authenticating with the passkey (SHA-256 hashed before it leaves your browser), the admin can toggle edit mode, click any hero copy or service description to edit inline, save to localStorage or an optional customer-managed backend, export the updated HTML for re-deployment, or reset back to the original.
Capability picks now bias the AI and unlock matching blocks
The capability picker on /builder and /order now flows through to the generation prompt — every picked capability surfaces its directive to the AI and opens up its matching block library. Tick booking and the booking blocks appear on industries that did not historically include them. Tick commerce and the product grid surfaces beyond e-commerce templates.
Per-block regenerate: rewrite one section at a time
Each block on the post-generation panel of /builder now has a Regenerate button. Click it and only that block is sent back to the AI with the same industry context and the same anti-placeholder rules — the rest of the page stays exactly as you saw it. Costs the same as a single block call, not a full page regeneration.
Quality gate v2: auto-iterates up to three times per generation
Every generation now runs through a per-block + per-page validator. If a generated page scores below 70/100 on the first attempt, the AI is re-run with the previous attempt's failure reasons appended to the prompt. Up to three iterations before falling through to a deterministic template, so a customer never sees a sub-70 page if the gate can lift it.
Persian, Arabic, Hebrew, Urdu render right-to-left out of the box
Generate a site in fa, ar, he, or ur and the output ships with dir=rtl on the html element, mirrored CSS for text alignment, list markers, blockquote borders, and directional arrow icons, plus a preloaded Vazirmatn or IBM Plex Sans Arabic font from Google Fonts. No extra configuration; the language picker drives it.
Multi-language scaffolding: 13-language allowlist
The generation API now accepts a requestedLanguages array spanning en, sv, de, fr, es, pt, it, nl, da, no, fi, fa, and ar. Multi-language fan-out runs one generation per locale and ships hreflang interlinks between the variants for search-engine routing. Live multi-language UI lands once the per-locale AI budget is approved.
Multilingual placeholder-name scrub
Our scrubber that strips AI-generated placeholder names and addresses now runs locale-specific patterns for Swedish (Anna Andersson, Storgatan 1), German (Max Mustermann), French (Jean Dupont, 01 23 45 67 89), Spanish (Juan Perez, Calle Falsa 123), Persian, and Arabic — with replacements in the right script, not switched to English mid-sentence.
Stock-photo pipeline: free Unsplash and Pexels APIs
Tick the design-image-stock capability and paste a search query — the generated site auto-fills image slots with attributed photos from Unsplash or Pexels (both have free API tiers; you supply your own key from each provider's signup page). Photographer credits flow into meta image-credit tags so attribution stays correct.
Every template lands 100/100 on the performance audit
We added a static performance audit harness that walks every template in the bank and scores HTML size, render-blocking scripts, render-blocking stylesheets, image lazy-loading, image alt text, image decoding hints, preconnect hints, and structural essentials (lang, viewport, charset). All 500 entries now pass at 100/100, with an explicit budget that fails loud if a future template regresses.
Image dimensions baked into every template
Every img tag in the bank now ships with intrinsic width and height attributes derived from its CSS class — hero (1600x900), blog card (800x600), product (800x800), team portrait (400x400), testimonial avatar (96x96), gallery thumb (800x600). Browsers reserve the right space on first paint so layouts never reflow as images load.
Soak audit: 500 templates, zero errors, every page passes
We now run a deterministic soak across every template in the bank — 500 hand-curated entries assemble cleanly, score above the quality threshold, and emit zero unfilled slots. Average page weight is 52 KB (well under the 200 KB budget). Re-runs after every change so a regression in any single template fires loud.
2026-05-16
Visual identity refresh: editorial serif + Aurora Arc
New typographic system across the whole marketing site: Source Serif 4 for headlines (the opinionated choice for an AI builder), tightened indigo palette, and an Aurora Arc signature divider above every section. Homepage, pricing, contact, /privacy, /terms, /faq, /security and 15 other pages were rebuilt against the same tokens — no more mismatched gradients or pill-vs-rectangle button drift between routes.
20 industries supported, with widget-aware copy
Industry-aware generation expanded from 14 to 20 industries — full hospitality cluster shipped: Restaurant, Café, Fine Dining, Pizzeria, Bakery, Bar, Food Truck, Catering, Personal Chef. Each carries a tailored H1, 2–3 occasion-led hero variants, a primary CTA matched to its conversion intent (Reserve / Order / Quote / Inquire), and a widget hint (reservation, order-ahead, menu-cart, preorder calendar, live location, quote builder) that the block assembler slots in automatically.
Eight new block components for richer pages
Menu with prices, appointment booking, photo gallery with lightbox, testimonial-with-photo card, validated contact form (honeypot + format checks), 4-column pricing comparison, service-list with prices, and team-grid with bios. All eight render inside any of the 8 themes and respect the per-industry tone.
Preview and download share one source-of-truth registry
Both the /builder preview and the $49 ZIP exporter now read from a single industry registry module. What you see in the browser is byte-for-byte what lands in the download — same hero copy, same CTAs, same industry-specific details across all 20 supported industries.
Per-industry schema.org in every export
JSON-LD now emits the right schema type per industry — Restaurant, CafeOrCoffeeShop, Bakery, BarOrPub, FoodEstablishment, RealEstateAgent, MedicalBusiness, LegalService, ExerciseGym, OnlineStore, NGO, and more. Google understands what kind of business you run from page one, which is exactly what its rich-results documentation asks for.
2026-05-08
Customer source license shipped
Every NorthLuma website ZIP now ships with a perpetual MIT-style customer source license. The full text is also published at /license so visitors can read what they own before they buy.
Public live status page
/status polls the health of the database, payment processor, email delivery, generator, and admin gate every 30 seconds. If something is degraded, you see it instantly.
Blog launched (English + Swedish)
First long-form posts shipped at /blog, with hreflang alternates so Swedish-language readers land on the Swedish version automatically. RSS feed at /feed.xml.
Swedish landing pages
/sweden and /linkoping go live with full Swedish hero copy, GDPR positioning, SEK pricing context, and Swedish-language FAQ. NorthLuma is built in Linköping — that is now reflected on the site.
Industry-aware generation
The /builder generation engine now applies industry-specific writing directives across 14 industries (restaurant, real estate, consulting, photography, fitness, healthcare, legal, marketing, SaaS, e-commerce, non-profit, agency, portfolio, other) so generated copy reads like a real specialist site.
Live ROI calculator on /pricing
Slide your situation (sites × years) and see the math vs. Wix, Webflow, and Squarespace public list prices. The same comparison is also published as a long-form blog post at /blog/49-vs-30-monthly.
Per-page social-share previews
Every major page (homepage, pricing, builder, portfolio, comparisons, sweden, linkoping, status, license, blog) generates its own dynamic OG image so social shares look distinct and on-brand.
Post-purchase email sequence
After buying, customers receive a day-1 deploy nudge, day-3 check-in, day-7 Pro Source upgrade option, and day-14 cross-sell. Idempotent, refund-aware, and fully GDPR-respecting.
Token-bound download links
Order ZIPs require a signed token in the URL with constant-time comparison. Refunded or disputed orders automatically expire access immediately, no manual intervention required.
Dynamic sitemap + hreflang
Sitemap auto-discovers all 38 routes including the Swedish-language pages and blog posts. Hreflang tags wire every localized variant so Google ranks each language correctly.
Marketing site routes lazy-load non-critical scripts
Per-route bundles are split so the homepage and pricing pages serve only the JavaScript they actually need on first paint. Analytics, cookie consent, and the AI Builder client hydrate on-demand instead of blocking the initial render. Result: faster Largest Contentful Paint and smaller homepage JS bundle.
humans.txt + ai.txt + security.txt
Three machine-readable transparency files: humans.txt (who built it), security.txt (where to disclose vulnerabilities), and ai.txt (declarative AI-crawler permissions for the marketing surface vs. the generator).
Want a heads-up on every release?
Email me and I'll send you the weekly summary. No newsletter platform, no spam. You can also subscribe to the RSS feed.