49° N · 123° W · Vancouver

Parsa Riahi

I take a scene apart until the part that matters is obvious. Lately the scene is a place: a satellite frame, a stack of sensors, a scanned map that still will not sit on the ground it claims.

CTO at SPARC Global. I co-founded DYNE and exited. I spent a year on neural architecture search at Huawei, overlapping the start of DYNE, and I studied computer engineering at UBC.

Maritime watch on a satellite basemap with three flagged cases in a side queue

Recently added

New on the site.

30.2234° N · 97.6145° W · 163.7 km²

Read the ground every way it can be read.

The stack

One place, five ways in.

Four sensors and a learned layer over the same 163.7 km², all resampled onto one 10 m grid.

Sentinel-2 · Sentinel-1 · Landsat 9 · TESSERA · USGS

Contains modified Copernicus Sentinel data (2018, 2024). Landsat 9 courtesy of the U.S. Geological Survey. USGS Historical Topographic Map Collection. TESSERA v1.1 embeddings.

Industries

Ten places the work lands.

Eight read the ground from orbit, each with its own scene on public imagery. Two read documents and sales.

  1. Mining: 202401Mining
  2. Agriculture: Optical02Agriculture
  3. Forestry: 202403Forestry
  4. Wildfire: After04Wildfire
  5. Oil and gas: 202405Oil and gas
  6. Infrastructure: 202506Infrastructure
  7. Maritime and defence: Radar07Maritime and defence
  8. Government and municipal: 202408Government and municipal
  9. GovEarner workspace home with an assistant prompt for drafting from saved opportunities09Public funding and bids
  10. DYNE competitor map: foot traffic heat around nearby venues in a city centre10Restaurants and retail

What you get

Less ground to read. More to act on.

Every figure here is published, computed on this page, or marked as our own. Nothing is rounded up.

  1. 01 · Computed on this page

    1.0%

    of the ground left for a person

    The scene above reads 163.7 km² and hands an analyst one 1.64 km² flag, with the layers that agree.

  2. 02 · Sheet registration

    6.15 m

    error on a scanned sheet

    Placed on the ground from 8 control points: 2 anchors a person placed and 6 road points the pipeline found. Each is scored with itself left out of the fit.

  3. 03 · Change detection

    185

    change polygons over 671 ha

    Shapes with a reason attached, not a heatmap to squint at.

  4. 04 · Segmentation

    0.562

    field IoU, 6.5× the baseline

    Segment-anything on NDVI. The baseline scored 0.086 on the same field test.

Under the hood · Atlas

Four parts, one engine.

  1. 01Fusion

    Optical, radar, thermal and terrain, plus LiDAR, drone video, comms feeds, sonar and ship tracks, on one grid and one clock. A flag needs more than one source to agree, and every output keeps the source it came from.

    More than one source must agree
  2. 02Registration

    A scanned sheet locked to the satellite frame from road junctions the pipeline finds and anchors a person places. Scored by leave-one-out, and refused when the fit is wrong.

    6.15 m error, 8 control points
  3. 03Change detection

    Two dates. A frozen vision transformer, a classical channel beside it, and a confidence weight between them, so a weak learned score does not win by default. CLIP names what changed.

    185 polygons over 671 ha
  4. 04Agents

    A question in plain language. An agent plans the GIS steps, runs open tools and the detectors, and drafts the answer with its sources. A person confirms before anything acts.

    Cloud account or air-gapped
Any sensor inopticalLiDARradardrone videothermalcomms feedsterrainsonarOne gridone clocksource keptmore than one agreesFlagwith its reasons

01 · Fusion

Under the hood · Atlas

Four parts, one engine.

Any sensor inopticalLiDARradardrone videothermalcomms feedsterrainsonarOne gridone clocksource keptmore than one agreesFlagwith its reasons

01

Fusion

Optical, radar, thermal and terrain, plus LiDAR, drone video, comms feeds, sonar and ship tracks, on one grid and one clock. A flag needs more than one source to agree, and every output keeps the source it came from.

More than one source must agree

8 tie points, map to satelliteResiduals6.15 m trusted errorvectors drawn to show the idea; the red one failsWarpbefore: sheet pixelsafter: affine warpleave-one-outgateshiprefusefail closed

02

Registration

A scanned sheet locked to the satellite frame from road junctions the pipeline finds and anchors a person places. Scored by leave-one-out, and refused when the fit is wrong.

6.15 m error, 8 control points

20172024frozen ViTshared, no labelsclassical channelalways returns a mapconfidence weightchange map, named by CLIPSeparate run, public coal mine:185 polygons, 671 ha

03

Change detection

Two dates. A frozen vision transformer, a classical channel beside it, and a confidence weight between them, so a weak learned score does not win by default. CLIP names what changed.

185 polygons over 671 ha

Example questionWhere did the shoreline move since spring?The agent plans, then runs each step1 Find the imagery2 Register and stack it3 Run change detection4 Draft the answer, with sources1 · optical and radar passes found2 · stacked on one grid3 · change map with confidenceDraft answersources: imagery, steps, toolswaiting for a personopen tools and the detectors, on your dataA person confirms before anything acts

04

Agents

A question in plain language. An agent plans the GIS steps, runs open tools and the detectors, and drafts the answer with its sources. A person confirms before anything acts.

Cloud account or air-gapped

Why it is different

Most geospatial AI stops at a heatmap.

The usual way, next to how this stack does it. No names, just the approach.

Typical approach compared with this stack
TopicTypical approachThis stack
InputsOne sensor, one feed, one model.Optical, radar, thermal, learned embeddings, and old maps on one grid.
OutputA heatmap and a report.A flagged area, a confidence, the layers that agree, and a next step.
Old mapsTie points clicked by hand, sheet by sheet.Most control found from the roads, with a person's anchors locked in. The tie is dropped when the residual is too high.
New classesFixed at training time. Retrain to add one.A zero-shot vision-language pass names what changed.
When unsureReturns an answer anyway.Fails closed and routes the case to a person.
LineageLost at export.Every output keeps the source it came from.
DeployThe vendor's cloud.Your cloud account, or air-gapped.
Who actsThe model, or nobody.A person accepts, questions, or rejects. Every choice is on the audit trail.

About

The record, in short.

I co-founded DYNE and exited. I was co-founder, CTO, and a board member. For about 14 months I have been CTO at SPARC Global, where the core team is 20: 12 developers and 8 on the business side. We work with an extended team of about 50, inside the SPARC group of about 250 people, which is about 30 years old. I spent a year on neural architecture search at Huawei, and I studied computer engineering at UBC. One paper is public, arXiv 2302.10835.

The work is forward-deployed: I build next to the people who will run the system. I also lead pre-sales and solutions, a team of 8, from 2025 to the present, and have travelled on Canadian trade missions to Japan, India, Italy, the UAE and Saudi Arabia. I speak English, French and Farsi. The SPARC group holds ISO 27001, ISO 9001, ISO 20000-1, ISO 42001 and CMMI Level 5; those are the group's credentials, not personal ones.

Site access security clearance.

Parsa Riahi, CTO of SPARC Global, geospatial AI engineer

Skills

What the work runs on.

Each item is backed by shipped work, the paper or the record. Methods tried only in small experiments stay on the research cards, not here.

Languages
  • Python
  • TypeScript
  • JavaScript
  • C and C++
  • SQL
  • Bash
Spoken
  • English
  • French
  • Farsi (Persian)
Methods
  • Neural architecture search
  • Reinforcement learning for neural architecture search (Huawei)
  • Evolutionary algorithms
  • RNN and LSTM accuracy predictors
  • Contrastive learning on computation graphs
  • Graph neural networks
  • CNN and vision transformer
  • Zero-shot and few-shot transfer
  • Self-supervised pretraining
  • Domain adaptation
  • Siamese change detection
  • Promptable segmentation
  • Object detection
  • Image classification
  • k-NN classification
  • Super-resolution
  • Multimodal fusion
  • Detector-free matching, ORB and RANSAC
  • Calibration, abstention and risk-coverage
  • Time-series forecasting
  • Hyperparameter search (TPE)
  • Ablations
  • Data augmentation
