Sixty Days - a deadline keeper for disaster appeals

A working demonstration · Live on Google Cloud

The letter says no. The clock has already started.

When disaster aid is refused, the letter saying no also starts a 60-day clock. Sixty Days reads that letter, works out which documents are needed and who holds each one, and keeps track of the time left.

In plain terms

The problem. A letter arrives saying some help was refused. It explains why, in formal language, and gives you 60 days to challenge it. The papers you need are held by other people: an insurer, a contractor, a records office. Meanwhile your home is damaged.

What this does. It reads the letter and pulls out the exact reasons, in the letter's own words. It lists what you need and who to ask. It writes the request letters for you to check and send. It watches the calendar and comes back on its own to tell you what is still missing.

What it will not do. It never sends anything for you, and never contacts your insurer or any agency. This is not legal advice: it cannot tell you whether you will win. Every message leaves your hands only when you decide to send it.

Everything on this page is made up for the demonstration. No real person's letter, photo, or details are used.

Synthetic data only Applicant sends every request No submission endpoint

The human problem

The deadline is simple. Finding the paperwork is not.

A decision letter can ask for records held by several different people while the applicant is still recovering from the disaster.

4.4 millionapplicants referred to the Individuals and Households Program, 2016-2018 [1]
~1.7 millionwere determined ineligible in that period; failure to submit supporting evidence was among the common reasons [1]
60 daysfrom the date on the decision letter to appeal, and the letter names what is missing [2]
20 of 20letter fields extracted correctly across four real Gemini 3.5 calls, measured against ground truth [3]

These describe the documented population and process, not a predicted outcome for any applicant. This product does not estimate eligibility, appeal success, or how many people would benefit.

One letter, several jobs

The reason, the documents asked for, and the date are all buried in formal wording. Read the reason wrong and you gather the wrong papers.

The papers are held by other people

Proof of ownership, of living there, of insurance, of damage: each may sit with a different office. You still have to ask for every one of them, and send them yourself.

The clock keeps moving

Sixty Days sets every reminder the moment the case opens, then keeps saying plainly what is still missing rather than pretending a half-finished draft is finished.

Who this is for: a disaster survivor managing a dense decision letter while rebuilding daily life. No real survivor story or private data is used; every person, letter, and image in this demonstration is synthetic.

Before you use the console

What happens, step by step

It does the organising. You keep every decision. Writing a letter for you is not the same as being allowed to send it.

Step 01 · Understand

Read the letter, word for word

Strip out personal details, then keep only the reasons that appear in the letter itself. Anything it cannot quote, it drops.

Step 02 · Gather

Work out who holds what

Sort what you already have from what someone else must send you. For photos, it only checks whether the picture is clear enough to read.

Step 03 · Track

Write the request, but do not send it

It drafts the letter. You read it and send it. If no reply comes, it checks back before the deadline.

Step 04 · Review

Build a draft that admits what is missing

Produce a PDF you can read and check. It quotes the letter and lists every gap. Nothing is filed anywhere.

Optional first-use briefing

See the applicant boundary before opening a case

Google image and video models preview the workflow: understand the letter, register the clock, organize evidence, and stop for applicant review. The media is never treated as case evidence, placed in a packet, or used to infer eligibility.

Image
Gemini 3.1 Flash Image
Motion
Veo 3.1 Fast
Role
Onboarding only; never case evidence
Inspect prompts, models, and hashes
Abstract letter, calendar checkpoints, camera frame, and unfinished packet.

Interactive proof

Try it yourself

Pick one of the made-up letters and work through the four steps in order. A button stays greyed out until the step before it is done, so you cannot get lost.

  1. UnderstandRead the letter
  2. GatherCheck evidence
  3. TrackPrepare a request
  4. ReviewBuild the draft

Guided run

Clockloading

Checking the real scheduler…

Loading measured Gemini fixture catalogues…

How this works

Guided preset: damage and insurance letter, failed close photo, wider comparison, insurer request, packet, then the deadline reminders. Starting anchors the simulated clock to the selected letter date without deleting stored audit records.

The clock is simulated for demonstration so five weeks fit in one sitting. The reminders themselves are not simulated: the same code runs on the real calendar, woken once a minute by a Cloud Scheduler job. The badge beside this clock is that job reporting in.

Judge evidence
1. UnderstandCurrent

Anchors the labelled simulation clock to this letter’s date. No stored case or audit record is deleted.

2. GatherUpcoming

Observable framing and legibility only. Never authenticity, damage value, or agency acceptance.

3. TrackUpcoming

Prepared for the applicant to review and send. The service has no send route.

4. ReviewUpcoming

The packet stays visibly partial. Missing items are listed, never converted into confidence.

No packet built.
Advance the simulated clock
On the real clock

Nothing on this page runs it. Cloud Scheduler claims it — close the tab and it still fires.

Is the model really there?

The demo replays a recorded call so judging is repeatable. This one goes to Gemini 3.5 Flash live, scored against the same truth file.

Checking today’s allowance…

Source documents

Stage 1 input Decision letter

No letter selected yet.

Select a letter to preview it.

Stage 2 input Evidence photo

No photo selected yet.

Select a photo to preview it.

Every letter, photograph, name, address, and case reference in this demonstration is synthetic. No real applicant data is used.

Agent activity

A live audit trail: which role acted, and why.

system Open a synthetic case to begin.
No earlier steps yet

Case plan

Quoted reasons and routed evidence, from the letter itself.

No case open.

Use it beyond the demo

An applicant-controlled API, explained before credentials.

The public case needs no key at all. Building an integration? Create your own seven-day API key or inspect the API docs.

The public synthetic case is the fastest evaluation path. The API is an optional deidentified beta that anyone evaluating this project can open for themselves.

No credentials

Evaluate publicly

Open a synthetic letter, inspect exact reason quotes, prepare a request, and build a visibly incomplete packet.

Run the public demo
Self-serve access

Create a seven-day key

Name a workspace and mint your own key. No invitation, no account, and no approval step; the key sets the tenant and scope.

Open Developer quickstart
Exact contract

Read the API docs

Use the interactive schema to authorize with X-API-Key and inspect case, request, packet, and deadline operations.

Browse API docs

API boundary: synthetic or deliberately deidentified letters only. It prepares and tracks drafts but never contacts, sends, files, or submits.

What it will not do

No legal or eligibility decision

It organizes quoted reasons and evidence tasks. It does not determine eligibility, predict acceptance, or replace legal advice.

No autonomous contact

Requests are prepared with blanks for the you to read and send. It has no way to contact anyone, send anything, or file anything: there is no submission endpoint anywhere in the service.

No evidence authentication

Photo checks cover observable framing only. Ready for your review never means genuine, sufficient, approved, or accepted.

The PDF is a draft. It is optional, not an agency form, not submitted, and intentionally keeps every missing item visible.

What this build proves

Quoted, not guessed

A reason is discarded unless its exact words occur in the transcription. Four recorded Gemini calls scored 20/20 extraction fields.

Screened, not adjudicated

Two recorded image calls scored 6/6 observable checks. The only outcomes are ready for applicant review, retake, or manual review-never “FEMA will accept this.”

Prepared, not sent

A utility or insurer request is drafted with blanks and tracked against the deadline. The applicant reviews and sends it; the service has no send route.

Grounded draft PDF

Every system-authored decision statement reproduces an exact letter quote. Missing evidence remains visibly listed in a partial packet.

Privacy by omission

Raw letters, photo bytes, transcriptions, and the applicant’s free-text statement are not persisted in the case record.

Every reminder is set up front

Day 3 through day 58 reminders are set the moment the case opens. A shorter printed deadline moves the draft and final alert safeguards earlier.

As-built architecture

How it is built, and where the state lives

