Knokko – property inspection app for Nordic real-estate consultants
Stratas team project
Open full-size image ↗
Category: Mobile B2B SaaS (iOS + Android), pre-launch
Status: Mid-build; Phases 2–5 shipped; TestFlight / Play submission (Phase 7) pending
Time window: 2026 → ongoing
Live URL: Not yet shipped. Target domains: knokko.app (candidate) and knokko.no (trademark check pending)
Purpose
Mobile-first property-inspection app for Nordic real-estate consultants. Field consultants run move-in, move-out, and interim inspections on iOS and Android – offline-capable, with room-by-room checklists, photo capture, two-party e-signatures, prior-inspection diff ("N changes detected"), and a signed PDF report formatted to husleieloven / hyreslagen / lejeloven.
Who it is for
Nordic real-estate consultancies (5–500 consultants). Buyer is the firm; primary user is the field consultant doing a physical inspection on a phone, often with no signal.
Stack
- App: Expo SDK 52 managed workflow + React Native 0.76.5 + TypeScript + Expo Router (typed routes) + NativeWind
- Local state + sync: Legend-State v3 with
syncedSupabase– offline-first mutation queue with background-task drain - Data: Supabase (EU – Frankfurt or Stockholm; US regions forbidden by
CLAUDE.md), per-row RLS onfirm_idacross 9 tables + storage buckets, pgTAP boundary tests gating merges - PDF generation: Trigger.dev
generate-inspection-reporttask rendering@react-pdf/rendererto a signed Supabase Storage URL (max 300 s, 3 retries exponential backoff) - Observability: Sentry (crashes), PostHog (analytics)
- i18n: i18next –
nb-NOsource,sv-SE/da-DK/endraft (native review pending) - Native hooks:
expo-camera,expo-background-task, resumable TUS uploads for files > 6 MB; AndroidCAMERA+READ_MEDIA_IMAGESperms; bundle idai.stratas.knokko - Build + submit: EAS Build + EAS Submit
- Marketing site: Next.js at
knokko/marketing/(scaffolded; subscription + legal pages drafted)
No LLM at runtime in v1.0 – explicit non-goal per COST_INSTRUMENTATION_REQUIREMENTS.md. Langfuse telemetry is still wired for the PDF generation pipeline (duration, retries, per-firm_id cost rollup) and Supabase Storage/egress rollups.
Stratas team project
Delivered by the Stratas team and shown here as part of the wider Stratas portfolio.
Notable capabilities
- Full offline-first write path on React Native – Legend-State v3
syncedSupabaseobservables with a mutation queue andexpo-background-taskdrain. Not a mock: demonstrated end-to-end on a photo-heavy write surface (room/checklist CRUD, two-party signature capture, photo capture + resumable upload). - Multi-tenant Postgres RLS enforced on
firm_idacross 9 tables and storage buckets, with pgTAP boundary tests mandatory before merge – security-first before any paying customer exists. - No StoreKit / Google Play Billing in the app. Subscription is sold via the marketing site; the app only authenticates. Keeps a mobile B2B app out of the 30% Apple IAP tax and the Sign-in-with-Apple requirement – a deliberate architectural lever, not an accident.
- Signed inspection reports – two-party e-signature capture, prior-inspection diff, Trigger.dev-generated PDF conforming to Nordic rental law templates.
- Norwegian as the source language – EN / SE / DK are downstream drafts awaiting paid native review. Inverts the usual Nordic-product mistake of treating EN as the source and NO as a translation.
Outcome
Pre-launch, mid-build. Shipped: repo skeleton, Expo scaffold, i18n bootstrap, Supabase + Sentry + PostHog client stubs, schema + RLS + pgTAP tests, magic-link auth, property list, Legend-State sync, photo capture + upload queue, Trigger.dev PDF task, room/checklist CRUD write-side, two-party signature capture, comparison + photos observable, marketing site + legal placeholders.
Pending: PDF husleieloven template polish, offline/airplane acceptance test, native-reviewed SE/DK translations, accessibility pass, TestFlight / Play submission, Stripe subscription on marketing site, v1.0 launch. Human-blocked on Apple Developer, Google Play, D-U-N-S, trademark, lawyer review.
Evidence
- Repo: private
- Docs in-repo:
PHASES.md,WIKI.md,COST_INSTRUMENTATION_REQUIREMENTS.md - App icon in production use at
/demo-hub/public/knokko/and the Agent Fleet dashboard's app-icon grid - Session handoffs:
~/.claude/sessions/2026-10-04-knokko-*.md
Skills demonstrated
expo-sdk-52, react-native-0.76, typescript, nativewind, expo-router-typed, legend-state-v3, offline-first-sync, expo-background-task, expo-camera, tus-resumable-upload, supabase-postgres, supabase-rls-firm-boundary, pgtap-boundary-tests, trigger-dev-v3, react-pdf-renderer, sentry, posthog, i18next-norwegian-source, eas-build, nordic-rental-law-templates, b2b-marketing-site-subscription, eu-data-residency, cost-first-development
Want to discuss the decisions behind it?
Over fifteen years of consulting and growth, and hands-on AI delivery from discovery to daily operations. I can share my CV and talk through how I connect business outcomes with systems that run.
Available for a chat. In person in Stavanger, or remotely worldwide.