System Description — TELECOM TOWER POWER¶
AICPA SOC 2 §3 narrative describing the system in scope.
1. Services provided¶
TELECOM TOWER POWER is a B2B SaaS platform providing radio-frequency (RF) link planning APIs for the Brazilian telecommunications market. The platform aggregates 140,498 cell-tower records (ANATEL + OpenCelliD), 90-meter SRTM terrain data, and proprietary multi-hop repeater algorithms behind a tiered REST API. Customers — primarily ISPs, RF consultants, and tower operators — query the API to qualify new connections, plan point-to-point links, generate technical PDFs, and visualize coverage heatmaps.
2. Principal service commitments and system requirements¶
Service commitments¶
- Availability: 99.9% (Enterprise) / 99.95% (Ultra) measured monthly.
- Confidentiality: Customer data isolated by
tenant_id; never shared with other tenants or sub-processors except as listed in the public sub-processor index. - Privacy: LGPD-compliant; data subject access requests honored within 30 days.
- Processing integrity: Every tenant action audit-logged and queryable; PDF outputs deterministic and checksummed.
- Security: API keys + SSO/OIDC authentication; OWASP Top-10 mitigations; encrypted at rest and in transit.
System requirements¶
- TLS 1.2+ for all client connections.
- Customers responsible for securing their own API keys and SSO credentials.
- Customers acknowledge data classification (public ANATEL data, no PII processed by core RF endpoints).
3. Components of the system¶
Infrastructure¶
- AWS sa-east-1 (São Paulo): Primary region. ECS Fargate for the API, RDS Postgres for the database, S3 for backups and PDF storage, SQS for batch jobs, Lambda for batch processing, CloudWatch for logs, ALB for ingress.
- EC2 (Docker Compose, sa-east-1): Hosts frontend, Grafana, Prometheus, Alertmanager, Caddy reverse proxy.
- Railway (separate provider): Warm failover for the API tier; activated via Route 53 health-check failover.
- AWS Cognito (sa-east-1): User pool for SSO/OIDC with optional SAML federation.
- Stripe: Billing and subscription management.
Software¶
- Backend: Python 3.10 + FastAPI (
telecom_tower_power_api.py) + SQLAlchemy + Alembic. - Frontend: React + Leaflet single-page PWA.
- Workers: AWS Lambda for batch (
batch_worker.py) and priority batch (worker.py). - Observability: Prometheus + Grafana + Alertmanager + OpenTelemetry traces.
People¶
- Engineering (FastAPI + React).
- DevOps/SRE (AWS infra, GitHub Actions, observability).
- Security (least-privilege IAM, vulnerability mgmt, incident response).
- Customer Success (Ultra-tier dedicated CSM).
- Legal & Compliance (LGPD/GDPR, contracts, sub-processor management).
Procedures¶
Documented in docs-site/docs/operations/runbook.md and the policy set in policies/.
Data¶
- Customer data: company name, billing email, Stripe customer ID, API usage, audit log.
- Public data: ANATEL tower registry (CC-BY ANATEL), OpenCelliD (CC-BY-SA), SRTM (USGS public domain).
- No PII is collected by the RF analysis endpoints — input is geographic coordinates + technical parameters.
- Privacy-relevant PII is limited to billing email + (optionally) end-user names for Ultra-tier white-label and SSO users; processed under LGPD as legitimate interest + contract performance.
4. Boundaries of the system¶
In scope:
- All endpoints under
api.telecomtowerpower.com.br. - All AWS resources in account
490083271496, regionsa-east-1. - The 19 GitHub Actions workflows under
.github/workflows/. - Cognito User Pool
sa-east-1_15uR6sR9o. - Stripe webhook endpoint at
app.telecomtowerpower.com.br/webhook. - Public docs at
docs.telecomtowerpower.com.br. - React frontend at
app.telecomtowerpower.com.brand apextelecomtowerpower.com.br.
Out of scope:
- Upstream SaaS providers (AWS, Stripe, GitHub, PagerDuty, Slack, Cognito-as-a-managed-service) — covered by their respective SOC 2 reports.
- The MkDocs and React build pipelines are in scope; the resulting static assets are CDN-cached but the build workflow itself is the controlled artifact.
- Public ANATEL/OpenCelliD/SRTM ingestion pipelines (
load_anatel.py, etc.) — input data is public; the pipelines are in scope for Processing Integrity but no Confidentiality risk.
5. Sub-service organizations¶
The following sub-processors are carved-out (in CC9.2 scope) — auditor relies on each provider's own SOC 2 report.
| Sub-processor | Service | SOC report relied upon |
|---|---|---|
| Amazon Web Services | Hosting (EC2, ECS, RDS, S3, Lambda, Cognito, ACM, KMS, etc.) | AWS SOC 2 Type II (latest) |
| Stripe | Billing | Stripe SOC 2 Type II |
| GitHub | Source control + CI/CD | GitHub SOC 2 Type II |
| PagerDuty | Critical alerting | PagerDuty SOC 2 Type II |
| Slack | Internal communication | Slack SOC 2 Type II |
| Railway | Failover hosting | Railway SOC 2 Type II (or carve-out narrative if unavailable) |
| Cloudflare (DNS via Route 53; CDN at docs) | DNS + CDN | AWS Route 53 (SOC 2) + Cloudflare SOC 2 |
Public sub-processor list: docs.telecomtowerpower.com.br/legal/sub-processors/.
6. Complementary subservice organization controls (CSOCs)¶
Customers' security controls that complement ours:
- API keys must be stored securely by the customer (AWS Secrets Manager, HashiCorp Vault, etc.).
- SSO IdP (where applicable) must enforce MFA, password policy, and timely de-provisioning.
- Customers must keep their billing/notification email up to date.
7. Significant changes during the period¶
To be filled in per audit period. Examples that would be material:
- Adoption of a new sub-processor.
- Major architectural change (e.g., new region, new DB engine).
- Tier addition (e.g., Ultra tier — added 2026-Q2).