Sign in to continue

Ironwood Intelligence Data Ops
Overview
Operations Dashboard
Real-time data platform status. Last refreshed:
Total Listings
in database
View dataset →
Added Today
new records
Added This Week
new records
Cities Covered
active markets
Countries
covered
Active Sources
1
data sources
Price Records
historical entries
Last Ingestion
no run recorded
Data Health Summary
Missing District
records
Missing Price
records
Missing Size
records
Duplicates Detected
estimated
Listings > 90 Days
records
Quick Actions
Common data operations
Platform Status
Supabase · Ironwood Intelligence
Checking connection...
Supabase projectujhqkirhfm...
RegionWest EU (Paris)
EnvironmentSandbox / Test
Recent Activity
Loading activity log...
Data Quality
Data Health Monitor
Automated scan of all datasets for missing fields, duplicates, stale data, and invalid values.
Issue Summary
Last scan: Not yet run
Missing District
Listings with no district / submarket value
Missing Price
Listings with no price or price_per_sqm
Missing Size
Listings with no size_sqm value
Missing Source URL
Listings with no source URL for verification
Duplicate Records
Estimated duplicates based on city + price + size matching
Listings > 90 Days Old
Listings that may be stale and should be re-verified
?
Invalid Property Type
Values not matching approved asset class taxonomy
Records in Review Queue
Records flagged for manual verification
3
Issue Records
Select an issue above to view records
Select an issue type to load records
Data Pipeline
Source Registry
All active data sources. Each source must be registered before data is ingested. Sources are immutable audit references.
Active Sources
Source
Listings
Last Ingestion
Success
🌐
Mubawab.mamubawab.ma · Listing Portal · Morocco · Weekly
listings
last run
98%
success
Data Lineage Schema
Required metadata fields on every raw record
FieldTypeDescriptionRequired
created_attimestamptzRecord creation time (auto)Yes
updated_attimestamptzLast modification time (auto)Yes
source_typetextClassification: Listings-derived / Observed / ModeledYes
source_urltextOriginal URL of listing or documentRecommended
verification_statustextVerified / Unverified / Needs ReviewYes
created_byuuidAdmin user who created/uploaded recordYes
Data Pipeline
Ingestion Job Monitor
Track scraper and data ingestion pipeline execution. All job history is append-only.
Active & Recent Jobs
JobStatusLast RunRecordsErrorsAction
Mubawab Morocco Scraperlistings_raw · Automated
Success
0
Admin Upload (Excel)properties · Manual
Idle
Price Records Uploadprice_records · Manual
Idle
Ingestion Architecture
Data flow: Source → Raw Layer → Derived Layer → Visualization
Source
Mubawab / Excel
Listings portals
Raw Layer
listings_raw
Append-only · Immutable
Derived Layer
Analytics Tables
Medians · Trends · Scores
Viz Layer
Dashboard
Read-only queries
Data Pipeline
Drive Sync
Automated sync from Google Drive to Supabase. One file per country. Each sync replaces only that country's rows — all other countries are untouched.
How Country-Safe Replace Works
Drive Folder
Morocco.xlsx
Multiple cities inside
Step 1: Delete
WHERE country = 'Morocco'
Nigeria, Kenya untouched ✓
Step 2: Insert
All Morocco rows
All cities in one file
Result
Fresh Morocco data
All other countries safe
File naming rule: Your file must be named after the country (e.g. Morocco.xlsx, Nigeria.xlsx). The script reads the filename to know which country's rows to replace. Each file can contain as many cities as you want — Casablanca, Marrakech, Rabat will all be in Morocco.xlsx.
Country Sync Registry
Each country is an independent sync unit
Country Cities Listings Last Sync Status Action
🇲🇦 Morocco
Morocco.xlsx · Auto-sync active
Active
🇳🇬 Nigeria
Nigeria.xlsx · Not yet configured
Pending
🇸🇳 Senegal
Senegal.xlsx · Not yet configured
Pending
Setup Instructions
One-time setup · ~10 minutes
1
Go to script.google.com
Create a new project. Delete the placeholder code. Paste the contents of ironwood_drive_sync.gs (provided separately).
2
Fill in SUPABASE_SERVICE_KEY and FOLDER_ID
Service Role Key: Supabase → Settings → API → service_role → Reveal. Folder ID: the long string in your Drive folder URL.
3
Enable Drive API
In Apps Script editor: left sidebar → + next to Services → Google Drive API → Add.
4
Run testConnection, then syncAllCountries
Select the function from the dropdown → click Run → check Logs. Once working, set a nightly Time-driven trigger on syncAllCountries.
Data Pipeline
Upload Manager
Upload a country sheet manually. The Country Replace mode deletes only that country's rows and reinserts — all other countries stay intact.
Listings / Properties
Price Records
Market Averages

Required columns

country ★city ★asset_class ★listing_type ★districtpriceprice_per_sqmsize_sqmproperty_typelisting_datesource_urlsource_nameagentgeolocation
One file per country. Each file contains all cities for that country. Country column must be consistent throughout the file.

Upload Mode

✓ Country Replace: the country value will be auto-detected from your file's country column when you load it. Only rows matching that country will be deleted before re-insert.
📋
Drop country sheet here
e.g. Morocco.xlsx or Nigeria.xlsx · must have a country column

