Acasuso.
← All work

Knokko – property inspection app for Nordic real-estate consultants

Stratas team project

Field inspection app: the day’s inspection queue, and room-by-room progress for one move-in inspection.Open full-size image ↗
Field inspection app: the day’s inspection queue, and room-by-room progress for one move-in inspection.

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 on firm_id across 9 tables + storage buckets, pgTAP boundary tests gating merges
  • PDF generation: Trigger.dev generate-inspection-report task rendering @react-pdf/renderer to a signed Supabase Storage URL (max 300 s, 3 retries exponential backoff)
  • Observability: Sentry (crashes), PostHog (analytics)
  • i18n: i18next – nb-NO source, sv-SE / da-DK / en draft (native review pending)
  • Native hooks: expo-camera, expo-background-task, resumable TUS uploads for files > 6 MB; Android CAMERA + READ_MEDIA_IMAGES perms; bundle id ai.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 syncedSupabase observables with a mutation queue and expo-background-task drain. 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_id across 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.