From 1352bf68ab0cb65a5238dc114405bbc72e7557fc Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 16 Jun 2026 11:28:59 +0000 Subject: [PATCH 1/6] Add AI safety glasses product & go-to-market brief Frame the opportunity as a certified industrial wearable feeding the existing operations-intelligence pipeline, with an honest competitive read and a hardware-light, software-first roadmap. --- docs/ai-safety-glasses-brief.md | 115 ++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 docs/ai-safety-glasses-brief.md diff --git a/docs/ai-safety-glasses-brief.md b/docs/ai-safety-glasses-brief.md new file mode 100644 index 0000000..6c110d8 --- /dev/null +++ b/docs/ai-safety-glasses-brief.md @@ -0,0 +1,115 @@ +# AI Safety Glasses — Product & Go-to-Market Brief + +**Status:** Draft v0.1 · **Owner:** TBD · **Last updated:** 2026-06-16 + +--- + +## 1. The opening + +A real production manager, reviewing a consumer smart-glasses product, wrote down the +exact gap we should own: + +> "I am currently investigating sourcing safety-rated lenses to integrate these into my +> daily shop-floor workflow. While the frames themselves aren't officially safety-rated…" + +He bought consumer AI glasses to record POV video of processes and feed it to AI tools +that generate written Standard Operating Procedures (SOPs). It worked — except the +hardware isn't rated for an industrial environment, so he can't actually wear it where +the work happens. + +That is the wedge: **impact-rated (ANSI Z87.1 / EN 166) AI glasses purpose-built for the +shop floor, feeding an SOP/operations intelligence pipeline.** + +## 2. Why this fits Allerion specifically + +Allerion is "autonomous intelligence for the built world" — construction, infrastructure, +industrial operations. The glasses are not a side-quest consumer gadget; they are the +**field data-capture layer** for the platform we already describe: + +| Existing capability | What the glasses add | +|---------------------|----------------------| +| Digital Twin (3D BIM, spatial data) | First-person, geolocated site capture as a live data feed | +| Construction ERP (takeoff, BOQ, estimation) | Hands-free field verification, progress capture, as-built vs. as-designed | +| Agent Orchestration | POV video → transcription → structured SOP / inspection record, generated by agents | +| Sovereign AI (self-hosted) | On-prem processing of sensitive site footage — a hard requirement for many industrial buyers | + +The device is the sensor; the moat is the intelligence pipeline behind it that we already build. + +## 3. The honest competitive read + +**"First to market on AI glasses" is not winnable** and shouldn't be the goal. Meta/Ray-Ban, +Brilliant Labs, Even Realities, Xreal and others own the general-purpose consumer category. +Competing there means losing on capital, supply chain, and brand. + +**"First to own certified industrial AI glasses + an operations-intelligence pipeline" is +winnable**, because: + +- **Certification is a moat, not a feature.** Z87.1 / EN 166 require impact, drop, and lens- + retention testing. It is slow, expensive, and unglamorous — exactly why fashion-first + consumer players avoid it. Once we're through, it protects us. +- **The buyer is a budget holder, not a hobbyist.** A plant/site manager expensing + documentation tooling for a crew is a B2B sale with margin and repeat orders. +- **Demand is already validated** in the field, not hypothesized. + +### Real risks (name them) +- Hardware is capital-intensive and slow. +- Certification lead times run months. +- A consumer incumbent could ship a "rugged" SKU faster than we'd like — so our speed game + is **cert + channel + software**, not the device itself. +- Privacy/consent: always-on cameras in workplaces trigger labor, union, and legal concerns. + This must be designed in (recording indicators, on-prem storage, retention policy), not bolted on. + +## 4. Strategy: don't build silicon, own the stack that matters + +Speed-to-market here = first to **certify + sell into industrial channels**, not first to +design optics. + +1. **White-label / ODM the hardware.** Camera-glasses reference designs exist out of + Shenzhen. Our IP is the certification, the SOP pipeline, and the channel — not the camera module. +2. **Start Z87.1 / EN 166 certification first** (longest lead time). Engage a test lab early + (NTS, SGS, Intertek, or equivalent). +3. **Build the software loop** — the compounding asset: POV capture → transcription → + structured SOP / inspection / progress record, wired into the existing Allerion agents. +4. **Pre-sell one design-partner site before tooling anything.** The reviewer is the ICP. + Find five of them; build to their requirements. + +## 5. Ideal Customer Profile (v0) + +- Manufacturing / production managers documenting SOPs and training materials. +- Construction & infrastructure site supervisors (as-built capture, inspections, progress). +- Field service / maintenance teams needing hands-free, remote-expert workflows. +- Common thread: regulated or hazard environments where eye protection is **mandatory**, so a + certified device is the only device they're allowed to wear. + +## 6. The software pipeline (what we can build now, in this repo's world) + +``` +[Glasses POV capture] → [Secure ingest / on-prem] → [Transcription + vision] + → [Structured extraction: steps, materials, hazards, timestamps] + → [SOP / inspection / progress document generation (agents)] + → [Digital Twin + ERP write-back] +``` + +This is squarely buildable today with current models and is the highest-leverage place to +start, independent of hardware timelines. + +## 7. Proposed first milestones + +| # | Milestone | Why first | +|---|-----------|-----------| +| 1 | Software pipeline prototype (video → structured SOP) using off-the-shelf footage | Proves the value with zero hardware dependency | +| 2 | Certification scoping call with a test lab | Longest lead time — start the clock | +| 3 | 3–5 design-partner LOIs from ICP sites | Validates demand, shapes requirements, de-risks tooling | +| 4 | ODM hardware shortlist + sample units | Cheapest path to a wearable demo | +| 5 | Privacy/consent + data-governance design | Gating requirement for industrial deployment | + +## 8. Open questions for the founder + +- Standalone product line, or an accessory/front-end to the existing Allerion platform? (Recommend: the latter.) +- Geography for first certification — US (Z87.1) or EU (EN 166)? +- Build the software pipeline against our own agents now, before any hardware commitment? + +--- + +*This is a strategy draft, not a commitment. Numbers and vendor names are illustrative and +need validation before any spend.* From 26782f8e0c659f372f1d9372ff0c8ebcebe74faa Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 16 Jun 2026 11:31:21 +0000 Subject: [PATCH 2/6] Add hardware sourcing section: existing certified frames + camera caveat Document the two market camps (camera+rugged vs. discreet-but-camera-free), identify the open gap, and flag that adding a camera re-triggers Z87.1 certification of the assembled unit. --- docs/ai-safety-glasses-brief.md | 55 ++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/docs/ai-safety-glasses-brief.md b/docs/ai-safety-glasses-brief.md index 6c110d8..64c0616 100644 --- a/docs/ai-safety-glasses-brief.md +++ b/docs/ai-safety-glasses-brief.md @@ -103,7 +103,60 @@ start, independent of hardware timelines. | 4 | ODM hardware shortlist + sample units | Cheapest path to a wearable demo | | 5 | Privacy/consent + data-governance design | Gating requirement for industrial deployment | -## 8. Open questions for the founder +## 8. Hardware sourcing — what already exists (don't build from scratch) + +The instinct "find safety glasses that are already designed and tested, then just add the +camera" is correct in spirit. The market splits into two camps, and the gap is the space +between them: + +### Camp A — camera + safety rating already exists (but bulky / industrial-looking) +| Product | Certification | Camera | Form factor | +|---------|--------------|--------|-------------| +| **Vuzix Blade 2** | ANSI Z87.1 | Autofocus HD camera | Chunky AR glasses | +| **RealWear Navigator Z1** | Rugged / worn with PPE | HD camera | Headset-style HMD | +| **Iristick G2** | Certified PPE, ATEX (explosive atmospheres) | Camera | Industrial, dual-screen | + +**Implication:** "first to market with a camera safety wearable" is already gone for the +rugged HMD form factor. We don't beat these on industrial AR. + +### Camp B — discreet, all-day, certified safety glasses (but camera deliberately removed) +| Product | Certification | Camera | Why no camera | +|---------|--------------|--------|---------------| +| **Lucyd Armor** | ANSI Z87.1+, CSA Z94.3, EN 16639:2018 | **None — by choice** | Privacy concerns; launched camera-free at CES 2026 | + +Lucyd Armor is exactly the discreet, glasses-like, 8-hour, certified frame the original +reviewer wanted — audio + AI (ChatGPT) + photochromic lenses — but they **intentionally +omit the camera** for workplace-privacy reasons. + +### The actual open gap +**Discreet, all-day-wearable, Z87.1-certified glasses WITH a camera, feeding an AI +SOP/operations pipeline.** Nobody combines all three: the camera players are bulky, and the +discreet-safety players dropped the camera on purpose. + +### ⚠️ The catch with "just add the camera" +ANSI Z87.1 certifies the **complete assembled product as tested**. Bolting an aftermarket +camera onto certified frames generally **voids the certification** — it changes mass, +balance, and structural integrity, and the unit was never impact-tested in that +configuration. So "add a camera" does not dodge certification; it **relocates** it: you +re-certify the integrated camera-glasses unit. + +Good news: starting from a proven certified frame (validated lens geometry and materials) +substantially de-risks and shortens re-certification versus designing optics from zero. + +### Recommended sourcing paths (fastest → slowest) +1. **Partner / license with a discreet Z87.1 frame maker** (e.g. Lucyd/Innovative Eyewear, + or a frame ODM such as Bollé Safety, Uvex, Oakley SI) → integrate a camera module → + re-certify the assembled unit. Closes the exact gap above. +2. **License an existing camera platform** (Vuzix licenses its tech; Iristick for + hazardous/ATEX environments) when industrial-grade or explosive-atmosphere rating matters + more than discreet styling. +3. **Full ODM camera-glasses from Shenzhen** + first-time Z87.1/EN 166 certification — most + control, slowest, highest cost. Only if 1 and 2 can't deliver the form factor. + +The privacy tension Lucyd designed around (always-on cameras in workplaces) is real and must +be engineered in: hardware recording indicator, on-prem/sovereign storage, retention policy. + +## 9. Open questions for the founder - Standalone product line, or an accessory/front-end to the existing Allerion platform? (Recommend: the latter.) - Geography for first certification — US (Z87.1) or EU (EN 166)? From 84d727f1a35e6c72069e8eb93cf838332b8387c2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 16 Jun 2026 11:33:57 +0000 Subject: [PATCH 3/6] Pivot strategy to buy-and-rebrand, software-led, with Crew Voice as Phase 1 hero Replace the build/manufacture plan with white-labeling an already-certified camera-free frame (Lucyd Armor class), branding it Allerion, and leading with ALLERION.ai + Crew Voice. Add a Crew Voice section and realign milestones. --- docs/ai-safety-glasses-brief.md | 81 +++++++++++++++++++++++++-------- 1 file changed, 63 insertions(+), 18 deletions(-) diff --git a/docs/ai-safety-glasses-brief.md b/docs/ai-safety-glasses-brief.md index 64c0616..93e5077 100644 --- a/docs/ai-safety-glasses-brief.md +++ b/docs/ai-safety-glasses-brief.md @@ -59,19 +59,35 @@ winnable**, because: - Privacy/consent: always-on cameras in workplaces trigger labor, union, and legal concerns. This must be designed in (recording indicators, on-prem storage, retention policy), not bolted on. -## 4. Strategy: don't build silicon, own the stack that matters - -Speed-to-market here = first to **certify + sell into industrial channels**, not first to -design optics. - -1. **White-label / ODM the hardware.** Camera-glasses reference designs exist out of - Shenzhen. Our IP is the certification, the SOP pipeline, and the channel — not the camera module. -2. **Start Z87.1 / EN 166 certification first** (longest lead time). Engage a test lab early - (NTS, SGS, Intertek, or equivalent). -3. **Build the software loop** — the compounding asset: POV capture → transcription → - structured SOP / inspection / progress record, wired into the existing Allerion agents. -4. **Pre-sell one design-partner site before tooling anything.** The reviewer is the ICP. - Find five of them; build to their requirements. +## 4. Strategy: buy the hardware, own the intelligence (software-led) + +**We do not manufacture anything.** We white-label glasses that are *already certified and +on the market*, rebrand them **Allerion**, and put 100% of the value in **ALLERION.ai** and +the **crew voice** layer. This is consistent with the company line: *we don't sell software, +we deploy intelligence* — here, the hardware is just the carrier. + +Why this beats building: +- **Zero certification lead time** if we pick a camera-free base (see below) — no re-cert, no + factory, no tooling, no months-long test cycle. +- **Capital-light.** Reseller/white-label agreement + software, not a hardware company. +- **Sidesteps the privacy fight** that made Lucyd drop the camera — voice-first needs no camera. + +### Phase 1 — voice-first, ship now (recommended base: Lucyd Armor) +Rebrand a discreet, already-certified, **camera-free** audio frame (Lucyd Armor: ANSI +Z87.1+ / CSA Z94.3 / EN 166, mic + open-ear audio + walkie-talkie VOIP, 8-hr battery) as the +**Allerion** glasses. Deploy ALLERION.ai + crew voice on it. No re-certification, no privacy +blocker, fastest path to a deployed product. + +### Phase 2 — add a camera SKU for POV → SOP capture +For sites that want video documentation and can manage consent, license a camera-equipped +certified device (Vuzix Blade 2 class / RealWear for rugged, Iristick for ATEX). The video → +SOP pipeline (§6) plugs into the same ALLERION.ai backend. + +### Open commercial questions to close +- White-label/OEM terms with the chosen vendor (Lucyd/Innovative Eyewear or a frame ODM). +- Branding under a reseller agreement vs. becoming the named "manufacturer" — the latter can + shift certification responsibility onto Allerion, so structure the contract deliberately. +- Volume commitments and per-unit economics. ## 5. Ideal Customer Profile (v0) @@ -93,15 +109,44 @@ design optics. This is squarely buildable today with current models and is the highest-leverage place to start, independent of hardware timelines. +## 6a. Crew Voice — the voice-first layer (Phase 1 hero feature) + +> *Founder's concept — definition below is a working interpretation; needs confirmation.* + +**Crew Voice** is the always-available, hands-free voice layer that runs on the Allerion +glasses and connects every crew member to each other and to ALLERION.ai. It's the feature +that works on a camera-free frame, so it ships in Phase 1. + +Working interpretation of the capability set: +- **Crew-to-crew comms** — push-to-talk / VOIP channels across a site (the base hardware + already has walkie-talkie VOIP), but routed through ALLERION.ai so it's more than a radio. +- **Hands-free commands** — "Allerion, log a material request for rebar at gridline 4", + "start an inspection", "what's the torque spec for this joint?" — voice in, answer or action out. +- **Voice-logged field notes** → automatically transcribed, structured, and written back to + SOPs / ERP / the digital twin. Captures the "pulled in four directions" reality the original + reviewer described, with no hands and no phone. +- **Agent-mediated coordination** — ALLERION.ai sits on the channel: summarizing, routing + requests, surfacing the right spec or drawing, escalating to a remote expert. +- **Sovereign/on-prem voice** — speech processing on private infrastructure for sites that + can't send audio to the cloud (ties to the existing Sovereign AI capability). + +Why it's the right Phase 1 hero: it delivers daily value with **no camera, no re-cert, no +privacy blocker**, and it's the natural front-end to the agent stack Allerion already builds. + +**Questions to pin down crew voice (need founder input):** +- Is it primarily **crew↔crew comms**, **crew↔AI assistant**, or both equally? +- Real-time coordination, or async capture-and-structure, or both? +- Does it need to work offline / fully on-prem from day one? + ## 7. Proposed first milestones | # | Milestone | Why first | |---|-----------|-----------| -| 1 | Software pipeline prototype (video → structured SOP) using off-the-shelf footage | Proves the value with zero hardware dependency | -| 2 | Certification scoping call with a test lab | Longest lead time — start the clock | -| 3 | 3–5 design-partner LOIs from ICP sites | Validates demand, shapes requirements, de-risks tooling | -| 4 | ODM hardware shortlist + sample units | Cheapest path to a wearable demo | -| 5 | Privacy/consent + data-governance design | Gating requirement for industrial deployment | +| 1 | **Crew Voice prototype** on a stock camera-free certified frame (Lucyd Armor or sample unit) → ALLERION.ai | Proves the Phase 1 hero with zero manufacturing / cert dependency | +| 2 | **Software pipeline** (voice/video → structured SOP) wired to the existing agents | The compounding asset; works against off-the-shelf footage too | +| 3 | **White-label / OEM terms** with the chosen frame vendor | Unlocks shipping rebranded "Allerion" units | +| 4 | 3–5 design-partner LOIs from ICP sites | Validates demand and shapes the rollout | +| 5 | Privacy/consent + (for Phase 2 camera SKU) re-certification scoping | Gating requirements before camera deployment | ## 8. Hardware sourcing — what already exists (don't build from scratch) From eb811edc0f0c90a3ced13e7b4da1d64aee7f0f94 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 16 Jun 2026 11:39:19 +0000 Subject: [PATCH 4/6] Add Allerion glasses landing / design-partner page Self-contained static page matching the org brand: hero, two-phase product (voice-first now, camera SKU later), certification strip, and a design-partner email capture form. Crew Voice section is placeholder copy pending the real product definition. --- landing/index.html | 314 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 314 insertions(+) create mode 100644 landing/index.html diff --git a/landing/index.html b/landing/index.html new file mode 100644 index 0000000..d152f6a --- /dev/null +++ b/landing/index.html @@ -0,0 +1,314 @@ + + + + + +Allerion Glasses — Autonomous intelligence for the built world + + + + + +
+
+ +

