# LocalEnhance Labs > LocalEnhance Labs is the experimental hub of LocalEnhance, an AI-solutions and web-development studio based in Manila, Philippines. It is a public, view-source catalog of 55 live, hand-written experiments in WebGPU, on-device AI, generative UI, voice interfaces, gaussian splatting, and modern CSS — every experiment listed is running in production right now, not a video or a mockup. Every technique here graduates into paid client work at localenhance.com. ## The three AI hubs — the same catalog, organized by business function - Operations Hub: quoting from a photo, an agent-callable booking desk, opportunity scoring, dispatch — 5 systems that run the back office — https://labs.localenhance.com/labs/ops-hub/ - Marketing Hub: sites, brand identity, real AI photography, a hero that breathes, 3D capture — 7 systems that build presence — https://labs.localenhance.com/labs/marketing-hub/ - Conversion Hub: on-device chat, voice, five languages, review replies — 5 systems that turn a visitor into a customer — https://labs.localenhance.com/labs/conversion-hub/ ## Recent experiments (055 = newest) - 055 TWO AXES: a horizontal case-study strip inside a vertical page with one label that has to stay pinned to the left of the strip and the top of the viewport at once, which CSS could never do because an element with hidden overflow on either axis becomes a scroll container on both, so a sticky top resolves against a strip that never scrolls vertically and silently does nothing — Chrome 153 (stable 8 September 2026) adds single-axis scroll containers via `overflow: scroll clip` and the page builds the layout twice, once in CSS with no script and once with the scroll listener, rect read and transform that everybody writes instead, counting its events, layout reads and main-thread milliseconds live; it also documents that the obvious feature detect is a false positive, because `CSS.supports('overflow','scroll clip')` returns true on every Chromium since 90 (the syntax always parsed, what changed is that `clip` is no longer coerced to `hidden`), so the page probes the computed value and the actual scrollTop behaviour instead — https://labs.localenhance.com/labs/two-axes/ - 054 THE GRADE: a hand-written HDR post-processing chain reproducing three library defaults that each ruin a frame while logging nothing — an EffectComposer render target that is 8-bit unless you ask otherwise, so an emissive at 7.2 is written as 1.0 and the highlight is gone before tone mapping runs; a bloom that screen-blends by default, where 1-(1-a)(1-b) with both inputs above 1.0 makes two negative terms whose product is positive and drives the result below zero exactly in the case bloom exists for; and a brightness-contrast curve that maps black to -0.0682 at contrast 0.12, which the sRGB encode then raises to the power 0.41666 — the colour is read back out of a 32-bit float target at four points in the chain and off the 8-bit canvas at the fifth, and the page corrects its own source, because pow() of a negative base is undefined rather than defined-as-NaN and the machine this was built on returns the magnitude, 0.3266, turning pure black into a mid grey wash with no NaN to test for — https://labs.localenhance.com/labs/the-grade/ - 053 PROGRAM COUNT: eight materials lit by a variable number of lights, where the light count is baked into each shader as a compile-time constant exactly as a real renderer bakes it, so moving the slider changes the cache key and recompiles all eight programs mid-scene and the frame-time trace shows the spike — built from the Codrops finding that toggling a light's visible property took one production scene from 140 shader programs to 98, with two corrections measured rather than asserted: compileShader and linkProgram both return in noise because drivers compile lazily and in parallel, and essentially the whole stall is the getProgramParameter(LINK_STATUS) query that blocks waiting for the answer, and the recommended fix of holding the key still is not free, because it means compiling once at the maximum light count and running that loop forever, which the page measures as a real steady-state frame-rate cost at the same visible result — https://labs.localenhance.com/labs/program-count/ - 052 POINTS OF ORDER: one particle array and one projection rendered simultaneously by hand-written WebGL2 and hand-written WebGPU, built to demonstrate three porting failures that produce a successful draw call and no console warning — WGSL has no gl_PointSize equivalent so a point-list primitive is exactly one fragment however large you asked for, neither API can set a line width (and gl.lineWidth is a no-op on nearly every desktop driver too, with ALIASED_LINE_WIDTH_RANGE printed live to prove it on the visitor's own machine), and instance slots that were never written render at the origin because both APIs zero-fill GPU memory for security rather than handing you garbage, so the pile in the middle of the scene is arithmetic and not corruption; the rendered size of a single point is measured by framebuffer readback (readPixels in WebGL, copyTextureToBuffer in WebGPU) behind an explicit button because a readback stalls the pipeline — https://labs.localenhance.com/labs/points-of-order/ - 051 THE BADGE: a live engine readout that feature-detects instead of parsing version numbers, written as the answer to Chrome moving to a two-week release cadence from Chrome 153 on 8 September 2026 — eighteen probes covering WebGPU, the Prompt API, WebMCP, on-device speech and the Chrome 150/152 CSS batches, each printed with the exact expression used, no user agent parsing anywhere, and one probe (SpeechRecognition.available) deliberately held behind a click because on some builds it crashes the renderer rather than throwing, which try/catch cannot save you from — https://labs.localenhance.com/labs/the-badge/ - 050 IDLE HANDS: an interactive WebGL water surface that cancels its render loop outright after two seconds without input rather than throttling it, with ripples stored as three floats each (x, y, and the moment struck) and the damped-oscillator envelope evaluated in the fragment shader so the CPU keeps no per-object state, plus a live meter of simulation steps per second, frames drawn, and frames an always-on loop would have drawn in the same wall time at this display's measured refresh, with resolution seeded from navigator.cpuPerformance and its 0-means-unclassified case handled explicitly — https://labs.localenhance.com/labs/idle-hands/ - 049 THE INVENTORY: two agent tool surfaces over one shop, the first inferred at runtime by walking the page's own forms and action buttons and the second hand-written with three tools where reads are open, writes return pending approvals and destructive operations are simply absent, run side by side against identical errands by one shared deterministic planner so the tool surface is the only variable — the third errand carries a prompt injection inside a customer note, which reaches a refund and a customer deletion through the inferred surface and goes nowhere through the scoped one, a response to Cloudflare shipping zero-code WebMCP injection on 6 August 2026 — https://labs.localenhance.com/labs/inventory/ - 048 CLOSED CIRCUIT: an on-device language model runs a real booking errand by calling the page's own registered tools, closing the loop that drops 007 and 027 each held one half of. It matches a symptom to a service, quotes it, finds a slot against your deadline and books it, validating every argument against the schema and printing the rejections instead of hiding them, with an outbound-request counter wired to a live PerformanceObserver that stays at zero and a deterministic keyword planner that takes over, clearly labelled, on the majority of devices with no local model — https://labs.localenhance.com/labs/closed-circuit/ - 047 PLAYSTATE: the Chrome 152 media-state pseudo-classes (:playing, :paused, :seeking, :buffering, :stalled, :muted, :volume-locked) combined with :has(), so an entire page reacts to a media element with no script mirroring playback into class names. The disc, the bars and the readout are all pure CSS, the audio is an inline data URI so the page makes zero requests, and :buffering and :stalled are wired but honestly marked as not demonstrable here rather than faked with an animation — https://labs.localenhance.com/labs/playstate/ - 046 The Tab: a scale-intuition toy for large AI numbers — 219.5 million tokens from a single heavy month re-expressed as words, Harry Potter septologies, War and Peace, average novels and a twelve-story stack of printed paper, with a toggle that animates the same total between tokens, words, books and dollars and a receipt that itemizes every assumption behind the arithmetic — https://labs.localenhance.com/labs/the-tab/ - 045 EARSHOT: speech recognition that ships zero model weights — Chrome 150's on-device quality tiers (command, dictation, conversation) are negotiated live before the microphone opens, and if the device cannot do it locally the page stops and says so instead of silently streaming your voice to a server — https://labs.localenhance.com/labs/earshot/ - 044 OVERTYPE: kinetic typography with no JavaScript at all — headlines scaled to fill their column to the pixel with CSS text-fit, gradient borders via background-clip:border-area, rounded polygon() clips, and scroll-driven type, with a live @supports readout telling you which features your browser actually has — https://labs.localenhance.com/labs/overtype/ - 043 The Handover: the WebMCP tool registry moved from navigator.modelContext to document.modelContext on 21 July 2026 and Chrome 150 deprecated the old surface — this is the migration shim, a bench where you invoke the registered tools yourself, a live agent-readiness self-audit, and an honest note that no mainstream agent consumes WebMCP tools yet — https://labs.localenhance.com/labs/handover/ - 042 The Swarm: up to one million particles stepped every frame by a real WebGPU compute shader (WGSL) writing position and velocity into storage buffers — they assemble into the word, flee your cursor, and churn like a living cloud, with a transform-feedback WebGL2 fallback at 50,000 and a badge that reports the backend it actually obtained rather than the one it wanted — https://labs.localenhance.com/labs/swarm/ - 041 The Governor: most sites that "run fine on a cheap phone" get there by silently dropping quality — this one shows you the dial, a real adaptive-quality engine that raises and lowers tier, resolution and DPR cap to hold the frame budget, with every number on the telemetry panel measured from actual frame timing and a stress slider so you can watch it fight — https://labs.localenhance.com/labs/governor/ - 040 Hi-Fi: a playable synth where 100% of the sound is generated at runtime by the Web Audio API — oscillators, ADSR envelopes, a lowpass filter, feedback delay and a convolution reverb whose impulse response is synthesized in JavaScript from a decaying noise buffer — zero audio files are ever fetched, the visuals are drawn straight off the analyser, and AUTO improvises in-key on its own — https://labs.localenhance.com/labs/hi-fi/ - 039 The Facet: a cut gem built from real SVG geometry — twelve crown facets and twelve table facets each compute their own angle to your cursor and lighten or dim via honest trigonometry, with a small hue fringe standing in for chromatic dispersion at the highlight — https://labs.localenhance.com/labs/facet/ - 038 The Configurator: a live pricing builder for LocalEnhance's own service tiers — pick a plan, add locations and AI add-ons, watch a stacked visualization and the real monthly total update instantly, using LocalEnhance's actual published pricing, not placeholder numbers — https://labs.localenhance.com/labs/configurator/ - 037 The Reel: a scroll-driven 3D gallery where your scroll position flies a camera along an authored Catmull-Rom spline past floating case-study panels — hand-written scrub, no GSAP or scroll library, and the path swaps 1:1 for a Blender camera export — https://labs.localenhance.com/labs/reel/ - 036 The Swell: 4,096 instanced boxes rippling as concentric waves propagate from your cursor, one InstancedMesh and one draw call in plain WebGL with no WebGPU gate so it runs on every device — https://labs.localenhance.com/labs/swell/ - 035 The Bloom: a real WebGPU compute pass moving 300,000 particles entirely on the GPU, zero JavaScript touching a single particle, written in Three.js's TSL shading language — https://labs.localenhance.com/labs/gpu-bloom/ - 034 Voice, Faster: sentence-streamed text-to-speech that speaks the first sentence while still generating the rest, raced side by side against a naive full-reply baseline with a real measured latency gap — https://labs.localenhance.com/labs/voice-stream/ - 033 The Continuous Page: a four-page site with zero router library, using the native View Transitions API to morph a hero image between real URL states — https://labs.localenhance.com/labs/continuous-page/ - 032 The Readable Render: a real, fully accessible HTML form composited into a canvas element via Chrome's HTML-in-Canvas API — tab into it, type in it, select the text — https://labs.localenhance.com/labs/readable-render/ - 031 The Live Dashboard: ask a business question in plain English, an on-device AI agent returns a live UI (table, bar chart, stat row, or list) instead of a paragraph — the shape of Google's A2UI protocol — https://labs.localenhance.com/labs/live-dashboard/ ## On-device AI (Layer 02) — zero servers, $0 per query - The Concierge: on-device AI chat answering questions about LocalEnhance, private by architecture — https://labs.localenhance.com/labs/ai-concierge/ - The Voice: talk to the website out loud, hear/think/speak entirely on-device — https://labs.localenhance.com/labs/voice/ - The Crew: four AI agents (Scout, Strategist, Copysmith, Inspector) collaborating live on a growth plan — https://labs.localenhance.com/labs/agents/ ## Flagship WebGL/WebGPU work - The Cathedral: 1,000,000 particles in one hand-written vertex shader, folded into a rotating stained-glass rose window — https://labs.localenhance.com/labs/cathedral/ - STORM: 100,000 GPU particles forming a word, fleeing the cursor, detonating on click — https://labs.localenhance.com/labs/storm/ - The Splat Showroom: photoreal 3D gaussian splatting in the browser, captured on a phone — https://labs.localenhance.com/labs/splat-showroom/ ## Client-solution demos (genericized from real LocalEnhance engagements) - The Front Desk: an AI receptionist booking a clinic consult with real slot-filling logic — https://labs.localenhance.com/labs/front-desk/ - The Radar: opportunities scored and ranked live against weighted criteria — https://labs.localenhance.com/labs/radar/ - The Seeing Desk: a photo of laundry, read by on-device vision, turned into a real quote — https://labs.localenhance.com/labs/seeing-desk/ - The Sonar: an AI-search visibility radar across Google, ChatGPT, Gemini, and Perplexity (this is Lifto.ai's core demo) — https://labs.localenhance.com/labs/sonar/ ## Full catalog See https://labs.localenhance.com/llms-full.txt for an expanded description of all 55 experiments, or https://labs.localenhance.com/ for the live, visual index with screenshots. ## About - LocalEnhance (parent studio): https://localenhance.com/ - Tony Hilden, Founder of LocalEnhance and builder of this hub: https://labs.localenhance.com/about/ - Contact: https://localenhance.com/contact - This page (Labs, this document's subject): https://labs.localenhance.com/ - Sitemap: https://labs.localenhance.com/sitemap.xml