Inspiration

Ground stations are the toll booths of space. A satellite passes overhead for a few minutes, an antenna tracks it, the data comes down, and someone sends a bill. AWS Ground Station charges by the minute. KSAT, the world's largest commercial ground-station operator, reported NOK 2.361B (about USD $234M) in 2025 group revenue across about 2.1 million contacts on about 375 antennas.

At that volume, every dropped pass, partial downlink, or "the storm ate my data" email turns into a billing dispute. Right now a person settles each one by hand. They pull the pass log, check space weather, check maintenance notices, read the contract's SLA, and decide whether to issue a credit. It's slow and inconsistent: two analysts can rule differently on the same claim. It's also easy to game. If you know the analyst skips the weather check, you'll blame a storm.

We modeled Ground Truth on that operating profile and asked Hyphenate's question: can a finance team hire an autonomous system for this corner of the books, with limited access, a clean record, and the sense to ask when it should?

Is it real enough?

Realistic data, a messy problem, and proof that it works.

The company. A mid-market ground-station operator in the shape of KSAT: hundreds of antennas, millions of contacts a year, minute-based billing, and a flood of customer credit claims when a pass fails.

The messy problem. Sources disagree. The customer's claim says "storm," the pass log says the antenna tracked cleanly, space weather says the band was quiet, and maintenance was announced three days earlier. Time matters: a March decision should change what the system does in June. Approvers are busy; the controller sometimes says no. Whoever proposes a credit cannot be the one who promotes the rule that allows it.

What's real vs simulated.

  • Real: CelesTrak orbital elements + SGP4 for live satellite positions; a handful of Starlink satellites with their own marker; KSAT-scale revenue anchors from the 2025 annual report (NOK 2.361B / ~$234M, ~2.1M contacts, ~375 antennas); AWS Cedar as the real policy engine; SpacetimeDB Maincloud as the live system of record.
  • Simulated: the claim stream, pass telemetry features, space-weather bands, and maintenance notices that feed each dispute, generated so we can plant known-good and known-bad cases.
  • How we know it works: Break It is our planted-error suite with an answer key. Each attack (inflated amount, duplicate claim, forged station log, fake storm excuse, insider raising their own limit, and more) is run against the old policy and the current policy side by side. Policy versions also carry a full replay against decision history: escalations fell from 3,406 at v4 to 1,660 at v6 while precision went up, with zero regressions allowed before promote. Finance KPIs (billed, revenue at risk, credits paid, recovered) are computed from the same SpacetimeDB ledger every screen reads, so the demo cannot contradict itself.

Would you hire it?

For which seats, and would it earn them: limited access, a clean record of its work, and knowing when to ask?

Seats. Dispute analyst (settles routine SLA credits) and controller (reviews escalations, approves or rejects proposed policy).

Limited access. System 1 and System 2 can only propose. AWS Cedar has the final say. Anything above a confidence or dollar threshold, or outside the rulebook, escalates to a human. The agent that proposes a credit is not the process that promotes a new rule, segregation of duties is baked into the reducers. On Finance → Ledger, the same identity that approved a credit cannot submit it to ERP, the bar shows “SoD blocked” and Submit stays disabled until a different reviewer acts.

Clean record. Every decision writes an audit trail: claim features, System 1 score + SHAP drivers, System 2 citations (pass log, weather, maintenance, contract), Cedar permit/forbid, and the human override when one happened. The ledger is append-only. Anyone reviewing a paid credit can see why it paid, months later.

Knowing when to ask. System 1 only auto-settles at 95%+ confidence. Below that, System 2 investigates. If Cedar doesn't cover the case, or the amount is material, it stops and waits for the manager, with the evidence already gathered. After the human decides, the system learns: when at least 3 consistent decisions agree and none contradict, it drafts a new Cedar rule, replays it on the full history, and only offers promotion if it would not have overruled a single past human decision. The controller still has to click promote.

Did we see something new?

A company, problem, or approach we haven't seen made autonomous before.