Agents and LLMs
  • Retrieval-augmented generation (RAG)
  • Hybrid and vector search
  • Supervised fine-tuning (SFT)
  • Tool-calling agents
  • Human approval
  • Model Context Protocol (MCP)
  • Model routing and spend caps
Models
  • DINOv2
  • CLIP
  • SAM 2
  • Prithvi-EO-2.0
  • TerraMind
  • LoFTR
  • MatchAnything
  • AnomalyDINO with FAISS
  • Stone Soup tracking (design)
Frameworks
  • PyTorch
  • scikit-learn
  • NumPy
  • OpenCV
  • FastAPI
  • Node.js
  • React
  • React Native
  • iOS and Android
Geospatial
  • GEOINT
  • Sentinel-1
  • Sentinel-2
  • Landsat
  • Cartosat and Resourcesat
  • SAR
  • AIS
  • LiDAR
  • Drone orthomosaics
  • NDVI, NBR, NDRE and NDMI
  • Georeferencing
  • DGPS and GNSS
  • STAC
  • PostGIS
  • GDAL
  • GeoServer
  • Google Earth Engine
  • ArcGIS Enterprise
  • VertiGIS
  • FME
  • SQL Server and SSIS
  • OGC WMS, WFS, WMTS and OGC API
  • COG and GeoTIFF
  • GeoJSON and MGRS
  • NITF and SIDD
  • CoT, TAK and STANAG
  • WebGIS
  • Carbon MRV
Cloud and delivery
  • Kubernetes
  • Docker
  • Helm
  • Argo CD
  • Azure and AKS
  • AWS
  • Google Cloud
  • Vercel and Render
  • GitHub Actions
  • CI/CD
  • Infrastructure as code
  • Airflow
  • Sentry
  • PostgreSQL
  • pgvector
  • Redis
  • Cosmos DB
  • Neo4j knowledge graphs
  • OAuth 2.0, OIDC and SSO
  • MLOps: model CI/CD, drift monitoring, experiment tracking, feature stores, data lineage
  • Shadow deployment, release gates and gold sets
Security and sovereignty
  • SOC 2 Type II
  • Protected B
  • ITSG-33
  • CPCSC
  • Air-gapped
  • On-premises
  • Data residency
  • Signed images
Domains
  • Agriculture
  • Forestry
  • Mining
  • Defence
  • Maritime
  • Wildfire
  • Infrastructure
  • Municipal
  • Oil and gas
Experience
  • Chief Technology Officer
  • Co-founder
  • Board member
  • Forward-deployed engineering
  • Pre-sales and solutions, team of 8, 2025 to present
  • Teaching assistant

Next stage

Different wins, at different times.

Each number is what moved that work to its next stage. Colour, bar weight and the label give its size.

Category-leading
Stands next to how the field does the job, and wins
Major milestone
A stage change: an exit, a product now sold, a public paper
Strong traction
Clear evidence it works in use
Foundation
The vehicle: the team, the tenure, the group

Research credentials

DYNE · May 2020 to Jun 2025

Co-founder, CTO and board member.

A growth system for restaurants and retail. It read sales, inventory, foot traffic, and what was happening outside the door, then proposed demand, price, staffing, and the campaign.

+500%Marketing traffic lift.
  • Product and engineering: the service, web and mobile clients, and the models.
  • Multi-tenant on managed Kubernetes, with a document store and single sign-on.
  • Technical owner of the SOC 2 program.
  • Co-sold with Microsoft, at a 10 to 20% margin on the marketplace listing.
  • We exited.
  1. DYNE dashboard collage: campaigns, menu items, review scores, and a demand heatmap
    The DYNE product, as it was sold.
  2. DYNE competitor map: foot traffic heat around nearby venues in a city centre
    Competitor locations with foot traffic heat and trend filters.
  3. DYNE campaign builder: a generated dessert image beside the social post preview
    Campaign builder. A generated image and the post it becomes.
  4. Storyboard of location screens: inventory, orders, staff schedule, and inventory relocation
    Locations: inventory, orders, schedules, relocation.

Shipped

Real screens, from products in use.

A maritime watch, the Atlas engine, crop and mine monitoring, bid drafting, and DYNE. Open the galleries