One Cloud Run service coordinates modular roles. Firestore stores structured cases and reminders. Raw letters, photo files, and anything you type are deliberately not kept.

InputsSynthetic letter and evidence Recorded Gemini outputs with adjacent ground truth
Cloud Run · sixty-days Read, plan, schedule, screen, prepare, verify GenAI SDK, a small set of routes, and shared code that survives restarts
What is keptFirestore and Cloud Trace Cases, reminders, request status, draft details, and an audit trail

What wakes it

Cloud Run scales to zero, so with nobody on this page there is no process running. A Cloud Scheduler job, sixty-days-wake-scan, is the only reason a sleeping agent ever wakes. Once a minute, on the real calendar, it calls one internal route on this service with a Google-signed token scoped to this service alone; an anonymous caller cannot drive it.

Each scan asks Firestore for reminders whose time has arrived and claims each one in a transaction, so two overlapping scans cannot fire the same reminder twice and a reminder left behind by a worker that died is picked up by the next one. A claimed reminder becomes a case action — follow up, change the approach, build a partial packet, stop — recorded once, and signed with the revision that ran it. It never contacts anyone, sends, or submits.

It also records a heartbeat on scans that find nothing to do, which is what makes the scheduler status honest rather than only visible on the days something happened.

Gemini 3.5 Flash and Gemma 4 MaaS are served from Vertex AI's global endpoint. Real direct identifiers from the transcribed letter are removed before structured downstream persistence. The API accepts only explicit DEMO-* and DR-DEMO* packet references. Storage and compute are pinned to us-central1; model inference is not described as regional.

Research basis and limits

Deadline and supporting documents

FEMA’s current Individual Assistance quick reference says appeals must be submitted within 60 days of the decision-letter date and lists supporting documents such as receipts, bills, estimates, titles, and deeds.

Source: FEMA Individual Assistance appeals quick reference

The letter controls the ask

FEMA advises applicants to read the decision letter for the reason and requested documentation. Examples include insurance records, occupancy documents, and ownership records.

Source: FEMA, 8 Tips for Appealing FEMA’s Decision

Historical friction, not a product promise

GAO reported that common historical ineligibility reasons included insufficient damage and failure to provide supporting evidence. This motivates the workflow; it does not predict any applicant’s outcome.

Source: GAO-20-503

Evidence routes are source-specific

FEMA lists multiple ownership and occupancy records, while its insurance guide distinguishes settlement, denial, and proof of excluded or absent coverage. Sixty Days now routes those alternatives explicitly and treats photos as optional context, not proof of sufficiency.

Source: FEMA ownership and occupancy fact sheet
Source: FEMA insurance quick reference

Important: FEMA says supporting documents may be sent without a separate appeal letter or form. The generated PDF is therefore an optional organizing draft for applicant review, not a required agency form. A current FEMA IHP explainer also instructs applicants to put their application and disaster numbers on every submitted page, so this PDF repeats synthetic references in every footer for the applicant to verify. Source: FEMA IHP application, eligibility, registration, and appeals.

Questions a sceptic would ask

Does this file an appeal for me?

No. It has no way to file anything with anyone. It prepares a reviewable draft and the applicant controls every external action.

Does ready for review mean FEMA will accept the photo?

No. It means only that requested observable features are visible. Authenticity, sufficiency, and agency acceptance are outside this system's scope.

Why use a simulated clock?

The demonstration compresses weeks into minutes. The same reminder code runs on the real calendar in production; the page labels every simulated advance.

Where does AI make a decision?

Gemini transcribes synthetic documents and reports observable image features. Deterministic code verifies exact quotes, works out which documents are needed, sets the reminders, and keeps every gap visible.

Is any real survivor information used?

No. The fixtures are synthetic and unbranded. The persistence layer omits raw text, image bytes, real names, addresses, registration references, and applicant narrative; the API accepts only explicit demo-prefixed packet references.

How can a judge verify the rules?

The conformance report maps each public rule to an official source, implementation path, and passing test.