Skip to content

optimizedwf/towerforge

Repository files navigation

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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors