AI-powered Satellite Communications Industry Assistant
This codebase provides a web-based interface for understanding the competitive landscape of the Satellite communications industry. It aggregates data from several sources, but most of the information comes from the US Federal Communications Commission's International Bureau Filing System (IBFS). The IBFS is a database, application filing system, and processing system, hosted by the US federal government, for all International and Satellite services.
The main purpose of this software is to provide its users deep insights into the competitive landscape of the satellite communications industry, and the legal issues that inform it. To that end, the tool offers a personalized, web-based interface for exploring the data provided by IBFS: the content of the FCC-submitted Applications, the entities who filed or commented on them, and the documents associated with them. Specific web pages for individial Applications, Applicants, and other entities are provided to help the user understand the overall picture and provide actionable data. The metadata and content of all the Filings that have ever been submitted to the IBFS are indexed by keyword and vector indexing for a fast, flexible, unified search interface.
Additionally, this tool provides LLM-driven summaries of all document content, timeline summaries for each Application Filing, and analysis of the mergers and acquisitions landscape.
The following applications are available on IBFS for electronic filing:
- Space and Earth Station Applications:
- Earth Station Authorizations – Form 312
- Earth Station Special Temporary Authority
- Space Station Authorizations – Form 312
- Space Station Special Temporary Authority
- Modifications of Authorization – Form 312
- Amendments to Pending Applications – Form 312
- Transfers of Control of License – Form 312
- Assignments of License – Form 312
- International Accounting Rate Change Filings
- Submarine Cable Landing License Applications
- Requests for Assignment of Data Network Identification Codes
- Foreign Carrier Affiliation Notification Filings
- International Section 214 Applications
- International Section 214 Special Temporary Authority
- International Signaling Point Code Filings
- Recognized Operating Agency Filings
- Renewal of Radio License in Specific Services
IBFS Applications are subject to public comment before approval and an individual comment may be filed against more than one Application, resulting in a many-to-many relationship. The most frequent commenters are the handful of major satellite communications players who file the Applications themselves, because the comments provide a competitive forum for adversarial blocking or delaying of a competitor's Application. Since the number of posible physical satellite orbits is limited, as is the number of non-overlapping frequency bands licensed for talking to them, both of these resources are effectively scarce, and the firms compete aggressively for frequency and orbital licenses.
Many applications require extra information in the form of attachments. The IBFS site states that they accept attachments in the following formats: Word, Adobe Acrobat, Excel and Text. However, in practice, other formats are frequently submitted, and will be encountered as attachments. Comments to Applications may also contain attachments.
This application downloads and stores all Application and Comment attachments into its blob storage. When possible, the attachment's text content is extracted and indexed for search.
All application configuration is stored in the DuckDB database and managed via the CLI. See doc/configuration.md for details on config keys, encryption, the SecretValue wrapper, and the daily-orbit config CLI commands.
The daily-orbit CLI is the single entry point for all operational tasks: server operation, data ingestion, attachment management, configuration, company enrichment, news processing, and ad-hoc database queries.
# Direct invocation
./daily-orbit --help
# Or via Node
node --no-warnings packages/server/src/bin.ts --helpTop-level commands:
daily-orbit serve Start the HTTP server
daily-orbit config Manage application configuration
daily-orbit ingest Data ingestion (ibfs, icfs)
daily-orbit attachments Attachment discovery and download
daily-orbit companies Company entity management and attribution
daily-orbit news News article ingestion and processing
daily-orbit inference Inference and summarization commands
daily-orbit search Search index management
daily-orbit user User account management
daily-orbit db Database utilities
Every command and subcommand supports --help for usage details:
./daily-orbit ingest icfs --helpFor the full CLI reference, see doc/CLI.md.
The project is a pnpm monorepo.
graph TD
Browser["Browser\n(@daily-orbit/web)"]
Server["REST API Server\n(@daily-orbit/server)"]
DB[("DuckDB\ndata/daily-orbit.duckdb")]
Auth["Better Auth\n(sessions & accounts)"]
FCC["FCC IBFS Feed\n(public data source)"]
Blob["Blob Storage\n(local fs or S3)"]
Browser -- "HTTP :5173 → :9000" --> Server
Server -- "SQL queries" --> DB
Server -- "auth adapter" --> Auth
Auth -- "DuckDB tables" --> DB
Server -- "scrape CLI" --> FCC
FCC -- "attachments" --> Blob
Server -- "attachment URLs" --> Blob
Daily Orbit Components
- The scrape process fetches Application metadata and attachments from the FCC IBFS feed and stores them in DuckDB + blob storage.
- The server exposes a REST API consumed by the browser frontend and enforces session-based auth via Better Auth.
- The web client renders Application, Applicant, and Comment views driven entirely by the API.
| Package | Path | Port | Purpose |
|---|---|---|---|
@daily-orbit/web |
packages/web/ |
5173 | Vite + React + fbtee frontend |
@daily-orbit/server |
packages/server/ |
9000 | Hono REST API + auth + data ingestion |
- Vite + React 19 with React Compiler
- Better Auth for authentication
- React Router v7
- Cosmograph
- Tailwind CSS
- Hono on Node.js 23+ (native TypeScript strip-types)
- DuckDB via
@duckdb/node-api - Apache OpenDAL for storage abstraction (local FS in dev, S3 in production)
- Better Auth with a custom DuckDB adapter
- tsdown (Rolldown-based) for production builds