Partnerships and go-to-market

I grow through partners who already own the customer.

Product is half of it. The other half is distribution: who already sells to the buyer, how fast the product plugs into them, and how a pilot becomes a contract.

  1. 01

    Find who already owns the customer

    Cloud marketplaces and co-sell programmes, software vendors, local business-development partners in a new country, government innovation programmes.

  2. 02

    Make the product easy to plug in

    At DYNE that meant 45+ integrations. At SPARC it means one platform on shared engines, so a new vertical is a preset, not a new build.

  3. 03

    Turn proof into a repeatable motion

    A pilot, then a paid second phase, then a subscription. A paid crop-intelligence pilot for a US grower became a signed phase 2 in October 2026.

DYNE · co-founder and CTO

What got DYNE to an exit.

  • Strong traction

    +500%

    marketing traffic lift, the product proof that opened growth

  • Strong traction

    95%+

    demand forecast accuracy over 90 days, the model restaurants ran

  • Strong traction

    45+

    integrations, each one also a sales channel

  • Major milestone

    10 to 20%

    margin on a five-year co-sell marketplace listing

  • Major milestone

    $2M ARR

    and 1,000+ live locations, then exited

A five-year co-sell partnership with Microsoft: a marketplace listing, its top startup programme tier, and a joint showcase at a major retail trade show in 2025. DYNE ranked first in Canada and first in restaurant tech among its top 100 global startup partners.

Every integration was also a sales channel, and a new one shipped in 2 to 5 days, down from two months. Partners listed DYNE in their marketplaces and sold it to their merchants. They also changed their APIs without warning, so every partner API was regression-tested daily.

SPARC Global · CTO

What turns a services firm into a product company.

  • Foundation

    20 people

    core team: 12 developers and 8 business, with an extended team of about 50, in a group of about 250 people and about 30 years old; CTO for about 14 months

  • Foundation

    1 platform

    of shared engines, so a new vertical is a preset, not a new build

  • Category-leading

    6.15 m

    georeferencing, with a gate that refuses a bad fit

  • Major milestone

    3

    Canadian enterprises buy the tender engine we built for ourselves, at 95% lower drafting cost

The tender engine began as an internal tool for writing bids. It now writes about a dozen a week for us, a 92-page proposal in 154 seconds, and is sold to three Canadian enterprises. At one consultancy, bid decisions come 2.5 times faster with 60 to 75% less preparation.

Around it: go and no-go gates for national and allied defence and space innovation programmes, each with a named owner.

SPARCEngineering partnerClient1Capacity subcontractSPARC engineers inside thepartner's team, at rate cardTechnologyplatform and engineersPartnerowns the contractClientone engagement recordrate cardpartner delivers2Joint deliveryBoth face the client.The partner earns a referralTechnologyplatform and engineersPartnerintroduces, co-deliversClientone engagement recordreferralintroducesjoint delivery, client-facing3Project partnerSPARC quotes cost plusoverhead; partner adds marginTechnologyplatform and engineersPartnerowns the contractClientone engagement recordcost + overhead+ partner marginOn every route: cloud and AI pass-through billed at cost. Route 1 has a floor of two people or three months.
Figure G1. The co-sell framework I wrote with a US engineering firm. One partner, three ways in, chosen per project and recorded in a signed engagement record. Cloud and AI costs pass through at cost, so no route makes money on infrastructure.

New countries, through local partners.

  1. Mexico · the precedent

    MOUs with a government-linked institution and an agricultural network of about 400 farming associations. A phase 1 proposal, then a pilot, then conversion to a subscription.

  2. Brazil · the copy

    Four independent local operators from agribusiness, trade negotiation and agricultural policy are the business-development and relationship layer. SPARC is the technology provider and the client pays SPARC directly; partners earn a referral fee or revenue share under one multi-party MOU. Targets: bank and crop-insurance portfolios, co-ops and very large farms.

  3. Trade missions

    The group holds 14 MOUs from Canadian trade missions. I have gone as a delegate to Japan, India, Italy, Brazil, Mexico, the UAE and Saudi Arabia.

Work