The job site can talk now.

+

+ Certified safety glasses, rebranded Allerion, running ALLERION.ai and + Crew Voice — hands-free intelligence for the shop floor and the field. + We don't make hardware. We deploy intelligence onto it. +

+ Become a design partner + How it works +
+
+ +
+
+
The idea
+

Eye protection your crew already has to wear — now it thinks.

+

+ Frontline crews already wear safety glasses by law. We start there: a discreet, + already-certified frame, rebranded Allerion, with ALLERION.ai and Crew Voice running + on it. No new gadget to justify, no certification to wait on — intelligence on the + protection they're already required to wear. +

+
+
+ Hands-free +

Capture without stopping

+

Log material requests, notes, and process changes by voice while your hands stay on the work.

+
+
+ Crew Voice +

Everyone on one channel

+

Your crew, connected — with ALLERION.ai on the line, coordinating and capturing.

+
+
+ Operations intelligence +

Talk → structured record

+

Voice and field capture become SOPs, inspections, and progress records, written back automatically.

+
+
+
+
+ +
+
+
Crew Voice
+

The voice layer for the built world.

+

+ Crew Voice turns the glasses into a coordination layer for the whole crew — hands-free, + eyes-up, always on. Talk to your team and to ALLERION.ai on the same channel, and + watch the conversation turn into documentation on its own. +

+
+ PLACEHOLDER COPY — REPLACE
+ This describes Crew Voice as a best guess. You flagged that your real concept is + different — drop your own one-paragraph definition here and this section gets rewritten + around it. +
+
+
+ +
+
+
How we ship
+

Buy the hardware. Own the intelligence.

+
+ 01 +
+

Phase 1 — Voice-first, available now

+

White-label a discreet, already-certified, camera-free safety frame and brand it + Allerion. Deploy ALLERION.ai + Crew Voice. No camera means no privacy blocker and no + re-certification — it ships.

+
+
+
+ 02 +
+

Phase 2 — Camera SKU for documentation

+

For sites that want POV video → auto-generated SOPs, an optional camera-equipped + certified model, with consent and on-prem storage built in. Same ALLERION.ai backend.

+
+
+
+ ANSI Z87.1 + CSA Z94.3 + EN 166 + SOVEREIGN / ON-PREM +
+
+
+ +
+
+
Early access
+

Put Allerion on your crew first.

+

+ We're onboarding a small group of design-partner sites. Tell us where you operate and + we'll be in touch. +

+ +
+ + +
+ +

B2B / design-partner program. No spam.

+
+
+ +
+ +
Allerion Systems — Autonomous intelligence for the built world.
+
"We don't sell software. We deploy intelligence."
+
+ + + From 5cf57a0c28273069df0596e44107d097acea82dd Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 16 Jun 2026 11:59:50 +0000 Subject: [PATCH 5/6] Replace Crew Voice placeholder with real CrewVoice product CrewVoice is the construction voice-cloning translation agent (boss's voice, crew's language, two-way). Update brief 6a with the real agent architecture, pricing, and the glasses-as-delivery-layer connection; rewrite landing hero and sections to match. --- docs/ai-safety-glasses-brief.md | 65 +++++++++++++++++++-------------- landing/index.html | 59 ++++++++++++++++++------------ 2 files changed, 73 insertions(+), 51 deletions(-) diff --git a/docs/ai-safety-glasses-brief.md b/docs/ai-safety-glasses-brief.md index 93e5077..b84dda0 100644 --- a/docs/ai-safety-glasses-brief.md +++ b/docs/ai-safety-glasses-brief.md @@ -109,34 +109,43 @@ SOP pipeline (§6) plugs into the same ALLERION.ai backend. This is squarely buildable today with current models and is the highest-leverage place to start, independent of hardware timelines. -## 6a. Crew Voice — the voice-first layer (Phase 1 hero feature) - -> *Founder's concept — definition below is a working interpretation; needs confirmation.* - -**Crew Voice** is the always-available, hands-free voice layer that runs on the Allerion -glasses and connects every crew member to each other and to ALLERION.ai. It's the feature -that works on a camera-free frame, so it ships in Phase 1. - -Working interpretation of the capability set: -- **Crew-to-crew comms** — push-to-talk / VOIP channels across a site (the base hardware - already has walkie-talkie VOIP), but routed through ALLERION.ai so it's more than a radio. -- **Hands-free commands** — "Allerion, log a material request for rebar at gridline 4", - "start an inspection", "what's the torque spec for this joint?" — voice in, answer or action out. -- **Voice-logged field notes** → automatically transcribed, structured, and written back to - SOPs / ERP / the digital twin. Captures the "pulled in four directions" reality the original - reviewer described, with no hands and no phone. -- **Agent-mediated coordination** — ALLERION.ai sits on the channel: summarizing, routing - requests, surfacing the right spec or drawing, escalating to a remote expert. -- **Sovereign/on-prem voice** — speech processing on private infrastructure for sites that - can't send audio to the cloud (ties to the existing Sovereign AI capability). - -Why it's the right Phase 1 hero: it delivers daily value with **no camera, no re-cert, no -privacy blocker**, and it's the natural front-end to the agent stack Allerion already builds. - -**Questions to pin down crew voice (need founder input):** -- Is it primarily **crew↔crew comms**, **crew↔AI assistant**, or both equally? -- Real-time coordination, or async capture-and-structure, or both? -- Does it need to work offline / fully on-prem from day one? +## 6a. CrewVoice — the Phase 1 hero (already built at allerion.io) + +**CrewVoice is the vertical AI agent for construction crews.** It solves the English ↔ +Spanish language barrier that costs the industry billions in rework, injuries, and lost +productivity — not with text translation, but by delivering a contractor's dispatches in the +crew's language, **spoken in the contractor's own cloned voice.** + +The moat is precisely that voice cloning: when a crew member hears *their boss's actual +voice* — in Spanish — telling them what to do, that's trust and authority no text-translation +app (MindForge, Projul, Google Translate) or expensive human interpreter (Boostlingo) can +replicate. It needs no hardware (works on any phone via WhatsApp/SMS), and it understands the +trade ("TPO," "flashing," "drip edge," "underlayment"). + +### Agent architecture (chained, single-purpose agents) +1. **Voice Cloner** — 30-sec sample → a voice model that speaks any language as that person. +2. **Dispatcher** — contractor speaks English → delivered as a Spanish voice note in their voice. +3. **Translator (two-way)** — crew replies in Spanish → contractor receives English. +4. **Safety Agent** (premium) — daily briefing pushed to each crew member at 6 AM, in their + language, in the superintendent's voice. +5. **Documentation Agent** (enterprise) — end-of-day record of what was communicated, to whom, when. + +### Pricing (SaaS, already modeled) +| Tier | Price/mo | Includes | +|------|----------|----------| +| Starter | $149 | 1 voice clone, 100 dispatches, EN→ES | +| Pro | $299 | 3 clones, unlimited dispatches, two-way, 5 languages | +| Enterprise | $499 | Unlimited clones, safety briefings, documentation, API | + +### Why the glasses matter to CrewVoice +CrewVoice already works on a phone — but a phone means a crew member stops, pulls it out, and +looks down. **On the Allerion glasses, CrewVoice becomes hands-free and eyes-up:** the +contractor speaks a dispatch and the crew hears it, in their language, in their own ears, +while their hands stay on the work and their eyes stay on the hazard. The glasses are the +premium delivery layer for a product that already exists — not a new product to invent. + +This is the connective tissue: **CrewVoice (software, built) × Allerion glasses (certified +hardware, white-labeled) = a hands-free bilingual job site.** ## 7. Proposed first milestones diff --git a/landing/index.html b/landing/index.html index d152f6a..d3ea9a3 100644 --- a/landing/index.html +++ b/landing/index.html @@ -197,11 +197,11 @@
-

The job site can talk now.

+

Your voice. Their language. Hands-free.

- Certified safety glasses, rebranded Allerion, running ALLERION.ai and - Crew Voice — hands-free intelligence for the shop floor and the field. - We don't make hardware. We deploy intelligence onto it. + Certified safety glasses, rebranded Allerion, running CrewVoice — the + vertical AI agent for construction crews. Speak a dispatch in English; your crew hears it + in Spanish, in your voice, in their own ears. No phone. No stopping work.

Become a design partner How it works @@ -220,19 +220,19 @@

Eye protection your crew already has to wear — now it thinks.

- Hands-free -

Capture without stopping

-

Log material requests, notes, and process changes by voice while your hands stay on the work.

+ Your cloned voice +

Delivered as you

+

A 30-second sample, and CrewVoice speaks any language in your own voice. Your crew hears their boss — not a robot.

- Crew Voice -

Everyone on one channel

-

Your crew, connected — with ALLERION.ai on the line, coordinating and capturing.

+ Two-way +

They answer, you understand

+

Crew replies in Spanish; you get it in English. The language barrier on the job site, gone.

- Operations intelligence -

Talk → structured record

-

Voice and field capture become SOPs, inspections, and progress records, written back automatically.

+ Built for construction +

Speaks the trade

+

TPO, flashing, drip edge, underlayment — CrewVoice knows the terms generic translators butcher.

@@ -240,18 +240,31 @@

Talk → structured record

-
Crew Voice
-

The voice layer for the built world.

+
CrewVoice
+

The vertical AI agent for construction crews.

- Crew Voice turns the glasses into a coordination layer for the whole crew — hands-free, - eyes-up, always on. Talk to your team and to ALLERION.ai on the same channel, and - watch the conversation turn into documentation on its own. + The language barrier between English-speaking contractors and Spanish-speaking crews + costs the industry billions in rework, injuries, and lost time. CrewVoice closes it — + not with text translation, but by delivering your dispatches in your crew's language, + spoken in your own cloned voice. On the Allerion glasses, it's hands-free and eyes-up: + the job site can finally hear you, in any language, without anyone reaching for a phone.

-
- PLACEHOLDER COPY — REPLACE
- This describes Crew Voice as a best guess. You flagged that your real concept is - different — drop your own one-paragraph definition here and this section gets rewritten - around it. +
+
+ Dispatch +

Speak once, sent in their language

+