The company / problem. Ground-station SLA credit disputes at operator scale, usage-billed space infrastructure where a few minutes of antenna time become revenue, cash, and next quarter's forecast. Not another SaaS refund bot.

The approach.

  1. Two-speed autonomy, not one big LLM. A cheap tabular model (System 1) clears confident claims on structured features; an LLM (System 2) only reads sources on the hard cases. Most claims never need the expensive path.
  2. Deterministic policy on top of probabilistic models. Cedar is the rulebook finance can read and audit. Learned rules show up in plain English ("Dropped pass + maintenance announced in advance → deny") with support and contradiction counts; raw Cedar stays for auditors.
  3. Learning with a ratchet. Human decisions mine into new rules, but replay-before-promote with zero tolerated regressions means automation can rise without quietly paying claims a human would have denied.
  4. Adversarial by design. Break It assumes customers and insiders will try to game the desk, and proves the current policy catches what the old one let through.

The moment

When it catches what others missed, recovers from something going wrong, or defends a decision when questioned.

Open the demo video here. A pass looks fine on the Overview globe, then the claim escalates. System 1 isn't sure; System 2 cites the real sources; Cedar refuses to auto-pay. A human decides. That decision joins the labeled set. Over the weekend the rulebook moves from v4 to v6: escalations drop from 3,406 to 1,660, precision holds or rises, and Break It shows the new policy catching inflated claims, fake storms, and an insider limit-raise that the old policy missed.

Catch. Fake space-weather excuses and forged station logs that would fool a tired analyst fail Cedar + source checks.

Recover. A bad auto-path doesn't ship: low confidence and missing rule coverage escalate instead of guessing.

Defend. Click any decision and you get SHAP drivers, System 2 citations, and the Cedar statement that allowed or blocked it, the controller's "why did we pay this?" answered in one screen.

SpacetimeDB

SpacetimeDB is not a cache in front of our app, it is the app's system of record.

Passes, claims, decisions, ledger entries, policy versions, and the simulation clock all live in SpacetimeDB tables on Maincloud. The frontend subscribes with the official SDK; when a claim is decided or a policy is promoted, Overview, Decisions, Policies, Finance, and Break It update together with no polling. Revenue, credits, recoveries, and escalation counts are derived from those same tables, so the finance numbers and the operational pipeline cannot drift.

What only SpacetimeDB made easy in a weekend:

  • One live world for the whole company simulation, not REST stubs glued to a separate DB.
  • Reducers as the control plane: the AI proposes; Cedar-checked reducers decide what actually commits; humans promote policies through the same path.
  • Append-only ledger + audit log that every screen reads, so a credit that hits Finance is the same credit that left Decisions.

That real-time agreement is the difference between a demo that tells a story and a demo that is the books.

SpaceX

Space gives you more to work with than almost any other field, we used it.

Real space data in. CelesTrak general perturbations + SGP4 drive the Overview globe. A focused set of ~10–15 Starlink satellites carry a distinct SpaceX/Starlink marker (not the full constellation), beside KSAT-style ground stations and a severity-colored storm band. Every dot is a pass someone will be billed for.

Legendary product out. Ground Truth turns that orbital layer into a finance system: dispute intake, dual-speed AI, Cedar policy learning with replay, a red-team harness, and a live earnings/ledger view tied to the same clock. Built end-to-end with Cursor (cloud agents + local) and Grok Bot for planning, demo scripting, branding, and Devpost media, the SpaceXSI eligibility path, used heavily.

What's next for Ground Truth

  • ERP integration: real ERP connectors, sync-status per row, and richer audit on each push.
  • More live data: real space-weather feeds and operator maintenance calendars in place of simulated inputs, plus more satellite constellations, including Starlink, on the globe.
  • Per-customer contract parsing, so System 2 reads each customer's actual SLA terms.
  • Pilot conversations with ground-station operators to test against real dispute history.
  • Generalizing the pattern: any usage-billed infrastructure with SLA credits (telecom, cloud, energy) has the same dispute problem.

Built With

Share this project:

Updates

Submission history