Skip to content

Restoring your session…

Repin city analytics

Sign in

For municipal analyst accounts. This is a separate realm from the Repin mobile app — app credentials do not work here.

The session survives a page reload. Only a refresh token is kept, in this browser, under repin.analytics.refresh.

Repin city analytics

— Analyst tools and reasoning on
Range

—

Demo data

—

—

Overview

—

Reports

—

Contributors

—

Location coverage

—

With media

—

With address

—

Likes

—

Where these numbers come from

A rise in reports can mean more citizens reporting, not more incidents. Deltas are shown without a good/bad colour on purpose — read them with the trend and the alerts.

What needs doing

—

    The highest-severity findings in this period, in the words an officer would use. Every number here can be checked in Advanced, and every card links to the place it is about.

    Reports over time

    —

    Categories

    —

    Signals

    —

    What needs attention now

    —

    Min severity

      The ranked union of anomalies, changepoints, emerging clusters and forecast breaches. Every explanation is generated from the evidence underneath it — no number appears in the sentence that is not in the evidence.

      Map

      —

      Layers

      —

      Click the map to ask about a place, correlate there, or drop a pin. Agent findings stay on the map, labelled — cyan marks are the assistant's work.

      —

      —

      Drawn layers
        Agent findings

        Each finding stays until you remove it. Cyan labels are agent work; the drawn layers above are your imported geographies.

          Low High report density Hotspot — size is reports, colour is top category
          3D city Buildings — height in metres from OpenStreetMap. Darkest is a tagged height; mid is derived from building:levels; palest is estimated from the stated default (untagged in OSM). Data columns — height is report density; colour is density too (same ramp as the 2D heat grid).

          The heat grid, hotspots, density clusters and drawn GeoJSON are 2D layers and are not drawn in 3D. Switch back to 2D for those.

          Cluster lifecycle Emerging Persistent Cooling —

          Themes

          —

          What people are talking about

          —

            Terms are TF-IDF weighted against the whole filtered corpus, so a term that is common everywhere ranks below one that is distinctive here. Terms shorter than three characters and stopwords are excluded. Click a sample to read the full report text.

            Mentions

            —

              Rule-based extraction of UK postcodes, street names, organisations, dates and quantities from report text. Nothing leaves the API — no external NLP service.

              Forecast

              —

              Expected report volume

              —

              Expected report volume for planning — a council can staff a crew, order a skip or schedule work from it. The shaded band is the 80% interval from residual variance; MAPE is the holdout error over the last horizon days. This is not a prediction about people or places.

              Trends

              —

              This period vs the preceding period

              —

              Reports now

              —

              Reports in the previous window

              —

              Change

              —

              Contributors now

              —

              Reports over time

              —

              When reports happen

              —

              Areas

              —

              Cities ranked

              —

              Reports per city for the selected period
              City Top category Coverage

              Reports without a city name are grouped as “Unknown” and always sorted last. Click a row to filter the dashboard to that city.

              Alerts

              —

              What needs attention now

              —

                Alerts compare the last 7 days with the per-7-day average of the baseline window, so the two sides are like for like. Only groups with at least the minimum number of recent reports and a ratio of 1.5× or more appear. The date range does not apply here — city and category filters do.

                Analyses

                —

                Anomalies

                —

                Areas and categories reporting more than their own trailing baseline
                Area Category Recent Expected Ratio Method Severity

                Recent counts are compared with the same area × category's own trailing baseline. The method column is the honest part: Poisson is the tail test for rare counts (baseline rate < 5 per window), robust z is median/absolute-deviation for normal counts, so a single blip cannot look like a surge at low volume.

                Change points

                —

                Best single split on each area × category daily series
                Area Category Date Before → after Magnitude Direction

                The best single split (SSE minimisation) on each daily series — “when did this structurally change?”, not “is this a spike?”. Values are daily means either side of the split date.

                Correlations

                —

                Category pairs

                Categories that co-occur more than chance in the same area-week
                Pair Lift Co-occurrences Areas

                External data

                Correlations between report volume and cached external observations
                Dataset Variable r p n Direction

                Lift is how much more often a pair appears together than chance. External correlations are Pearson against the cached open-data series; a direction is only shown when it is positive or negative — a coefficient that rounds to zero is omitted by the API rather than called “none”.

                Media

                —

                Media items by format
                Format Items Bytes

                EXIF note —

                Evidence

                Composite scores with the working shown — every component, its coverage, and what changes if you drop it.

                Analysis. This view assembles evidence and trade-offs. The score is a weighted index you define; the table shows where every number came from, what the data does not cover, and how fragile the ranking is. It is material to weigh, not a recommendation.

                Composite score

                —

                Components and weights
                —

                Method: min–max normalised per metric within the current filter, weighted, then scaled 0–100. Expand a row to see each component's raw value, its normalised value and its weighted contribution — and whether they add up to the score.

                Areas ranked by the weighted composite score, with expandable contributions
                Rank Area Score Contributions

                Sensitivity

                —

                  Each component is dropped in turn and the ranking recomputed. If the top area changes, the ranking depends on that component and is reported as decisive.

                  Coverage

                  —

                  How many areas have data for each component metric
                  Metric Areas with data Areas missing Coverage

                  A metric missing for half the areas must look like that. Missing is never scored as zero; scores that lean on a partial metric are marked here.

                  Site report

                  Assemble the evidence for a question.

                  The report gathers what the data shows, what it does not, and which datasets would close each gap — with a link to discovery search for every missing piece.

                  Tasks

                  Work orders committed by a person. The assistant drafts; nothing appears here until someone confirms it.

                  Work orders

                  —

                    Every task here was confirmed by a person and recorded in the audit trail. The agent can draft a work order, but it can never create one.

                    Workbench

                    Query the read-only sandbox, or run Python in your browser. Nothing here runs on the server.

                    Sandbox SQL

                    Read-only. The sandbox can see aggregates over reports, media and cached open data — never contributor identities.

                    The statement is mirrored in the URL, so a query can be shared. Results are capped by the API and a truncation notice appears when the cap is hit.

                    Relations

                    Loading schema…

                    Click a relation name to insert it at the cursor.

                    —

                    Sandbox query result

                    Python

                    Runs entirely in this browser tab. The server never sees your script or its output.

                    Python loads only when you first open this tab. The fetched rows arrive in your script as rows (a list of dicts) and columns.

                    
                                  

                    Figure drawn by the Python script
                    Matplotlib figure — rendered from a PNG your browser produced.

                    Pyodide and matplotlib are fetched on demand from the URL configured in config.js. If that fails — offline or blocked by CSP — the panel says so and the rest of the dashboard is unaffected. This is the correct sandbox for a hosted product: there is no server-side interpreter to escape from.

                    Data

                    —

                    Dataset browser

                    —

                    Import a dataset from a URL we have not curated. The importer detects CSV, JSON and GeoJSON; GeoJSON geometries are stored so the layer can be drawn and queried.

                      Curated open datasets, with the licence they are published under. Import runs the same ingestion pipeline as any other upload — it is not instant. Preview shows how the importer typed and interpreted each column. Enable/Disable keeps a dataset registered but excludes it from the agent's tool results; it never deletes the data.

                      Find a dataset

                      Real open-data sources, with the licence, the size and whether it can actually be imported.

                      Search to see what is out there. A result carries its warnings — size against the import cap, unknown format, licence restrictions — so a dataset that cannot be imported looks like that before anyone clicks.

                        Sources, in order: the curated catalogue, then data.gov.uk’s CKAN API (keyless). “Check before importing” posts a proposal and persists nothing; the import itself runs only when a person confirms it.

                        Dataset preview

                        —

                        Columns

                        Sample rows

                        Sample rows from the imported dataset

                        —

                        Imported geographies

                        —

                          GeoJSON imports become drawable layers. “Draw on map” adds one to the Map view as a real Leaflet layer — it composes with the heat grid, hotspots and clusters, and the swatch beside each name is its map legend. Dense layers (building footprints) are capped when drawn so the browser stays responsive; the map says when that happens.

                          Demo data

                          —

                          Generates synthetic UK reports containing discoverable patterns — a persistent hotspot, an emerging one, seasonality, weather linkage and a one-off burst. Demo rows are flagged is_demo in the database and never appear in the consumer app. Seeding is an administrator action; the generated patterns are listed when it finishes.

                          Comma-separated city names, or leave blank for the built-in UK set.

                          Seeding…

                          Planted patterns

                            External datasets

                            —

                            Registered external datasets and their observation caches
                            Dataset Source Licence Status Last fetched Observations Variables Actions

                            Observations are fetched on demand and cached locally, so queries never depend on a third party being up. Refresh fetches the cities in scope; concurrent refreshes are refused by an advisory lock.

                            Ontology

                            —

                            Entities

                            Entity types and live counts
                            Type Count Properties

                            Relationships

                            Relationship types and live counts
                            From Type To Count

                            Counts are live for the current filter. The graph is what makes “what is connected to what” answerable — reports to areas, categories, themes, mentions, media and external observations.

                            Open-data export

                            —

                            Small-cell suppression: any area × category × week cell with fewer than minCell reports is withheld and counted as suppressed, so an individual report cannot be identified from the published totals. A higher minCell publishes less but protects more.

                            —

                            Open-data preview, after small-cell suppression
                            Area Category Week Count

                            Repin city analytics reads citizen reports only — no movement or foot-traffic data. All counts exclude deleted posts. Intelligence analyses places, categories and time, never people.

                            Reset agent work

                            —

                            Will be cleared

                              Left untouched