"Start the south elevation, underlayment down before noon" → delivered as a voice note in Spanish, in your voice.

+
+
+ Safety briefing +

6 AM, every morning, automatically

+

Each crew member gets the daily safety briefing in their language, in the superintendent's voice.

+
+
+ Documentation +

End-of-day record

+

Every communication, transcribed and summarized — what was said, to whom, and when.

+
From fecfd5d561a371cd3b1a03329b7092e07b911a73 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 16 Jun 2026 12:09:55 +0000 Subject: [PATCH 6/6] Build CrewVoice MVP: web app, Twilio delivery, and MCP server Construction voice-cloning translation agent. Shared core (lib.js) does construction-aware translation (Claude Opus 4.8) + ElevenLabs clone/TTS/STT. Web server adds text/voicemail delivery via Twilio; an MCP server exposes clone/translate/send tools for ChatGPT and Claude. Landing page updated to the early-access CrewVoice copy (voicemail, text, MCP; $149/mo). --- crewvoice/.env.example | 24 +++ crewvoice/.gitignore | 4 + crewvoice/README.md | 97 +++++++++++ crewvoice/lib.js | 139 ++++++++++++++++ crewvoice/mcp-server.js | 83 ++++++++++ crewvoice/package.json | 25 +++ crewvoice/public/index.html | 231 ++++++++++++++++++++++++++ crewvoice/server.js | 131 +++++++++++++++ landing/index.html | 321 +++++++----------------------------- 9 files changed, 794 insertions(+), 261 deletions(-) create mode 100644 crewvoice/.env.example create mode 100644 crewvoice/.gitignore create mode 100644 crewvoice/README.md create mode 100644 crewvoice/lib.js create mode 100644 crewvoice/mcp-server.js create mode 100644 crewvoice/package.json create mode 100644 crewvoice/public/index.html create mode 100644 crewvoice/server.js diff --git a/crewvoice/.env.example b/crewvoice/.env.example new file mode 100644 index 0000000..7d61ca2 --- /dev/null +++ b/crewvoice/.env.example @@ -0,0 +1,24 @@ +# CrewVoice configuration — copy to .env and fill in. + +# Anthropic API key — powers construction-aware translation (Claude Opus 4.8). +# Get one at https://console.anthropic.com/ +ANTHROPIC_API_KEY=sk-ant-... + +# ElevenLabs API key — powers voice cloning, text-to-speech, and speech-to-text. +# Get one at https://elevenlabs.io/ +ELEVENLABS_API_KEY=... + +# Port the local server listens on. +PORT=3000 + +# --- Delivery (Twilio) — optional; needed to send texts/voicemails to phones --- +# Get these from https://console.twilio.com/ +TWILIO_ACCOUNT_SID= +TWILIO_AUTH_TOKEN= +# The Twilio phone number messages are sent from, in E.164 format. +TWILIO_FROM_NUMBER=+1... + +# Public base URL of THIS server, reachable by Twilio, so it can fetch generated +# audio for voicemail playback (e.g. an ngrok URL in dev, or your deployed domain). +# Only needed for the "voicemail" channel. +PUBLIC_BASE_URL=https://your-domain.example.com diff --git a/crewvoice/.gitignore b/crewvoice/.gitignore new file mode 100644 index 0000000..daf1dd0 --- /dev/null +++ b/crewvoice/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +.env +*.log +.DS_Store diff --git a/crewvoice/README.md b/crewvoice/README.md new file mode 100644 index 0000000..25c5152 --- /dev/null +++ b/crewvoice/README.md @@ -0,0 +1,97 @@ +# CrewVoice + +**Your voice. Every worker's language.** + +A contractor records their voice once. Then they type a message in English, pick a +crew member or a customer, and CrewVoice delivers it as a **voicemail or text in the +recipient's language — in the contractor's own cloned voice.** + +Built for construction: dispatch a job to a Spanish-speaking crew, or follow up on a +bid with a homeowner who doesn't speak English — all in the voice they already know. +It also ships as an **MCP server**, so it plugs straight into the ChatGPT or Claude +you already use. + +> CrewVoice by Allerion · $149/mo · early access. + +--- + +## How it works + +| Agent | What it does | Tech | +|-------|-------------|------| +| **Voice Cloner** | 30-second sample → a voice model that speaks any language as that person | ElevenLabs | +| **Translator** | English → the recipient's language, preserving trade terms (TPO, flashing, drip edge) | Claude Opus 4.8 | +| **Dispatcher** | Speaks the translation in the cloned voice; delivers as voicemail or text | ElevenLabs TTS + Twilio | +| **Two-way** | Crew/customer replies in their language → contractor gets English | ElevenLabs STT + Claude | + +## Setup + +```bash +cd crewvoice +npm install +cp .env.example .env # fill in ANTHROPIC_API_KEY and ELEVENLABS_API_KEY (Twilio optional) +npm start # http://localhost:3000 +``` + +- **`ANTHROPIC_API_KEY`** and **`ELEVENLABS_API_KEY`** are required for the core demo + (clone → translate → speak). +- **Twilio** vars are optional — needed only to deliver texts/voicemails to real phones. +- For the **voicemail** channel, Twilio must be able to reach this server, so set + `PUBLIC_BASE_URL` (an ngrok URL in dev, or your deployed domain). + +## Web demo + +Open `http://localhost:3000`: + +1. **Clone your voice** — record ~30s. +2. **Send a dispatch** — type in English, pick a language, hear it back in *your* voice. +3. **Two-way** — record a reply in any language, get it back in English. + +## HTTP API + +| Endpoint | Body | Returns | +|----------|------|---------| +| `POST /api/clone` | multipart `sample` (audio) | `{ voiceId }` | +| `POST /api/dispatch` | `{ text, targetLanguage, voiceId }` | `{ translation, audio (base64 mp3) }` | +| `POST /api/send` | `{ text, targetLanguage, to, channel: "text"\|"voicemail", voiceId? }` | `{ translation, sid }` | +| `POST /api/transcribe` | multipart `reply` (audio) | `{ original, languageCode, english }` | + +## Use it inside Claude / ChatGPT (MCP) + +CrewVoice ships as an MCP server (`mcp-server.js`) exposing three tools: +`clone_voice`, `translate_dispatch`, and `send_text_dispatch`. + +Register it with any MCP client. For **Claude Code**: + +```bash +claude mcp add crewvoice -- node /absolute/path/to/crewvoice/mcp-server.js +``` + +Or add it to a client's MCP config manually: + +```json +{ + "mcpServers": { + "crewvoice": { + "command": "node", + "args": ["/absolute/path/to/crewvoice/mcp-server.js"], + "env": { + "ANTHROPIC_API_KEY": "sk-ant-...", + "ELEVENLABS_API_KEY": "...", + "TWILIO_ACCOUNT_SID": "...", + "TWILIO_AUTH_TOKEN": "...", + "TWILIO_FROM_NUMBER": "+1..." + } + } + } +} +``` + +Then, from chat: *"Send the crew this in Spanish: start the south elevation, underlayment +down before noon"* — and CrewVoice translates and texts it. + +## Notes + +- This is an early-access MVP. Voice cloning uses ElevenLabs instant cloning; for + production, get consent from anyone whose voice you clone. +- Numbers and vendor choices are illustrative — validate before committing spend. diff --git a/crewvoice/lib.js b/crewvoice/lib.js new file mode 100644 index 0000000..14174af --- /dev/null +++ b/crewvoice/lib.js @@ -0,0 +1,139 @@ +// CrewVoice core — shared by the web server (server.js) and the MCP server (mcp-server.js). +// +// Capabilities: +// translate(text, lang) — construction-aware translation (Claude Opus 4.8) +// cloneVoice(name, buffer, mime) — ElevenLabs instant voice clone -> voice_id +// speak(voiceId, text) — ElevenLabs TTS in the cloned voice -> mp3 Buffer +// transcribe(buffer, mime) — ElevenLabs speech-to-text -> { text, language_code } +// sendText(to, body) — Twilio SMS delivery +// placeVoicemailCall(to, audioUrl)— Twilio call that plays a hosted mp3 (voicemail in your voice) + +import Anthropic from "@anthropic-ai/sdk"; + +const ELEVENLABS = "https://api.elevenlabs.io/v1"; +const TTS_MODEL = "eleven_multilingual_v2"; // multilingual so the cloned voice speaks the target language + +let _anthropic; +function anthropic() { + if (!_anthropic) _anthropic = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY }); + return _anthropic; +} + +function elevenKey() { + const key = process.env.ELEVENLABS_API_KEY; + if (!key) throw new Error("ELEVENLABS_API_KEY is not set."); + return key; +} + +// --- Construction-aware translation ----------------------------------------- + +const TRANSLATE_SYSTEM = `You are a translator for construction and roofing crews. You translate a contractor's spoken dispatch from English into the target language so a field crew or a customer can act on it immediately. + +Rules: +- Output ONLY the translation. No preamble, no quotes, no notes, no alternatives. +- Preserve construction and roofing terminology precisely: TPO, EPDM, flashing, drip edge, underlayment, fascia, soffit, valley, ridge, penetration, elevation, square, course, etc. Use the term a working crew in the target language actually uses on site, not a literal dictionary gloss. +- Keep the tone direct and clear, like a foreman giving instructions or a contractor following up with a homeowner. Keep measurements and numbers exactly as given. +- If the input is already in the target language, return it unchanged.`; + +export async function translate(text, targetLanguage) { + const response = await anthropic().messages.create({ + model: "claude-opus-4-8", + max_tokens: 1024, + system: TRANSLATE_SYSTEM, + messages: [ + { + role: "user", + content: `Target language: ${targetLanguage}\n\nText to translate:\n${text}`, + }, + ], + }); + const block = response.content.find((b) => b.type === "text"); + return block ? block.text.trim() : ""; +} + +// --- ElevenLabs voice ------------------------------------------------------ + +export async function cloneVoice(name, audioBuffer, mimeType) { + const form = new FormData(); + form.append("name", name); + form.append( + "files", + new Blob([audioBuffer], { type: mimeType || "audio/webm" }), + "sample.webm" + ); + const res = await fetch(`${ELEVENLABS}/voices/add`, { + method: "POST", + headers: { "xi-api-key": elevenKey() }, + body: form, + }); + if (!res.ok) throw new Error(`ElevenLabs clone failed (${res.status}): ${await res.text()}`); + return (await res.json()).voice_id; +} + +export async function speak(voiceId, text) { + const res = await fetch(`${ELEVENLABS}/text-to-speech/${voiceId}`, { + method: "POST", + headers: { + "xi-api-key": elevenKey(), + "Content-Type": "application/json", + Accept: "audio/mpeg", + }, + body: JSON.stringify({ + text, + model_id: TTS_MODEL, + voice_settings: { stability: 0.5, similarity_boost: 0.8 }, + }), + }); + if (!res.ok) throw new Error(`ElevenLabs TTS failed (${res.status}): ${await res.text()}`); + return Buffer.from(await res.arrayBuffer()); +} + +export async function transcribe(audioBuffer, mimeType) { + const form = new FormData(); + form.append("model_id", "scribe_v1"); + form.append( + "file", + new Blob([audioBuffer], { type: mimeType || "audio/webm" }), + "reply.webm" + ); + const res = await fetch(`${ELEVENLABS}/speech-to-text`, { + method: "POST", + headers: { "xi-api-key": elevenKey() }, + body: form, + }); + if (!res.ok) throw new Error(`ElevenLabs STT failed (${res.status}): ${await res.text()}`); + return res.json(); +} + +// --- Twilio delivery (text + voicemail) ------------------------------------- + +let _twilio; +async function twilioClient() { + if (_twilio) return _twilio; + const { TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN } = process.env; + if (!TWILIO_ACCOUNT_SID || !TWILIO_AUTH_TOKEN) { + throw new Error("TWILIO_ACCOUNT_SID and TWILIO_AUTH_TOKEN must be set to send messages."); + } + const { default: twilio } = await import("twilio"); + _twilio = twilio(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN); + return _twilio; +} + +export async function sendText(to, body) { + const from = process.env.TWILIO_FROM_NUMBER; + if (!from) throw new Error("TWILIO_FROM_NUMBER is not set."); + const client = await twilioClient(); + const msg = await client.messages.create({ to, from, body }); + return msg.sid; +} + +// Places a phone call that plays a hosted mp3 — a voicemail in the contractor's voice. +// audioUrl must be publicly reachable by Twilio (see PUBLIC_BASE_URL in server.js). +export async function placeVoicemailCall(to, audioUrl) { + const from = process.env.TWILIO_FROM_NUMBER; + if (!from) throw new Error("TWILIO_FROM_NUMBER is not set."); + const client = await twilioClient(); + const twiml = `${audioUrl}`; + const call = await client.calls.create({ to, from, twiml }); + return call.sid; +} diff --git a/crewvoice/mcp-server.js b/crewvoice/mcp-server.js new file mode 100644 index 0000000..3a510c9 --- /dev/null +++ b/crewvoice/mcp-server.js @@ -0,0 +1,83 @@ +// CrewVoice MCP server — exposes CrewVoice as tools inside ChatGPT, Claude, or any MCP client. +// +// Run over stdio: node mcp-server.js +// Then register it with your MCP client (see README → "Use it inside Claude/ChatGPT"). +// +// Tools: +// clone_voice — clone a contractor's voice from a local audio file +// translate_dispatch — construction-aware English -> target-language translation (text only) +// send_text_dispatch — translate, then deliver as an SMS in the recipient's language + +import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; +import { z } from "zod"; +import { readFile } from "node:fs/promises"; +import path from "node:path"; +import dotenv from "dotenv"; +import { translate, cloneVoice, sendText } from "./lib.js"; + +dotenv.config(); + +const server = new McpServer({ name: "crewvoice", version: "0.1.0" }); + +server.registerTool( + "clone_voice", + { + description: + "Clone a contractor's voice from a local audio sample (~30s). Returns a voiceId used for later dispatches.", + inputSchema: { + audioPath: z.string().describe("Absolute or relative path to an audio file (mp3/wav/webm/m4a)."), + name: z.string().optional().describe("A label for this voice, e.g. the contractor's name."), + }, + }, + async ({ audioPath, name }) => { + const buf = await readFile(audioPath); + const ext = path.extname(audioPath).slice(1).toLowerCase(); + const mime = { mp3: "audio/mpeg", wav: "audio/wav", webm: "audio/webm", m4a: "audio/mp4" }[ext] + || "audio/mpeg"; + const voiceId = await cloneVoice(name || "CrewVoice contractor", buf, mime); + return { content: [{ type: "text", text: `Voice cloned. voiceId: ${voiceId}` }] }; + } +); + +server.registerTool( + "translate_dispatch", + { + description: + "Translate a construction dispatch from English into the crew's or customer's language, preserving trade terminology (TPO, flashing, drip edge, etc.). Returns the translated text only.", + inputSchema: { + text: z.string().describe("The message in English."), + targetLanguage: z.string().describe("Target language, e.g. 'Spanish'."), + }, + }, + async ({ text, targetLanguage }) => { + const translation = await translate(text, targetLanguage); + return { content: [{ type: "text", text: translation }] }; + } +); + +server.registerTool( + "send_text_dispatch", + { + description: + "Translate an English dispatch into the recipient's language and deliver it as an SMS text. Use for crew dispatches or customer/bid follow-ups. Requires Twilio configuration.", + inputSchema: { + text: z.string().describe("The message in English."), + targetLanguage: z.string().describe("Recipient's language, e.g. 'Spanish'."), + to: z.string().describe("Recipient phone number in E.164 format, e.g. +14155551234."), + }, + }, + async ({ text, targetLanguage, to }) => { + const translation = await translate(text, targetLanguage); + const sid = await sendText(to, translation); + return { + content: [ + { type: "text", text: `Sent to ${to} (sid ${sid}).\n\nDelivered text:\n${translation}` }, + ], + }; + } +); + +const transport = new StdioServerTransport(); +await server.connect(transport); +console.error("CrewVoice MCP server running on stdio."); diff --git a/crewvoice/package.json b/crewvoice/package.json new file mode 100644 index 0000000..8a6b86c --- /dev/null +++ b/crewvoice/package.json @@ -0,0 +1,25 @@ +{ + "name": "crewvoice", + "version": "0.1.0", + "private": true, + "description": "CrewVoice — the vertical AI agent for construction crews. Speak a dispatch in English; your crew hears it in their language, in your cloned voice.", + "type": "module", + "main": "server.js", + "scripts": { + "start": "node server.js", + "dev": "node --watch server.js", + "mcp": "node mcp-server.js" + }, + "engines": { + "node": ">=18" + }, + "dependencies": { + "@anthropic-ai/sdk": "^0.69.0", + "@modelcontextprotocol/sdk": "^1.13.0", + "dotenv": "^16.4.5", + "express": "^4.21.2", + "multer": "^1.4.5-lts.1", + "twilio": "^5.3.0", + "zod": "^3.23.8" + } +} diff --git a/crewvoice/public/index.html b/crewvoice/public/index.html new file mode 100644 index 0000000..303b5fe --- /dev/null +++ b/crewvoice/public/index.html @@ -0,0 +1,231 @@ + + + + + +CrewVoice — your voice, their language + + + +
+ +

Your voice. Their language.

+

Speak a dispatch in English. Your crew hears it in their language — in your own cloned voice.

+ + +
+ STEP 1 +

Clone your voice

+

Record ~30 seconds of yourself talking — anything. CrewVoice learns your voice once.

+
+ + + +
+
+
+ + +
+ STEP 2 +

Send a dispatch

+

Type what you'd tell the crew. It comes back as a voice note in their language, in your voice.

+ + + + + +
+
+ Delivered in your voice +
+ +
+
+ + +
+ STEP 3 · TWO-WAY +

Hear back from the crew

+

Record a reply in any language. You get it back in English.

+
+ + + +
+
+
+ In English +
+
+
+
+
+ + + + diff --git a/crewvoice/server.js b/crewvoice/server.js new file mode 100644 index 0000000..fc4dc17 --- /dev/null +++ b/crewvoice/server.js @@ -0,0 +1,131 @@ +// CrewVoice web server — clone a voice, dispatch translated voice notes, deliver as text/voicemail. +// Core logic lives in lib.js (shared with the MCP server). + +import express from "express"; +import multer from "multer"; +import dotenv from "dotenv"; +import crypto from "crypto"; +import { + translate, + cloneVoice, + speak, + transcribe, + sendText, + placeVoicemailCall, +} from "./lib.js"; + +dotenv.config(); + +const { ANTHROPIC_API_KEY, ELEVENLABS_API_KEY, PUBLIC_BASE_URL, PORT = 3000 } = process.env; + +if (!ANTHROPIC_API_KEY || !ELEVENLABS_API_KEY) { + console.warn( + "[CrewVoice] Missing ANTHROPIC_API_KEY and/or ELEVENLABS_API_KEY. " + + "Copy .env.example to .env and fill them in — the API routes will fail until you do." + ); +} + +const app = express(); +app.use(express.json({ limit: "1mb" })); +app.use(express.static("public")); +const upload = multer({ limits: { fileSize: 25 * 1024 * 1024 } }); + +// Short-lived store for generated audio so Twilio can fetch it for voicemail playback. +const audioStore = new Map(); // id -> { buf, expires } +function stashAudio(buf) { + const id = crypto.randomUUID(); + audioStore.set(id, { buf, expires: Date.now() + 60 * 60 * 1000 }); // 1h + return id; +} +app.get("/audio/:id", (req, res) => { + const entry = audioStore.get(req.params.id); + if (!entry || entry.expires < Date.now()) return res.sendStatus(404); + res.type("audio/mpeg").send(entry.buf); +}); + +// Agent 1: clone the contractor's voice from a ~30s sample. +app.post("/api/clone", upload.single("sample"), async (req, res) => { + try { + if (!req.file) return res.status(400).json({ error: "No voice sample uploaded." }); + const name = req.body.name || `CrewVoice contractor ${Date.now()}`; + const voiceId = await cloneVoice(name, req.file.buffer, req.file.mimetype); + res.json({ voiceId }); + } catch (err) { + console.error(err); + res.status(500).json({ error: err.message }); + } +}); + +// Agent 2: dispatch — English in, translated voice note out (in the cloned voice). +app.post("/api/dispatch", async (req, res) => { + try { + const { text, targetLanguage, voiceId } = req.body || {}; + if (!text || !targetLanguage || !voiceId) { + return res.status(400).json({ error: "text, targetLanguage and voiceId are required." }); + } + const translation = await translate(text, targetLanguage); + const audio = await speak(voiceId, translation); + res.json({ translation, audio: audio.toString("base64"), mimeType: "audio/mpeg" }); + } catch (err) { + console.error(err); + res.status(500).json({ error: err.message }); + } +}); + +// Delivery: translate, then send to a recipient's phone as a text or a voicemail. +app.post("/api/send", async (req, res) => { + try { + const { text, targetLanguage, voiceId, to, channel = "text" } = req.body || {}; + if (!text || !targetLanguage || !to) { + return res.status(400).json({ error: "text, targetLanguage and to are required." }); + } + const translation = await translate(text, targetLanguage); + + if (channel === "text") { + const sid = await sendText(to, translation); + return res.json({ translation, channel, sid }); + } + + if (channel === "voicemail") { + if (!voiceId) return res.status(400).json({ error: "voiceId is required for voicemail." }); + if (!PUBLIC_BASE_URL) { + return res.status(400).json({ + error: "PUBLIC_BASE_URL must be set so Twilio can fetch the generated audio.", + }); + } + const audio = await speak(voiceId, translation); + const id = stashAudio(audio); + const sid = await placeVoicemailCall(to, `${PUBLIC_BASE_URL}/audio/${id}`); + return res.json({ translation, channel, sid }); + } + + res.status(400).json({ error: `Unknown channel "${channel}".` }); + } catch (err) { + console.error(err); + res.status(500).json({ error: err.message }); + } +}); + +// Agent 3: two-way — crew/customer replies in their language, contractor gets English. +app.post("/api/transcribe", upload.single("reply"), async (req, res) => { + try { + if (!req.file) return res.status(400).json({ error: "No reply audio uploaded." }); + const { text, language_code } = await transcribe(req.file.buffer, req.file.mimetype); + const english = await translate(text, "English"); + res.json({ original: text, languageCode: language_code, english }); + } catch (err) { + console.error(err); + res.status(500).json({ error: err.message }); + } +}); + +app.get("/api/health", (_req, res) => { + res.json({ + ok: true, + anthropic: Boolean(ANTHROPIC_API_KEY), + elevenlabs: Boolean(ELEVENLABS_API_KEY), + twilio: Boolean(process.env.TWILIO_ACCOUNT_SID), + }); +}); + +app.listen(PORT, () => console.log(`CrewVoice running at http://localhost:${PORT}`)); diff --git a/landing/index.html b/landing/index.html index d3ea9a3..64240f1 100644 --- a/landing/index.html +++ b/landing/index.html @@ -3,193 +3,48 @@ -Allerion Glasses — Autonomous intelligence for the built world - +CrewVoice by Allerion — your voice, every worker's language + @@ -197,73 +52,38 @@
-