Upload Validation Preview

Rows Detected
Valid Rows
Cities Found
Missing Required

Data Preview

Required columns

country ★city ★asset_class ★date_recorded ★districtasking_rent_sqmsale_pricesale_price_sqmquarteryearcurrencynotes

Upload Mode

💰
Drop country price sheet here
or click to browse

Upload Validation Preview

Rows Detected
Valid Rows
Cities Found
Missing Required

Data Preview

Required columns

country ★city ★asset_class ★quarter ★year ★districtavg_rent_sqmavg_sale_price_sqmvacancy_ratetotal_listingscurrency
📈
Drop country averages sheet here
or click to browse

Data Preview

Data Pipeline
Download Data
Export datasets from the raw data layer. All exports are read-only and append timestamped filenames.
Properties / Listings
All listing records including city, district, asset class, price, metadata.
Price Records
Historical price records linked to properties over time.
Market Averages
Aggregated city / district market averages by period.
Full Database Export
All tables · Single Excel file · Multiple sheets
Data Quality
Dataset Explorer
Browse, filter, and export records from any raw data table. Inline editing is available for verified records only.
Listings
Price Records
Market Averages
Select a table to begin browsing
Page 1
Data Quality
Data Validation
Pre-ingestion and post-ingestion validation rules. Every uploaded record must pass validation before being promoted to verified status.
Validation Rules — listings_raw
Applied on every upload
RuleFieldTypeAction on FailStatus
City is requiredcityRequired fieldReject rowActive
Country is requiredcountryRequired fieldReject rowActive
Asset class must be validasset_classEnum validationFlag for reviewActive
Price must be positiveprice / price_per_sqmNumeric validationFlag for reviewActive
Size must be positivesize_sqmNumeric validationFlag for reviewActive
Source URL formatsource_urlURL format checkWarnActive
Date format validlisting_dateDate validationWarnActive
Duplicate detectioncity + price + size_sqmDedup checkFlag as duplicateBeta
Asset Class Taxonomy
Approved values for property_type / asset_class field
Apartments Villas / Luxury homes Houses Offices Retail Land Riads Industrial Farms Hospitality
Data Quality
Verification Queue
Records pending manual review. Verify or reject each record before it is marked as confirmed data. Verified records are used in analytics.
Casablanca · Office · DH 142/m²/month Needs Review
Source: Mubawab.ma · Collected: Mar 2026 · Size: 850 m² · District: Maarif
Confidence: Medium · View source URL →
Field flags: None Validation: Passed Duplicate check: No match
Marrakech · Villa · DH 4,800,000 Needs Review
Source: Mubawab.ma · Collected: Mar 2026 · Size: 280 m² · District: Palmeraie
Confidence: High · View source URL →
Field flags: None Validation: Passed Duplicate check: 1 possible match
Rabat · Apartment · DH 11,200/m² Needs Review
Source: Mubawab.ma · Collected: Mar 2026 · Size: 95 m² · District: Agdal
Confidence: High · View source URL →
Field flags: Missing source_url Validation: 1 warning Duplicate check: No match
Operations
Activity Log
Complete audit trail of all platform actions. Append-only. Cannot be modified or deleted.
Append-only · Read-only
Operations
Batch Operations
Large-scale corrections and data operations. All batch actions require confirmation and are logged to the activity log.
Update District
Assign district to records missing it
This will update all matching records. Action is logged and reversible by re-uploading.
Update Asset Class
Standardise property type values
Delete Duplicates
Remove estimated duplicate records
Duplicates are detected by matching on: city + price_per_sqm + size_sqm + property_type. The most recent record is kept.
Estimated duplicates:
Destructive action. Cannot be undone. Export first.
Bulk Verification
Set verification status in bulk
Operations
Manual Entry
Add a single verified record directly. Used for bespoke data points not captured by automated ingestion.
Property
Price Record
Market Average
Admin
Admin Users
Manage platform access. Roles control which sections and operations each user can access.
Create New Admin
Role Permissions
RoleDatasetsUploadEditAdmin
Admin✓ All
Data Operator✓ All
Viewer✓ Read
Current Users
EmailRoleCreatedLast LoginStatus
Loading...
Admin
API Management
Manage API keys for developer and institutional access to the Ironwood Intelligence data platform.
API Keys
Default
iw_••••••••••••••••••••••••••••••••
Created: Jan 2026  |  Usage: 0 req/day  |  Rate limit: 1,000/day
Active
API Configuration

Rate Limiting

Maximum requests per day per API key

Endpoint Base URL

Base URL for API access

https://www.ironwoodintelligence.com/api/v1

Require Authentication

All API requests must include a valid API key

Enabled
Admin
Settings
Admin panel configuration. Supabase credentials are stored in localStorage.
Supabase Connection

Project URL

Your Supabase project URL

Anon Key

Supabase anon public key (eyJhbG...)

Platform Settings

Stale Listing Threshold

Days after which a listing is considered stale

Demo Data Warning

Show warning banner when demo data is present

Enabled

Verification Required

Require manual verification before records used in analytics

Enabled

Activity Logging

Log all admin actions to the activity log

Always On