Skip to content

About

Earn for waiting: Pays commuters to skip crowded trains, checks they actually moved, settled with x402 on Base.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CrowdShift

CrowdShift


Earn for waiting. The market that pays commuters to miss the crush.

live demo LTA DataMall settlement tests demo checks one person company

The 8:15 train is crushed. The 8:45 has empty seats. CrowdShift pays the exact commuters whose 10 to 15 minute delay clears the overloaded stretch, verifies that each one actually moved, and settles the payout automatically. An event operator or a transit authority funds one crowded window, because they are the ones already paying for that crush. CrowdShift charges a campaign fee plus 5% of verified payouts. One founder sells and configures the campaign. Software agents run it. A human approves every commitment.

📊 Pitch deck: 11 slides, PDF + PPTX · 👤 Solo builder: @Iamsohungrynow

On the live site, the landing page, the live crowd feed, the market and the clearing engine all run in your browser. Verification and payment need the local API, and the page says so rather than faking an exchange it cannot perform.

Built for BUIDL_OPC_Hackathon_SG. Theme: One Person Companies through Agentic Services, where human judgment guides AI execution.


The problem

Singapore already pays commuters to travel off peak, and it works. LTA reported in March 2026 that 8% of North East Line commuters shifted out of the morning peak, freeing capacity equivalent to two trains. The Ministry of Transport put the cost of the nationwide Morning Pre-Peak Fares discount at about S$40 million per year in 2023.

The budget is real. The targeting is not. Blanket rewards pay everyone who travels off peak, whether or not their trip helped, cannot aim at one overloaded segment, and never verify that a specific paid-for shift happened.

CrowdShift asks a narrower question: can one operator procure the cheapest set of voluntary, verified shifts for a specific cohort, corridor and window, and earn revenue only when a shift verifies?

How it works

  1. Signal. A live LTA DataMall feed opens a relief window on one corridor. Every value on screen is labelled LIVE, CACHED or DEMO.
  2. Deal. A commuter picks a later train and a minimum price. The private reason stays on the device. A P-256 key generated in the browser signs the limits and the payout address.
  3. Clearing. Integer-cent dynamic programming computes the exact minimum-cost set of shifts that reaches the target inside the funding cap. No profile, story or language model enters the calculation.
  4. Approval. The market proposes one shift. The commuter approves it. Nothing moves without that click.
  5. Proof, then payment. The completed shift is attested, the pool agent receives HTTP 402, pays the signed payout address over x402, and receives HTTP 200 plus a receipt.

Full sequence and trust boundaries: docs/ARCHITECTURE.md.

Who pays

The test for a buyer is simple: do they pay for this crush today?

Buyer Already spending on it? Status
Event operator (stadium, expo, concert) Yes. Crowd control staff, extra shuttles, egress-time targets. The wedge. One decision maker, a dated problem, a result visible that night.
Transit authority and operators Yes. The S$40M a year above. The real budget, at procurement speed. Expansion, never a launch dependency.
Large employer or business park Perhaps. They fund shuttles from the station and run staggered-hours policies with no enforcement and no proof. A hypothesis, not a claim. Unvalidated.

Schools and campuses are not on this list. They do not own the trains and carry no cost when their people are crushed at 08:15, so they have no reason to buy.

Line In the demo campaign
Incentive pool S$24, capped at 60¢ from each of 40 riders
Cheapest valid set bought Exact minimum-cost procurement across 100 offers
Campaign fee to CrowdShift S$50, billed to the sponsor
Success fee to CrowdShift 5% of the verified payout. A S$0.74 reward yields S$0.04
Operator revenue recorded S$50.04, separate from the pool and from rewards

Commuter rewards and the incentive pool are never CrowdShift revenue. The demo also shows an optional bounded co-funding mechanism, where 40 urgent riders authorise at most 60¢ each and are charged only the verified clearing cost, with every unused cent released. Pricing is a hypothesis until a pilot buyer validates it.

Why one person can run it

The founder sells the campaign, sets the corridor, funding cap and approved attestation partner, and handles exceptions. Six software agent roles do the repeat work:

Agent Job
Signal Ingests and labels the crowd forecast
Commuter Filters campaigns against owner-signed limits
Pool Enforces bounded maximum contributions
Clearing Computes and explains the exact winning set
Settlement Buys only an attested proof, prevents duplicate payment
Reporting Produces the auditable campaign record

Agentive does not mean an LLM is trusted with money. Eligibility, prices, signatures, allocation and settlement are ordinary deterministic code. The submitted build contains no runtime LLM call. Every commitment passes through an explicit human approval gate.

What is real, and what is simulated

This is the credibility section. Nothing below is decorated.

