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

—
Range

—

Demo data

—

—

Overview

—

Reports

—

Contributors

—

Location coverage

—

With media

—

With address

—

Likes

—

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.

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

    —

    Drawn layers
      Low High report density Hotspot — size is reports, colour is top category
      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 —

            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.

                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.