City of Southlake · Finance

Southlake AI Platform — User Guide

An AI-assisted platform for the Finance department. Its core is P-Card Transaction Review, which scores every purchasing-card transaction for risk, explains each flag in plain English, and gives reviewers a prioritized queue and dashboards — plus a Knowledge Assistant and the Agenda-AI demo.

Applies to the current build · Access requires a City sign-in.

Introduction

Instead of a line-by-line manual pass over 1,000+ card transactions each month, the platform scores every transaction 0–100 for risk, buckets them into tiers, and explains exactly which policy each one may have tripped. Reviewers work the small, high-risk minority first.

Every transaction lands in one of four tiers:

  • High score ≥ 40 — review first.
  • Medium 20–39 — review after High.
  • Low 1–19 — minor flags, spot-check.
  • Clear 0 — no flags.
Good to know
The score is the capped sum of weighted rule hits. Thresholds, weights, and merchant-category lists are all configurable in Settings — change one and re-score on demand.

Signing in

The whole platform is behind sign-in — no feature is reachable until you authenticate.

  1. Open the platform URL. You'll see the Southlake welcome screen.
  2. Click Continue with Microsoft and sign in with your City (Entra ID) account.
  3. A brief "Signing you in…" screen appears, then the platform opens.

Your role is assigned automatically on sign-in:

  • Employee — the default; can use all review and tool features.
  • Admin — additionally sees Users and Roles & Permissions. Admins are seeded from a configured list of emails, then can promote others in the app.

Use Sign out (top-right) to end your session. If you were promoted to Admin while signed in, sign out and back in to refresh your access.

The interface

Navigation lives in the left sidebar, grouped into three areas:

GroupMenus
ReviewUpload · Overview · Review Queue · Cardholders & Vendors · Trends
ToolsKnowledge Assistant · Demo 1
AdministrationUsers · Roles & Permissions · Settings (Users/Roles are admin-only)

The top bar holds the current dataset Month selector, your user chip / Sign out, and a light/dark theme toggle. Each page shows a short loading spinner while its data fetches.

The monthly workflow

The intended routine each month:

  1. Go to Upload, add the month's Munis export (and optionally the bank import), and click Ingest & Score.
  2. Open Overview to read the executive summary and see where the risk is.
  3. Work the Review Queue top-down (High first). Open each row, read the flags, and set a disposition with notes.
  4. Use Cardholders & Vendors and Trends for the big picture.
  5. Download the Excel workbook and PDF report.

Upload & Score

The entry point for a new month.

  • Munis export (required) — the primary review dataset (cardholder, department, GL coding, amounts, dates).
  • Bank import (optional) — used only for the "card-not-in-feed" reconciliation check.

Drop in the file(s), optionally set a statement label, and click Ingest & Score. The engine normalizes the data, collapses multi-line GL allocations to one transaction, runs all scoring rules, and stores the scored month. The Loaded months list below lets you switch months or download exports.

Tip
Each monthly pair is ingested fresh. To use real reconciliation, load a matched bank + Munis pair from the same cycle; otherwise the card-not-in-feed check is treated as informational.

Overview dashboard

A one-glance picture of the selected month:

  • Executive AI summary — a plain-English paragraph plus headline stats (how many need attention, top-3 cardholder share, largest exception source, estimated review reduction).
  • KPI tiles — transactions, total spend, High / Medium / Clear counts, high-risk dollars.
  • Charts — Risk tiers (donut), Flags by policy area, Average score by department, and dollars by flag.

Use the Month selector in the top bar to switch which loaded month the dashboard reflects.

Review Queue

The working list of transactions, sorted by risk. Two views (top-left toggle):

  • Transactions — every transaction as a sortable row.
  • Investigation Cases — related transactions grouped into cases (e.g. a suspected split).

Filtering & sorting

Filter by tier, flag, department, and status, or type in the search box (vendor / cardholder / transaction id). Click any column header to sort.

Reviewing a transaction

  1. Click a row to open the detail drawer.
  2. Read every flag: the policy area, the exact values that tripped it, and a suggested follow-up question for the cardholder.
  3. Set a disposition and add notes:
    • Approved — reviewed, no issue.
    • Needs Follow-up — awaiting an answer or receipt.
    • Violation — confirmed policy breach.

Dispositions and notes are saved and persist across sessions and re-scoring.

Bulk actions

Tick the checkboxes on multiple rows to reveal the bulk bar, choose a status and reviewer, and Apply to selected to disposition many transactions at once.

Cardholders & Vendors

Aggregated views that roll transactions up per cardholder, vendor, and department — spend, average and max score, High/Medium counts, clean rate, and a composite risk index. Use these to spot patterns that a single-transaction view misses (e.g. one cardholder driving most of the risk).

Exports

From the Upload tab's month list (or the month menu) you can download:

  • Excel — a scored workbook (multiple sheets: transactions, aggregates, flags, and more).
  • PDF — a branded executive report for sharing with leadership.

