# The whole engine, on the phone.

> A native iOS and Android app built with Expo and React Native. The full underwriting engine runs offline on the phone, held to the web by tests.

Page: https://adjltechnology.com/work/mobile-app/
Updated: 2026-11-10

Case study · Native app

A native app for ADJL Capital’s investors, built with Expo and React Native for iOS and Android from one codebase. The underwriting engine runs on the device with no network. Its files are the same ones the website runs, and tests hold both to the same answers. It’s distributed privately, not through a public store listing.

[Talk to Daniel](https://adjltechnology.com/work/mobile-app/#contact)

- **Platform:** iOS and Android, one codebase
- **Built with:** Expo, React Native, TypeScript
- **Runs offline:** The full underwriting engine
- **Distribution:** Private, not a public store listing

People read the top layer, crawlers follow the middle one and machines parse the bottom one.

Why native

## Why an app and not a bookmark.

A web page needs a connection to compute anything. This app doesn’t. Paste a listing or type the numbers in, drag an assumption, and the result recomputes under your thumb with no network at all.

Shared engine

## Same files. Same answers.

The engine modules are copied byte for byte from the website. They aren’t ported, because a port is a chance to mistype a number. Golden scenarios produced by the original prototype run against the copy, so any drift fails a test.

1. The website and the app run the same engine files.
2. Each module is copied byte for byte. None of them is ported.
3. Golden scenarios run against both copies, so any drift fails a test.
4. The phone needs no network to compute. Take it offline and it still recomputes.

Pure modules

## A rule the tests enforce.

Every engine module is pure. No network calls, no filesystem and no access to the process. A test reads the vendored source and fails if one appears. A single import added on the website would otherwise break the app on a device, where no type checker sees it.

Server side

## What stays on the server.

Property lookups and the written narrative stay behind authenticated endpoints, because they need secrets. So do the large market datasets. They’re too big to ship in an app someone downloads over cellular.

Distribution

## Shipped privately.

The app reaches investors through private distribution, not a public store listing. Its icon, splash screen and in-app mark are all generated from one file that holds the three-bar mark’s geometry.

Built under

- [Websites & Apps](https://adjltechnology.com/services/software/)

Next

- [How Loep works](https://adjltechnology.com/work/loep/)

Start here

## Tell us what’s slow, or what can’t be found.

One paragraph is plenty. Tell us what you want built, the step that costs the most, or the page that should rank and doesn’t. If you know why the obvious fix hasn’t worked, say that too.

[Start a project](https://adjltechnology.com/start/)

[daniel@adjlcapital.com](mailto:daniel@adjlcapital.com)

[Email Daniel](mailto:daniel@adjlcapital.com)

Daniel reads and answers these himself, usually within a day or two. No sequence, no drip, and nothing sold to anyone.

[ADJL Technology](https://adjltechnology.com/)

Today’s investment, tomorrow’s legacy.

ADJL Technology builds AI systems, websites and apps, and the technical SEO that gets them found. Founded and led by Daniel Laskowski.

[daniel@adjlcapital.com](mailto:daniel@adjlcapital.com)

Built 2026-11-12 from commit 6afca01. No cookies, no trackers, no third-party scripts.

ADJL Technology. Nothing on this site is an offer to sell or a solicitation of any security, and nothing here is investment advice. Descriptions of internal systems are general by design and omit parameters and thresholds.
