XENTINEL WATCHTOWER · NEW FEATURE
Situation report automation
The daily or weekly situation report is assembled from the same data the map draws on — hazards, incidents, alerts and prices — written in formal Bahasa Indonesia by a locally hosted model, exported as a formatted PDF, and kept so the series stays comparable.
Part of Xentinel Watchtower →
01
01
What it is
A situation report is the running summary an operations room produces on a fixed cadence. The platform generates it from data it already holds, for a national scope or a single province, over the window that matches the report type: the last day for a daily report, the last week for a weekly one.
Reports are generated from the interface and stored, so the series can be read back in order and compared period to period. Each stored report keeps its content, its period and the moment it was generated, and the same report can be reopened later rather than recomputed from a changed database.
- Period — derived from the report type, so a daily and a weekly report always cover a defined window.
- Scope — national, or filtered to one province across every source that carries a location.
- Structure — a fixed section order the model fills, so reports written months apart can be compared line by line.
- Storage — the generated report is kept, so the copy that circulated stays the copy on record.
- Fallback — if the model is unavailable, a deterministic report is assembled from the same context.
02
02
How it is assembled
Before anything is written, the service collects a data context: counts and the largest records from each active source inside the reporting window — earthquake and volcano activity, disaster events with casualty and displacement figures, public-order incidents, air-quality readings, viral events, and events of national scale. The collector runs before any language model is involved, so the report is grounded in figures that exist regardless of what the model does next.
Each source is queried in isolation, so a source that is unavailable thins the report instead of blocking it. The collected context is then handed to a locally hosted model with a fixed prompt: write a formal, concise situation report in Bahasa Indonesia, in a set structure, from these figures.
- Isolation — one failing source degrades the report rather than stopping generation.
- Recency — every query is bounded by the reporting window, so the counts describe a known period.
- Location filters — sources that carry a province are filtered by it, so a regional report is not a national one relabelled.
- Prompt — a fixed instruction, so two runs produce comparable documents.
- Traceability — the collected context is the only material the narrative is written from.
03
03
From context to PDF
The report is produced as structured markdown and rendered on export to a formatted A4 PDF — headings, tables and emphasis preserved — so it can be filed, printed or forwarded without anyone reformatting it first. The PDF is produced on export, which means one stored report can be read in the interface and distributed in a format that survives being printed.
Because the report is stored rather than regenerated on demand, the document distributed in the morning is the document that remains on record afterwards, even as the underlying data continues to change. Anyone who received it can check it later and find the same document rather than a rewritten one.
Every figure in the report comes from a query that ran first; the model writes the narrative, it does not supply the numbers.
04
04
Where it fits
The same collection is used by the report generator, the map and the alerting engine, so a figure quoted in the morning report can be traced back to the layer and the query behind it. That shared source is what keeps the written summary consistent with the screen it describes.
Reports can also be produced for a single province, which lets a regional team hold a report written to the same structure and drawn from the same sources as the national one. The local scope changes the filter, not the method.
- On demand — a report for any supported period can be generated when it is needed, not only on schedule.
- Stored history — generated reports are listed, and can be reopened or removed.
- Provincial scope — the same collector filters every location-aware source down to the province in question.
- Shared inputs — the report reads the data the map renders, so a disputed figure can be checked against its layer.
05
05
What changes for an operations room
A report that took an analyst a large part of the day becomes a job with the same inputs every time. The work moves from assembling the situation to reviewing it: reading the generated draft, checking the figures it cites, and adding the judgement that is not in any database.
That also makes the cadence survivable during a quiet week and a busy one alike. The report arrives whether or not anybody had time to write it, and the written record keeps its shape while the events inside it change.
06
06
Limits and controls
The model writes the narrative, so the usual caution applies: the figures are queried and the wording is generated. The stored report makes that separation checkable, because the numbers can be traced back to the layers that produced them.
Scope is bounded deliberately. A report covers the sources that are active and the window that is defined, and where a source or a period has no data, the report shows the gap rather than filling it with prose.
See a report on your region
Pick a province and a period and we will generate the situation report for it, then walk through how each figure is sourced and how the PDF is produced.