Chat widgets are invisible. Put a character on the page.
Most AI receptionist pitches still look like a bubble in the bottom right. Users have been trained to ignore it. A 3D character that waves, talks, and answers hours and pricing is a different object. It is also a website job, which is the work Creative Marketing AI already does.
On August 29, 2026, three.ws posted Inside three.ws on Hugging Face. The code is Apache-2.0 at github.com/nirholas/three.ws. The repo pushed August 29 at 11:12 AM CDT. The product surfaces we care about are three.ws and three.ws/forge.
The Hugging Face article is long. It covers more of their stack than a local business needs. Cut that out of the client conversation. Brief them in one sentence: we are using Forge and an embed, not putting the business on a chain. What remains is a homepage character plus a talking FAQ, piloted on staging, wired to the same facts Tara already uses.
This is not a live homepage drop. It is a one-week staging pilot. If Lighthouse falls over, it stays behind a click. If the FAQ is wrong, it does not ship.
The usable part
Forge turns a text prompt into a textured GLB. The article says you can do that with no account, no API key, and no payment. Photo-to-3D and selfie-to-avatar exist too. The selfie lane takes one to six photos and produces a rigged avatar with ARKit blendshapes. They claim about five seconds on CPU for that job. I have not timed it. The page is live. Time it yourself before you quote a client.
Distribution is a script tag.
```
<script src="https://three.ws/embed.js" defer></script>
<threews-avatar avatar-id="..." hide-chrome pose="idle"></threews-avatar>
```
There is also an <agent-3d> web component. The article lists widget variants we can actually put on a marketing site: turntable, animation gallery, talking agent, hotspot tour. Around that sit a talking chat widget, a walk companion that roams a corner of the page, and a page narrator packaged as @three-ws/page-agent. Components boot lazily on IntersectionObserver, which is the right default if you care about Lighthouse.
The "brain" is a multi-model router with a tool loop and typed memory. Voice and screen are in the same stack. That is how you get from a mascot to a receptionist who can answer a FAQ without opening a new tab.
Engines behind generation are named. Microsoft TRELLIS on a free NVIDIA NIM lane. Hunyuan3D 2.1 and 2, TripoSR, TripoSG-scribble. Quality tiers are Draft, Standard, and High, with polygon and texture budgets attached. Draft is 12,000 polygons and no textures. Standard is 30,000 polygons and 2K textures, the default. High is 200,000 polygons with PBR and HD textures. CMA stays on Draft or Standard until someone measures the download. Do not drop a High-tier mesh on a plumber's WordPress homepage and call it a rebuild.
Sell a homepage character plus a talking FAQ. Hours, service area, pricing range, booking link, "are you open now." Wire it to the same facts the AI receptionist already uses. If the character cannot answer those ten questions cleanly, it is decoration. Decoration is a one-time design fee, not a monthly.
Do not sell the rest of the vendor homepage. Keep Apache-2.0 code, the embed, the talking widget, and a human-approved script. Local businesses came for a character that answers hours, not a lecture on someone else's platform.
Do not treat the public three.ws homepage as the client demo. The homepage is crowded. A client who googles the vendor will see more than Forge. Brief them before they search. You are embedding a character on their staging site. You are not listing their business on someone else's network.
Same facts as Tara. One script, two faces
CMA already sells Tara AI receptionist: missed-call text-back, approved FAQ, lead intake, calendar booking, human handoff. The knowledge base for that product is the source of truth. The homepage character does not get a second brain.
Copy the approved answers into the talking FAQ. Same hours. Same cities. Same emergency vs scheduled split. Same booking URL. Same "we do not bill that insurance" line if that is the business. If Tara says the shop closes at 5 and the character says 6, we shipped a defect.
Name the character if the client wants a mascot. Do not clone a staff member's face unless they signed a model release. A cartoon from the logo or brand colors does not need a release. A selfie-to-avatar of the owner does. Written consent, stored with the rebuild files, before Forge sees the photos.
The phone agent still matters. This is the on-site face. Price it as an add-on next to the receptionist, not instead of it. A character that answers hours on the homepage does not catch the missed call at 8:12 p.m. Tara does. The character's job is to stop the visitor who was about to bounce because they could not see Saturday hours.
A one-week staging pilot
Not production. Not the live homepage. A staging URL on a rebuild already in flight, or a staging clone of a managed site. If we do not have staging, we do not run this pilot on the live domain.
Monday — generate, do not publish
Generate two avatars on Forge.
One from a text prompt that uses the client's brand colors and a simple character description. No celebrity likeness. No staff face. Download the GLB.
One from a staff selfie only if they consented in writing. One to six photos. Download the GLB. If they did not consent, skip this lane. Do not "just try it with a LinkedIn headshot."
Keep both files in the project folder. Do not embed yet. Note which quality tier Forge used. If it defaulted to High, generate again at Standard. We need a file we can actually ship.
Write the ten-question FAQ from real calls or from Tara's approved knowledge base:
- What are your hours?
- Are you open now?
- What cities do you serve?
- Do you offer emergency / same-day service?
- Do you work weekends?
- How do we book?
- What should we do if this is an emergency after hours?
- Do you bill insurance? (or the equivalent for this trade)
- What should a new customer have ready before they call?
- How do we talk to a human?
If Tara already answers these, paste those answers. Do not let the talking agent improvise a price.
Tuesday — embed on staging, measure the page
New staging page, or a staging section behind a query flag. Embed the script plus threews-avatar. Idle pose. Hide chrome. Confirm lazy boot: the canvas should not work until it is near the viewport.
Run Lighthouse against the staging page with the widget present. Run it again with the widget removed, or on a duplicate route that does not load the script. Write down the delta. Performance, not a vibes check. If the widget costs you Core Web Vitals, switch to click-to-load: a still PNG or a short poster frame, a button that says "Ask [name]," then load the script. IntersectionObserver helps. It does not make a huge mesh free.
Watch the network panel. Note the GLB size, the embed.js size, and whether extra origins load. Third-party embed means third-party uptime and third-party privacy. Read what the script loads before it goes on a healthcare or legal client. Host the GLB yourself if you need to. Apache-2.0 lets you.
If the client is in a regulated category, stop and review the script's destinations with whoever owns privacy on the account. The pilot can stay on a marketing rebuild for a trades business while that review happens. It does not go on a clinic because it looked cute on staging.
Wednesday — talking FAQ, then fix the script
Turn on the talking-agent variant. Feed it the ten questions. Sit with a phone and ask them out loud, then type them the way a visitor would.
Record every wrong answer. Wrong hours. Invented prices. A service area that includes a city they do not serve. A booking link that 404s. "I can take your card." Fix the script, not the mesh. The GLB is not the bug.
If the agent cannot stay inside the FAQ, it does not ship. A character that improvises is a liability. Keep the tool loop small: answer from the approved list, point at the booking URL, offer the click-to-call or the Tara path. No open-ended sales pitch.
Record a 30-second clip of a correct hours answer and a correct booking answer. That clip is the internal demo. It is not a public case study. We do not have a published result to cite, and we will not invent one.
Thursday — mobile, and a still fallback
A 3D canvas that looks fine on a 27-inch monitor will eat a phone. Test on an actual handset, not only the device toolbar.
If it fails — jank, huge download, the character covering the tap-to-call button — keep the character on desktop only, or replace it with a still PNG plus the existing voice receptionist. The fallback is a product decision, not a defeat. Most of this client's leads may already be phone calls. The character is optional. The receptionist is not.
Check reduced-motion. If the OS asks for less motion, idle should not keep waving. If the widget cannot respect that, do not autoplay.
Check that the embed does not steal focus from the click-to-call and form. A talking agent that intercepts the first tap on a mobile hero is a lead-loss bug.
Friday — decide, still on staging
Decide with the measurements in front of you.
Ship to a client-facing staging review only if: the talking path answers the ten questions without invention, Lighthouse is intact or the widget is click-to-load, mobile does not cover the call button, and the client has been briefed that this is Forge plus embed, not a chain.
If those fail, keep the GLB in the project folder and write down what would have to change. Do not negotiate the FAQ quality after the homepage is live.
If it passes staging review, price it. Setup fee for avatar plus embed plus FAQ wiring to the Tara knowledge base. Monthly for hosting, script updates, and keeping the FAQ in sync with the receptionist. Put it on the rebuild add-on sheet next to the AI receptionist. Do not put it on the live homepage this week. Staging approval, then a controlled homepage drop on a date the client sees, with a still fallback ready.
Why this is a rebuild conversation
CMA already owns the HTML. A vendor chat bubble is a script the theme fights. A web component CMA places is a layout decision. We can put it in the hero, in a services section, or behind a button that says "Ask Maya." We can match the brand. We can take it out without waiting on a SaaS dashboard.
The article's "one tag on any site" line is the whole implementation. That is why this is worth a Sunday draft with no lab launches. It is not a new model. It is a way to put a body on the agent we already sell.
AR is optional. Every generation can carry a place-in-your-room link, with iOS Quick Look, Android Scene Viewer, or WebXR. Cute for a trade-show booth. Not the first invoice. Do not demo AR in the Friday review unless the client asked. It changes the conversation from "does this answer hours" to "look, it is in my kitchen."
Page narrator and walk companion are later. Talking FAQ first. Narrating the whole homepage is a Core Web Vitals and accessibility problem until we prove otherwise.
Risks I would say out loud
Third-party embed means third-party uptime and third-party privacy. Read the script. Host the GLB if the client needs it on our origin.
Avatars that look like staff need a model release. A cartoon mascot does not. Do not train the selfie lane on an employee who thought they were posing for the about page.
The vendor's public site is broader than the embed. Brief the client. Forge plus embed. Staging first. No live homepage drop until Lighthouse and the FAQ pass.
Do not quote generation speed, polygon counts as a sales promise, or anyone else's traffic. The Hugging Face post states the pipeline. Our job is to measure it on this domain.
Do not let the character take payment, book a job the CRM does not know about, or give medical, legal, or licensing advice. Point at the human path.
The lead
People ignore chat bubbles. They notice a character that answers the question they were about to call you with.
CMA can generate that character, put it on a staging page of a site we already rebuild, and hook it to the same receptionist facts. The Hugging Face post from August 29 is the manual. Forge is the workshop. The script tag is the install. Staging is the rule.
If you want a talking agent on the homepage of the next rebuild, say so at kickoff. We will prototype on staging, check the page weight, keep it in sync with Tara, and only then talk about a monthly.