Your voice. Their language. Hands-free.

+
Now in early access · Allerion Apps
+

CrewVoice — your voice, every worker's language.

- Certified safety glasses, rebranded Allerion, running CrewVoice — the - vertical AI agent for construction crews. Speak a dispatch in English; your crew hears it - in Spanish, in your voice, in their own ears. No phone. No stopping work. + A contractor records their voice once. Then they type a message in English, pick a + crew or a customer, and CrewVoice sends it as a voicemail or text in the recipient's + language — Spanish, English, more — in the contractor's own cloned voice. Built for + construction. Ships as an MCP server, so it plugs straight into the ChatGPT or Claude + you already use.

- Become a design partner - How it works + Get CrewVoice — $149/mo + Book a demo +
This is the contractor version of the voice-clone voicemail model already proven for real-estate agents.
-
-
-
The idea
-

Eye protection your crew already has to wear — now it thinks.

-

- Frontline crews already wear safety glasses by law. We start there: a discreet, - already-certified frame, rebranded Allerion, with ALLERION.ai and Crew Voice running - on it. No new gadget to justify, no certification to wait on — intelligence on the - protection they're already required to wear. -

-
-
- Your cloned voice -

Delivered as you

-

A 30-second sample, and CrewVoice speaks any language in your own voice. Your crew hears their boss — not a robot.