Record

  1. 2025 to now

    SPARC Global

    Chief technology officer

    I turned a services firm toward products. Atlas is built. It ships segmentation, change detection with a zero-shot vision-language pass, anomaly detection, and automatic georeferencing. An agent on the same stack can use the map.

    SPARC Global is the Canadian entity of the SPARC group, which has about 250 people and is about 30 years old. Its core team is 20, 12 developers and 8 on the business side, working with an extended team of about 50. I have been its CTO for about 14 months. The core team works across engineering, models, and GIS. The same core runs in a cloud account or on machines that never touch the public network, when the data has to stay in the building.

  2. May 2020 to Jun 2025

    DYNE

    Co-founder, CTO and board member

    A growth system for restaurants and retail. It read sales, inventory, foot traffic, and what was happening outside the door, then proposed demand, price, staffing, and the campaign. Marketing traffic lift: 500%.

    I owned the product and the engineering: the service, the web and mobile clients, and the models. Multi-tenant, on managed Kubernetes, with a document store, single sign-on, and an edge front. I was the technical owner of the SOC 2 program. We exited.

    • Forecast accuracy 95%+ over 90 days
  3. Jan 2021 to Dec 2021

    Huawei

    Machine learning researcher

    Edmonton, overlapping the start of DYNE. Neural architecture search. I worked on a predictor that reads a network as a computation graph, so it can rank a family it was not built for.

    The public paper is on the Research page. Other manuscripts from that year stay off this site until I have confirmed they are public.

  4. May 2020 to Dec 2020

    UBC

    Teaching assistant

    Labs and office hours for undergraduate programming and software engineering. Some of the assignments I wrote were taken into the course.

  5. 2018 to 2023

    UBC

    BASc, Computer Engineering

    GPA 4.0. Dean's list. Courses included advanced machine learning, natural language processing, artificial intelligence, software engineering, and new venture design. Payload and avionics with the student rocket team.

Writing

Where I write.

Posts from LinkedIn, newest first, then the two places new writing goes up.

Filter posts by topic

12 posts

2026

2025

2024

2023

Proof, not adjectives.

Four numbers from real runs and a real paper, each with where it came from.

Selected work.

Open any item for what it does, the numbers, and the page that goes deeper.

Maritime watch on a satellite basemap with three flagged cases in a side queue

Ship reports, radar, optical, air tracks and radio on one grid and one clock. Nothing goes above Advisory until two independent sources agree, and every alert opens to the evidence behind it.

  • Inputs

    11 types, one grid
  • Rule

    2 sources before Alert
Atlas georeferencing app: a job list, a scanned sheet over satellite imagery, and the control points for one run

The engine the products share. Change detection runs zero-shot on sites it has never seen, and scanned maps land on the satellite frame from road points the pipeline finds and anchors a person places, or are refused.

  • Georeferencing

    6.15 m, 8 points
  • Change

    185 polygons, 671 ha
Change heatmap over a mine site with polygons drawn around new disturbance

A new cut outside the plan, a field below its group, a burn that needs crews first. Each industry page has its own scene from real public imagery.

  • Crop type

    0.809 accuracy
  • Fields

    0.562 median IoU
GovEarner workspace home with an assistant prompt for drafting from saved opportunities

Retrieval and tool use built from scratch, open models behind a tool protocol, and the source on every drafted line. A person decides to bid.

  • Status

    In production
DYNE dashboard collage: campaigns, menu items, review scores, and a demand heatmap

iOS, Android and web for the consumer side; demand, price, staffing and campaigns for the business side; SOC 2 underneath.

  • Marketing traffic

    +500%

Networks rewritten as computation graphs and learned with contrastive learning, so one predictor ranks families it was not trained on.

  • NAS-Bench-201

    Spearman 0.917
  • ImageNet

    79.2% top-1
3D render of the edge meter carrier board, designed and simulated in KiCad

Built to power budgets: 5 W at the edge appliance, 0.25 W at the node. Gerbers exported; nothing fabricated.

  • Node life

    866 days, estimated

Contact · Vancouver, 49° N

Have a place, a sensor, or a decision that needs a second look?

Book a call or send a note. Say what you are looking at and what you need to decide; I will say what the data can and cannot answer.