Raise an issue from your phone
You're walking the site and spot a fire damper installed back-to-front. This tutorial shows you how to capture the problem, attach a photo, drop a GPS pin, and route the issue to the right person — all from your phone, even if you have no signal.
What you'll build
By the end of this tutorial you'll have:
- A new issue with a photo, GPS coordinates, and a clear title
- The issue assigned to a specific coordinator
- The issue tagged against an element from your federated model
- A working understanding of the offline queue
Step 1 — Open the project
Launch the app. If you're already signed in, the project picker shows. Tap the project you're on site for.
If this is your first visit, the app may prompt you to pre-sync. Tap Skip for now — you can still raise issues without pre-syncing.
Step 2 — Start a new issue
You have three ways to start a new issue. Pick whichever matches your situation:
From the issue list
Bottom tab bar → Issues → tap the orange + button in the bottom right.
From the GPS site map
Bottom tab bar → Map → long-press anywhere on the map. The new-issue form opens with the tapped point's GPS coordinates pre-filled.
From the camera
Quick-action: hold the floating camera button on the home screen for 1 second. Takes a photo and goes straight to the new-issue form with the photo attached.
Step 3 — Fill in the issue
The new-issue form has these fields:
| Field | What to enter |
|---|---|
| Title | One line. "Fire damper FD-103 installed back-to-front" |
| Type | Quality / Safety / Coordination / RFI / NCR. Tap to pick. |
| Priority | Low / Medium / High / Critical |
| Description | Free-text. Voice-to-text icon if typing on site is awkward. |
| Location | Auto-filled if you used the GPS-pin route. Otherwise tap "Use my location". |
| Linked element | Optional. Tap "Link element" → QR-scan the asset, or pick from a list. |
| Assignee | Tap to pick from the project's team list. |
| Due date | Optional. |
Step 4 — Attach a photo
Tap the + Add photo button. You get three options:
- Take photo — opens the camera. Capture, tap the checkmark to use.
- From gallery — pick existing photos from your phone.
- Record voice note — useful for context that's faster to speak than type.
You can attach up to 10 photos and 5 voice notes per issue. Photos are automatically thumbnailed and geotagged.
Step 5 — Link to an element (optional but recommended)
Tying an issue to a specific element in the federated model is what makes it actionable for the BIM author. Three ways to link:
QR scan
Tap Link element → Scan QR. Point your camera at a printed STING tag on the asset. The element loads automatically with its full tag history.
Pick from view
Tap Link element → From map view. The 2D plan view of your current level opens. Tap the element you want to link.
Search by tag
Tap Link element → Search tag. Type any segment of the ISO 19650 tag (e.g. HVAC-FD-0103). Matching elements appear.
Step 6 — Assign & save
Tap Assignee → pick a teammate. They'll get a push notification (when they're next online).
Hit Save. If you're online, the issue posts and you see "✓ Issue raised" briefly. If you're offline, you see "Queued — will sync when online" instead.
Step 7 — Verify it synced
Back on the issue list, your new issue appears at the top. If you're offline, it shows a small yellow chip with the queue count.
The status indicator at the top right of the screen tells you the queue state:
- 🟢 Online — everything is synced.
- 🟡 Queued (N) — N items waiting; will sync automatically when connected.
- 🔴 Sync failed — something's wrong; tap for details.
What happened behind the scenes
For the curious — here's what the app did:
- Saved the issue to the local SQLite database with a status of
pending. - Saved photos and voice notes to local storage with a foreign key to the issue.
- If online: posted
POST /api/projects/{projectId}/issueswith the issue body, then uploaded each photo toPOST /api/projects/{projectId}/photos(multipart). Marked all assynced. - If offline: kept everything
pending; a background task retries when network state changes. - Once synced server-side, SignalR broadcast the new issue to all connected project members — they get a push notification within a few seconds.
Common mistakes
- Forgetting to set priority. Defaults to Medium. Critical issues should be flagged explicitly so they appear in the daily standup.
- Not linking to an element. Floating issues are hard to triage. Link to the element you're complaining about whenever possible.
- Generic titles. "Issue with damper" is less useful than "FD-103 installed back-to-front, blade direction reversed". The author needs to know what's wrong without opening the photos.
- Assigning to no-one. Unassigned issues sit in the project queue and may be missed. Even "Project Lead" is better than no-one.
What's next?
- Try QR-scanning an asset to learn the fastest way to link issues to elements.
- Try Working a full day offline to confirm your queue handles a real site visit.
- Read the issue workflow guide for the full lifecycle (open → in-progress → resolved → verified).