-
-
- Two-way -

They answer, you understand

-

Crew replies in Spanish; you get it in English. The language barrier on the job site, gone.

-
-
- Built for construction -

Speaks the trade

-

TPO, flashing, drip edge, underlayment — CrewVoice knows the terms generic translators butcher.

-
-
-
-
-
-
CrewVoice
-

The vertical AI agent for construction crews.

-

- The language barrier between English-speaking contractors and Spanish-speaking crews - costs the industry billions in rework, injuries, and lost time. CrewVoice closes it — - not with text translation, but by delivering your dispatches in your crew's language, - spoken in your own cloned voice. On the Allerion glasses, it's hands-free and eyes-up: - the job site can finally hear you, in any language, without anyone reaching for a phone. -

- Dispatch -

Speak once, sent in their language

-

"Start the south elevation, underlayment down before noon" → delivered as a voice note in Spanish, in your voice.

+ Clone once +

Clone your voice

+

Record a short sample and CrewVoice captures your voice. Every message after that goes out sounding like you — no re-recording, no studio.

- Safety briefing -

6 AM, every morning, automatically

-

Each crew member gets the daily safety briefing in their language, in the superintendent's voice.

+ Translate + send +

In their language

+

Type in English. CrewVoice translates and delivers a voicemail or text in the recipient's language — Spanish, English, and more — in your cloned voice.

- Documentation -

End-of-day record

-

Every communication, transcribed and summarized — what was said, to whom, and when.

+ MCP +

Works in your existing AI

+

Ships as an MCP server. Plug it into the ChatGPT or Claude you already use and send crew dispatches and bid follow-ups straight from chat.

@@ -271,49 +91,28 @@

End-of-day record

-
How we ship
-

Buy the hardware. Own the intelligence.

-
- 01 -
-

Phase 1 — Voice-first, available now

-

White-label a discreet, already-certified, camera-free safety frame and brand it - Allerion. Deploy ALLERION.ai + Crew Voice. No camera means no privacy blocker and no - re-certification — it ships.

+

Built for the job site.

+

The language barrier between English-speaking contractors and their crews and customers costs the industry billions in rework and lost deals. CrewVoice closes it — in the voice everyone already knows.

+
+
+

Dispatch the crew

+

Send a job to a Spanish-speaking crew as a voice note — in your voice, so it carries your authority.

-
-
- 02 -
-

Phase 2 — Camera SKU for documentation

-

For sites that want POV video → auto-generated SOPs, an optional camera-equipped - certified model, with consent and on-prem storage built in. Same ALLERION.ai backend.

+
+

Follow up the bid

+

Reach a homeowner who doesn't speak English, in their language, without an interpreter or a callback you'll miss.

-
- ANSI Z87.1 - CSA Z94.3 - EN 166 - SOVEREIGN / ON-PREM -
-
+
-
Early access
-

Put Allerion on your crew first.

-

- We're onboarding a small group of design-partner sites. Tell us where you operate and - we'll be in touch. -

- -
- - -
- -

B2B / design-partner program. No spam.

+
CrewVoice by Allerion
+

$149/mo · early access

+

Voicemail, text, and an MCP server for ChatGPT and Claude.

+ Get CrewVoice — $149/mo + Book a demo