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

    —

    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 —

          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

          —

          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.