Exports reflect the current scores and dispositions for the selected month.

Knowledge Assistant

Ask plain-language questions about City zoning, permitted uses, permits, fees, and ordinances. The assistant retrieves from connected City sources and answers with citations and a confidence label — and it will decline rather than guess when the sources don't cover a question.

Tip · property lookups
Include a full street address (e.g. "permitted uses for 1125 Davis Boulevard"). Both spelled-out and abbreviated street types (Boulevard / Blvd) are understood.
Note
For real decisions, confirm with the relevant City department — the assistant is a research aid, not the system of record.

Demo 1 · Southlake Agenda AI

An embedded demonstration of the Agenda Management process — a 5-stage pipeline that turns raw case materials into City documents. Open it from the sidebar; work the stages in order from its own left rail:

  1. Case Intake — extract a structured case record from the scanned application + EnerGov screenshots. Low-confidence fields are flagged for staff review, never guessed.
  2. Public Notices — generate the newspaper Legal Notice and the property-owner postcard in the City's formats.
  3. Staff Report — draft the P&Z staff report in the department template, including a geocoded vicinity map.
  4. Council Agenda — parse the Smartsheet export and render the meeting agenda (Draft 1 / Notes / Final).
  5. Meeting RESULTS — transcribe the recording, extract per-item actions with timestamped citations, and — after you review and approve each annotation — finalize the RESULTS agenda and meeting summary.

Leave an upload slot empty to use the packaged sample. Generated documents can be downloaded from each stage.

Users · admin only

Lists every account with name, email, permission count, last login, and join date. To change someone's access, pick a role from the Role dropdown on their row — it saves immediately. Use the search box to find a user by name or email.

Roles & Permissions · admin only

Shows what each role can do:

  • Role cards — each role with its description and the list of permissions it grants.
  • Permission matrix — every feature : action permission with a ✓ / – per role, so you can see at a glance what each role allows.

Permissions follow a feature:action pattern (e.g. users:write, analytics:read).

Settings

The policy control panel. Every scoring knob is editable here:

  • Thresholds — single-purchase limit, large-purchase threshold, threshold-hug fraction, velocity, windows for split/duplicate/credit matching, and more.
  • Rule weights — the points each rule contributes. Set a weight to 0 to keep a flag visible in explanations without affecting the score.
  • MCC lists — high-risk and watch-list merchant category codes.

Save your changes, then re-score the current month or all months. Because raw fields are stored, re-scoring never requires re-uploading.

Care
Changing weights and thresholds changes everyone's scores and tiers. Confirm policy values with Finance before applying them across all months.

Scoring rules reference

The engine applies these rules; the score is the capped, weighted sum of the ones that hit. All values are the defaults and are configurable in Settings.

RuleWtPolicy areaFires when…
SPLIT25Split PurchasesSame card+vendor within 1 day, combined > $3,000
DUPLICATE20Duplicate TransactionsSame card+vendor+amount within 3 days
OVER_LIMIT20Spending LimitsSingle charge > $3,000
HIGH_RISK_MCC20Prohibited / High-Risk MerchantsMerchant category on the high-risk list
CAPITAL_ASSET20Prohibited PurchasesAllocated to a project/CIP fund (prohibited on P-Card)
THRESHOLD15Threshold AvoidanceCharge in 90–100% of the limit
MISSING_DESC12DocumentationDescription missing / under 5 characters
CREDIT_UNMATCHED12Credits & RefundsCredit with no prior covering charge
LARGE_AMOUNT10Spending LimitsCharge > $25,000 (written bids) / > $50,000 (sealed bid)
DEFAULT_GL10GL CodingClearing GL code after reconciliation
VELOCITY10Spending PatternsMore than 5 charges on one card in one day
WATCH_MCC8Personal-Use MerchantsMerchant category on the watch list
VENDOR_REPEAT8Spending Patterns8+ charges to one vendor on a card
ROUND_REPEAT8Fraud IndicatorsRound-$100 ≥ $200 by a cardholder with 3+ such
WEEKEND5AnomaliesCharged on a Saturday or Sunday
CARD_NOT_IN_FEED5ReconciliationCard in Munis but absent from the bank import
CREDIT_MATCHED3Credits & RefundsCredit matching a prior purchase

FAQ & troubleshooting

I don't see Users or Roles & Permissions.

Those are admin-only. Ask an existing admin to change your role in Users, then sign out and back in.

I changed weights but scores look the same.

Save the settings, then run re-score (current month or all months). Scores only update after a re-score.

The card-not-in-feed check seems off.

It's reliable only when the bank import and Munis export are from the same cycle. With mismatched cycles it's treated as informational.

The Knowledge Assistant said it couldn't answer.

It declines when the connected sources don't cover the question, rather than guessing. Try adding a full address or rephrasing; confirm specifics with the relevant City department.

Nothing shows on Overview / Trends.

Make sure a month is loaded (Upload → Ingest & Score) and selected in the top-bar Month picker. Month-over-month trends need 2+ loaded months.