Real and verifiable Explicitly simulated
Live LTA DataMall forecast and realtime adapter, with LIVE → CACHED → DEMO degradation The trip attestation. A signed simulator stands in for an operator or employer attestor
Browser P-256 session key. The same fingerprint shown at sign-in signs the mandate The 100 flexible offers and 40 urgent authorisations. Deterministic synthetic fixtures
Signed mandate binds campaign, expiry, limits, key fingerprint and payout address. Tampering fails verification Projected relief. A scenario target, not a measured congestion outcome
Exact minimum-cost pay-as-bid procurement, integer-cent dynamic programming, with a per-offer decision record Demo-credit settlement. Cryptographically signed, idempotent, and valueless
Proof-gated x402: 409 → 402 → PAYMENT-SIGNATURE → 200, idempotent receipts The S$50 campaign fee and 5% success fee ledger. A business-model view, never sent onchain
One funded Base Sepolia settlement: 0.001 test USDC, public receipt
17 passing tests, 7 of 7 automated demo-flow checks

No real commuter data is used. No measured congestion reduction is claimed. LTA DataMall is a registered public data source, not a partnership or endorsement.

Positioning

Alternative What it does What CrowdShift does differently
Fixed off-peak rewards, such as LTA Travel Smart Offers a set reward to every eligible commuter Procures a bounded, corridor-specific, minimum-cost set. Complementary to a public scheme, not a replacement
Journey and crowd-information apps Tell people when it is busy Turns private willingness into an authorised, verified, paid commitment
Employer staggered-hours programmes Coordinate by policy and email Automates limits, selection, proof, payout and audit

Defensibility today is a hypothesis, not a moat. What compounds: verified cost and elasticity data that only a verifying operator can collect, trusted attestation integrations with cohort operators, and settlement audit history. The clearing code is a weekend. The attestation partnerships are a year.

Honest limitations

  • No pilot yet. Synthetic agents are test fixtures, not traction.
  • Pricing is unvalidated. The campaign fee and 5% rate are a hypothesis.
  • Revocation is session-local. Production needs a durable revocation registry or a passkey and wallet identity.
  • Attestation needs a partner. No public developer API exposes an individual's transit journey. A first pilot requires an event operator or an employer to act as a privacy-minimised arrival attestor. See docs/DATA_SOURCES.md.

Run it locally

Requirements: Node.js 20+ and pnpm 10+.

pnpm install
pnpm dev                 # app on :4173, private API on 127.0.0.1:4174
pnpm test                # 17 unit and integration tests
pnpm build
pnpm demo:check          # 7 end-to-end demo-flow checks, while pnpm dev runs
pnpm start               # serve the production build and API from one origin

Live LTA data and onchain settlement are optional. Without keys the app runs on a labelled fallback and valueless demo credits.

LTA_DATAMALL_ACCOUNT_KEY=
CROWDSHIFT_DATA_MODE=demo

X402_FACILITATOR_URL=https://x402.org/facilitator
X402_EVM_PAY_TO=
X402_BUYER_PRIVATE_KEY=

Secrets stay server-side. Never place them in a VITE_* variable. Never use a production key.

Roadmap

Date Gate Evidence required
Jul 2026 Problem validation 10 commuter interviews, 3 buyer interviews, signed pilot hypothesis
Aug 2026 No-money shadow pilot One closed cohort, holdout design, acceptance and revocation metrics
Sep to Oct 2026 Prefunded supervised pilot Approved attestor, bounded sponsor pool, zero duplicate payouts
Nov to Dec 2026 First paid repeat customer Three repeat campaigns, measured cost per incremental shift, one paying repeat customer
Q1 2027 Paid OPC service scales Second and third site, documented support workload

3-month gate: a funded, supervised pilot with a real attestor. End of 2026: one paying repeat customer and a measured cost per shift.

Detailed plan: docs/IMPLEMENTATION_PLAN.md.

Where this goes next

Transit is the beachhead, not the ceiling. The reusable sequence is: observe a congested resource, collect signed flexibility, clear the cheapest valid set, verify, settle, charge the fee. Adjacent markets already fund this behaviour. Singapore had 30,500 EV charging points by March 2026 and targets 60,000 by 2030. EMA reported 166 MW of registered demand-response capacity. Each new domain still needs its own signal, policy schema and trusted proof. CrowdShift only enters a resource when the peak is costly and recurring, the sponsor repeats, and the shift is machine verifiable.

Repository

src/domain/      identity, mandate signing, exact procurement, fee ledger, policy
src/components/  landing, key ceremony, departure board, clearing room
server/          validated API, LTA adapter, signed simulation, x402 integration
docs/            architecture, data sources, plan, pitch, demo script, evidence

Evidence and references

Disclosure

Technical validation and commercial validation are separate, and this repository says which is which. Commuter cohorts and trip attestation are synthetic. Target coverage is modelled. Base Sepolia uses valueless test assets.

AI coding assistants, including Claude Code and OpenAI Codex, were used for research, implementation, UI iteration, tests and documentation. They are tooling, not team members and not runtime operators.

The submitted snapshot includes work created before the public 11:00 SGT hackathon start. It is not represented as having been created entirely inside the event window. See build provenance and confirm eligibility with the organiser.

About

Earn for waiting: Pays commuters to skip crowded trains, checks they actually moved, settled with x402 on Base.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages