Skip to content

optimizedwf/towerforge

License: MIT TypeScript Node.js 20+ Zod CI

🏗️ TowerForge

AI-powered telecom construction toolkit

Work packages · BOMs · Grounding plans · Crew estimates · Closeout docs
— all generated from real carrier standards and validated equipment catalogs.


What is TowerForge?

TowerForge is a production-grade AI toolkit for wireless infrastructure construction. Give it a scope of work and it generates structured, construction-ready documents that a tower crew can actually work from — not summaries or generic advice.

Built by Adam Normandin — a senior telecom construction PM's knowledge, encoded into tools.

What it generates

Deliverable Description
Work Packages 10-section construction docs: scope, assumptions, sequence, BOM, crew, QC, safety, failure points, optimizations, next actions
Bill of Materials Structured BOM tables with real, validated part numbers — no SKU hallucination
Grounding Plans Bond schedules per ATIS-0600334, Motorola R56, TIA-607-C
Crew Estimates Role-by-role crew plans with certifications, headcount, and duration
Sequence of Work Phased construction sequences with inline safety notes
Closeout Checklists Carrier-specific closeout packages (CIQ, MOD, ROWP)
Punchlist Prediction Proactive identification of common failure points before they happen

Carrier standards built in

Carrier Standards Closeout Format
T-Mobile PIM ≤ -150 dBc, VSWR ≤ 1.3:1, ground ≤ 5Ω CIQ package
AT&T PIM ≤ -153 dBc, VSWR ≤ 1.25:1, WLCP governed MOD package
Verizon PIM ≤ -150 dBc (C-band: -145), VSWR ≤ 1.3:1 ROWP package
DISH/EchoStar Open RAN architecture, return loss ≥ 18 dB O-RAN spec

Equipment catalog

Real part numbers from:

  • Ericsson — AIR 6449, Radio 4415, Baseband 6630, PSU-AC 8200
  • Nokia — AirScale AAHF, AAHG, AAIB, BTS
  • Samsung — MT6402, MT6401, low-band RU
  • CommScope/Andrew — Antennas, cables, connectors, ground kits, hangers

Architecture

towerforge/
├── sdk/                         # TypeScript SDK — the engine
│   ├── src/
│   │   ├── tools/               # 7 public API functions
│   │   ├── engine/              # Structured output builders
│   │   ├── profiles/            # Carrier + OEM profiles
│   │   ├── schemas/             # Material index, Zod schemas
│   │   ├── data/                # Data loaders (CSV, PDF, XLSX)
│   │   ├── validation/          # BOM rules, part number enforcement
│   │   ├── compiler/            # Structured → markdown compiler
│   │   └── utils/               # Tags, hashing, normalization
│   └── tests/                   # 8 acceptance test suites
├── skills/                      # AI bot skills (pi, Claude, Vercel AI SDK)
│   ├── telecom-construction/    # Core skill with 4 tools
│   └── web-search/              # Gemini-powered web search
├── templates/                   # Deployment scaffolding
│   ├── SOUL.md                  # Bot personality
│   ├── AGENTS.md                # Agent instructions
│   └── USER.md                  # Client profile template
└── docs/                        # Carrier standards reference

Quick start

As an SDK

npm install
npm run build
import { telecomWorkPackage } from "towerforge";

const wp = telecomWorkPackage({
  scope_text: "Add 3 sectors of Ericsson AIR 6449 on 150' monopole",
  site_context: { carrier: "T-Mobile", tower_type: "monopole" }
});

console.log(wp.work_package_markdown);
// → Full 10-section construction document

As AI bot skills

import { streamText } from "ai";
import { telecomTools } from "./skills/telecom-construction/tools";
import { webSearchTool } from "./skills/web-search/tools";
import { TELECOM_PROMPT } from "./skills/telecom-construction/prompt";

const result = await streamText({
  model: gemini("gemini-2.5-flash"),
  system: TELECOM_PROMPT,
  tools: { ...telecomTools, ...webSearchTool },
  messages,
  maxSteps: 5,
});

Deploy a new bot instance

cp templates/ my-client-workspace/
# Customize SOUL.md and USER.md
# Configure projects.json to point at workspace
# Start with PM2

API reference

Function Input Output
telecomWorkPackage Scope text + site context + files 10-section work package + BOM + assumptions + risks
telecomBomFromScope Normalized scope + files BOM rows + unresolved items
telecomGroundingPlan Tower type + scope tags + context Grounding plan + bond schedule + test requirements
telecomSequenceOfWork Tower type + scope tags + site Phased construction sequence
telecomCloseoutChecklist Tower type + scope tags + carrier Closeout checklist by category
telecomLaborAndEquipment Tower type + scope tags + site Crew plan + equipment list + duration
telecomPunchlistPredictor Tower type + scope tags + carrier Predicted punchlist items with likelihood
telecomExtractScopeFromFiles File references Normalized scope from takeoffs/drawings

No SKU hallucination

TowerForge's validation engine enforces strict part number integrity:

// With strict mode enabled (default):
// - Every part number is validated against the catalog
// - Unknown PNs are marked "TBD — verify with distributor"
// - PN-like strings in notes/spec are detected and flagged
// - Source tracking: takeoff | dataset | oem_pdf | drawing | tbd

This prevents the #1 failure mode of AI-generated construction docs: hallucinated part numbers that don't exist.

Testing

npm test              # All tests
npm run test:acceptance  # Acceptance tests only

8 acceptance test suites covering BOM no-hallucination, work package structure, grounding plans, carrier/OEM profiles, takeoff ingestion, validation rules, extensions, and integration.

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT — see LICENSE for details.


Built by Adam Normandin

About

AI-powered telecom construction toolkit — work packages, BOMs, grounding plans, crew estimates, and closeout docs with real carrier standards and validated part numbers.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors