Skip to content

Jobs, courses, housing and the paperwork: one app instead of four rumors

A React Native app for people working abroad, holding the four things they actually search for (work, training, housing and official guidance) behind one account.

19:42
FarholdGood evening, AnaAM
Search 1,046 jobs, courses, homes, guides
Notice · 12 SepBiometrics are now booked in the appPermit renewals: the paper form is withdrawn. Step 5 of the guidance is updated.

Four record types · 1,046

Directory
+37 this week468Jobs
+6 this week142Courses
+22 this week371Homes
+2 this week65Guidance

Arrived this week · 67 new

Warehouse picker, nightsKestrel Row Fulfilment · £14.30/hToday
1-bed flat, Weaver's Yard£725 pcm · £999 all inYesterday
English for work, level 2Millbrook College · fundedTue
Renewing your work permit6 steps · updated 12 SepSat
HomeDirectorySavedAccount

The brief, in specifics

Industry
Professional Services
Duration
16 weeks
Cooperation model
Fixed price, phased
Services
Mobile engineeringContent modelAccount & verification
Integrations
Firebase AuthPush notificationsContent APIEmail delivery
Technologies
React NativeExpoExpo RouterTypeScriptFirebaseFlashList
Team
1 Project lead2 Mobile engineers1 Product designer

Client name withheld under NDA. Engagement details are shown to the extent our agreement permits.

Four record types

Jobs, courses, property and essential information each keep the shape that makes them useful.

Jobs, courses, property and essential information are four record types with four detail views, because a job needs salary, employer and a way to apply while a property needs rent, deposit and photographs. Flattening them into one card shape would have made every one of them slightly wrong. What they share is the directory and the search; the record stays their own.

What shipped
  • Four record types with four purpose-built detail views
  • Shared directory and search, unshared record shape
  • Nothing flattened into a lowest-common-denominator card
19:42
Job

Warehouse picker, nights

Kestrel Row Fulfilment

Unit 7, Tanners Road · 1.8 mi · closes Fri 25 Sep

Weekly pay, before tax

£600.60£14.30/h

42 h a week, averaged over the 8-day cycle.

Shift pattern

4 on / 4 off
D1D2D3D4D5D6D7D8
Shift19:00 – 07:00 Hours42 h / week avg

What you need

Right to work Boots provided No experience needed

Details

ContractPermanent · 6-week trial
StartsMon 5 Oct
PostedToday · 1.8 mi from you
SavedApply with your profile
On screen

A job in the detail sheet a job needs: weekly pay before tax worked out from the hourly rate, a 4 on / 4 off night shift pattern drawn across its 8-day cycle, average hours, what the job asks for, and apply.

08:14
Sign in on this phoneStep 2 of 3
Welcome back, AnaYour old number can’t receive a code. Your email can, so that’s the way in.

Ways in

Email a sign-in linka•••••@mailbox.com · opened 08:13
Text a code+•• ••• ••• 214 · old SIM, not in this phone

Move to this number

Self-serve
New number+44 7••• ••• 583
481092

Code sent to the new SIM. Your email stays as a second way in.

Back from your account

14Saved items
3Applications
5Documents
9Recent searches
Continue as Ana Moraru
On screen

Signing in on a new phone: the old number can't receive a code, so the email link is the way in, the account moves to the new number from inside the app, and saved items, applications, documents and searches come back with it.

An account that survives a new phone

Verification and recovery built for an audience that changes handsets often.

Verification and recovery were built for an audience that changes handsets and numbers often. A new SIM in a new country shouldn't cost someone their saved jobs and submitted applications. Recovery works from email as well as phone, and an account can move to a new number from inside the app, with no support conversation in a second language.

What shipped
  • Recovery by email as well as phone number
  • A number change is self-serve, not a support conversation
  • Saved items and applications survive a new handset

Built for modest devices

A virtualized list, built for the phones in the audience's hands.

FlashList virtualizes the directory so a thousand records scroll at frame rate on a three-year-old mid-range Android, the phones this audience actually holds. Images are sized for those screens instead of downscaled from desktop assets, and the app was profiled on real low-end hardware, not a simulator.

What shipped
  • Virtualized lists holding frame rate on mid-range Android
  • Images sized for the target screens, not downscaled desktop assets
  • Profiled on real low-end hardware, not a simulator
19:42
Directory1,046 records · 4 types3
Search within filters
JobsNightsWithin 5 miClear
38 jobs match all 3Sort: nearest
Notice · 12 SepBiometrics are now booked in the app
Warehouse picker, nightsKestrel Row Fulfilment · 1.8 mi Nights4 on / 4 off£14.30per hour
Night bakerHollin Lane Bakery · 0.9 mi NightsSun–Thu£13.85per hour
Care assistant, nightsAlder House Care · 2.4 mi Nights3 nightsApplied£14.10per hour
Parcel sorterRiverside Depot · 3.1 mi NightsMon–Fri£13.60per hour
Cleaner, office nightsBrightwell Facilities · 1.2 mi NightsMon–Fri£12.90per hour
Food production operativeGreenacre Foods · 4.6 mi Nights4 on / 4 off£13.95per hour
HomeDirectorySavedAccount
On screen

The directory with three filters switched on (jobs, nights, within 5 miles) and every row beneath them obeying all three, in fixed-height rows built for a virtualised list.

19:42
Guidance

Renewing your work permit

6 steps · updated 12 Sep 2026 · your permit ends 30 Nov 2026

Notice · 12 SepStep 5 changed: book biometrics in the app
2ready1expiring2missing1waiting
Check when your permit endsResidence permit card · Ends 30 Nov 202674 days left: inside the windowReady
2Passport valid long enoughPassport · Expires 4 Mar 2027Needed to 17 Mar 2027 — 13 days shortExpiring
3Proof of your jobEmployer letter + 1 more · Dated 22 Jul 202657 days old — ask for a new oneMissing
Proof of addressTenancy agreement · Runs to 11 May 2027Current, in your nameReady
5Book biometricsNewAppointment · Not bookedNo appointment on your accountMissing
6Pay and submitApplication · Not startedWaits on steps 2, 3 and 5Waiting
DocumentsBook biometrics
On screen

Official guidance as six numbered steps with your own documents checked against them: two ready, a passport expiring before it is needed, two missing, one waiting, and the changed step flagged under the notice that announced it.

News where people already are

Announcements sit beside services, where people will actually see them.

Announcements and news sit inside the directory alongside services, because a channel people have to remember to open is a channel that goes unread. Time-sensitive items (a visa deadline, a rule change) surface at the top of the screen people were already using for something else.

What shipped
  • Announcements inside the directory, not a separate feed
  • Time-sensitive items surface where people already are
  • No channel that depends on being remembered
19:42
Course

English for work, level 2

Millbrook Adult Learning College

B1 · 12 weeks · 4 of 16 left

You applied on 9 SepHeld on your account, not on this phone

Timetable

12 weeks
Mon—Tue18:30Wed—Thu18:30Fri—Sat—Sun—

Tue 6 Oct – Thu 17 Dec · 18:30 – 20:30

Funding

TuitionFunded place£0
MaterialsPaid on day one£12

Eligible if you have

Work permit or right to work

3 months at a local address

Who runs itMillbrook Adult Learning CollegeTutor: Helen Carrow Room 4, Canal Street Centre
SavedView application

One account, everything saved

On screen

A course with its timetable, its funding and who runs it, and the application already sent, held on the account instead of on the phone.

Saved items and applications persist on the account, not in a browser someone loses.

Saved items, applications and search history live on the account instead of in the app's local storage, so they survive a reinstall, a new phone, or the loss of the browser someone had been using. That was the single most requested thing from the audience: the previous tool lost everything the moment a handset did.

What shipped
  • Saved items and applications held on the account
  • Survives reinstall, new handset or a lost browser
  • The audience's single most requested change
Introduction

What we were brought in to do

The goal was to support workers living away from home. We built the app that puts jobs, courses, property and official information in one place, with an account that survives a change of phone.

An app for workers living away from home, whose essential information was genuinely scattered: a job board in one place, a landlord's number in a group chat, a course on a poster, and official guidance in a language they were still learning. The cost of that fragmentation falls hardest on the people least equipped to absorb it, which is what made consolidating it worth a build.

Mobile Engineering

Where the old way broke

  • The information people need is real but scattered: a job board here, a landlord's number in a group chat, a course advertised on a poster, and official guidance in a language they're still learning. The cost of that fragmentation is paid by the people least able to afford it.

    Beyond the scattering, the audience's own circumstances broke the usual assumptions. Handsets are changed and lost often, and every previous tool had kept saved jobs and submitted applications on the device, so a new SIM in a new country meant starting again. The phones are also modest, and a directory that scrolls badly on a three-year-old Android is a directory nobody uses twice.

    One directory with four record types, each opening the detail view its own kind actually needs, plus a verified account so saved items and applications survive a lost or replaced handset.

The solution

What we built together

05
  1. 01

    Modeled four record types, each with its own shape

    Four types were settled before any interface work, because a single card shape would have made each of the four slightly wrong in a different way.

  2. 02

    Gave each type the detail sheet it needs: a job isn't an apartment

    Each type opens the detail view its own kind needs, so nothing is flattened into a shape that serves all four badly.

  3. 03

    Built email verification and recovery properly, because a lost handset is common

    Recovery works from email as well as phone and a number change is self-serve, because for this audience a new handset and a new SIM are routine.

  4. 04

    Used a virtualized list, because these directories are long and the phones are modest

    The directory is virtualized and its images are sized for the target screens, profiled on a low-end handset bought from the target market instead of on a simulator.

  5. 05

    Kept news beside services, since that's where announcements are actually read

    This was tested by putting a visa-deadline notice in both places for two weeks; the directory placement was read by an order of magnitude more people.

Process

Phase by phase

  1. Phase 1: Four Types, Not One

    A Job Is Not A Flat

    Modeled jobs, courses, properties and essential information as distinct types, because forcing them into one record shape loses what makes each one useful.

    • Content Model
    • Four Detail Sheets
    • Directory Schema
  2. Phase 2: The Account

    Surviving A Lost Phone

    Built registration, email verification and password recovery to a standard that assumes the handset will change, because for this audience it frequently does.

    • Auth Flow
    • Email Verification
    • Recovery
  3. Phase 3: The App

    Modest Phones, Long Lists

    Built the tabs and directory with a virtualized list, because the audience's devices aren't the ones on the design team's desks.

    • Tab Navigation
    • Virtualised Directory
    • Detail Modals
  4. Phase 4: News In The Same Place

    Where Announcements Are Read

    Put news alongside services, inside an app people already open, because that's where an announcement actually lands.

    • News Feed
    • Announcements
    • Content Publishing
19:42
Property1 / 8

1-bed flat, Weaver's Yard

1 bed · 1 bath · 42 m² · Furnished

Available 1 Oct · Eastbank Lettings

Whole monthly costnot just the rent£999
Rent£725
Council tax (band A)£112
Energy, estimated£96
Water£38
Broadband£28
Bus to your saved job +£64£1,063
To move inDeposit £836 + first month £725£1,561
ShareAsk to view
On screen

A property with the whole monthly cost worked out, beyond just the rent (council tax, energy, water and broadband added, bus fare to a saved job alongside) and what it takes to move in.

Operational results after launch

4

Record types modelled

4+

Sources replaced

Self-serve

Account recovery

Low-end devices

List performance target

Record types modeled and sources replaced are counts. Account recovery being self-serve is a capability claim. The list performance target is stated as low-end devices, not a frame rate, because the handsets the audience actually carries set the target.

Client name withheld under NDA. Figures are approximate, drawn from the engagement’s own reporting.

Ways of working

About our collaboration

  1. 01

    We resisted flattening the four record types into one directory shape, and that was the main design pressure throughout. A job and an apartment need different detail views, and merging them would have made the app tidier and less useful. Account recovery was treated as a core feature from the start.

    Phased, with the four record types settled before any interface work, because flattening them into one card shape would have made all four slightly wrong. Performance was tested on the audience's actual devices: a low-end handset from the target market was bought in week two and every build was checked on it.

What we'd carry into the next one

  1. 01

    Forcing four kinds of record into one shape loses exactly what made each of them useful.

    One card shape for four record types loses the specific field that made each useful, and the loss is invisible until someone tries to act on the listing.

  2. 02

    For some audiences a lost handset is routine, and account recovery becomes a core feature instead of a support path.

    For this audience, losing a handset is ordinary, which moves account recovery from a support path to a core feature.

  3. 03

    Build for the devices the audience owns, not the devices the team develops on.

    The devices on a design desk aren't the devices in the audience's hands, and the gap is exactly where a long directory stops being usable.

  4. 04

    An announcement lands where people already are, not in a channel built for it.

    Putting announcements where people already are beat building a channel for them, because the channel would have required an intention nobody has.

Official guidance, six numbered steps

Not a page of rules to decode. Your own documents, checked step by step.

A permit renewal as the app holds it: each step carries its rule, and the documents on the account are checked against it, so a passport that runs out thirteen days too early shows as expiring before anyone joins a queue. Pick a step, or use the arrow keys once one is focused.

Renewing your work permit · updated 12 Sep 2026 · checked Thu 17 Sep

Illustrative guidance: invented rules, not a real procedure

Step 2 · Passport valid long enough

Rule: Your passport must be valid for 6 months after the day you apply.

Your documents against this step

  • PassportExpires 4 Mar 2027ExpiringNeeded to 17 Mar 2027 — 13 days short

The date rule, drawn to scale

Must be valid · to 17 Mar 2027
Passport valid · to 4 Mar 2027
13 days short
Today, Thu 17 Sep
· Expires 4 Mar
Step 2: ExpiringNext: Renew passport first.

Check timings are illustrative. The documents are the ones held on the account, so the same check comes back on a new phone.

Architecture

From a published listing to a long list that still scrolls on a modest phone

React Native with Expo and Expo Router, TypeScript and Firebase. Each step exists because this audience changes handsets often, carries modest phones, and was piecing things together from four different sources before.

  1. 01 · Publish
    Records, news and announcementsListings and guidance are published into one directory, and news goes in beside them, never into a separate feed.
  2. 02 · Model
    Four record typesShared directory and search, unshared record shape: a job keeps pay, employer and apply; a property keeps rent, deposit and photographs.
  3. 03 · Identity
    Firebase accountEmail verification at sign-up. Recovery works from email as well as phone, and moving to a new number is done in the app.
  4. 04 · State
    Held on the accountSaved items, applications and search history live on the account, not in local storage, so a reinstall or new handset loses nothing.
  5. 05 · Device
    Expo app, virtualised listFlashList renders the long directory and images are sized for the target screens. Builds were checked on a low-end handset from the target market.

Current guidance, a way back in, a phone that copes

Announcements in place, self-serve recovery & low-end devices as the target

A rule change lands where people already look

Essential information is its own record type in the same directory as the services. Time-sensitive items, a visa deadline or a rule change, surface at the top of the screen people open for work and housing, not in a channel they would have to remember.

Nobody to call is not a lock-out

Recovery works from email as well as phone, and moving the account to a new number is self-serve in the app, not a support conversation in a second language. Saved items and applications are held on the account, so they come back too.

Built on the phone people carry

The directory is a virtualized FlashList and images are sized for the target screens. A low-end handset from the target market was bought in week two and every build was checked on it, not on a simulator.

Serving people whose jobs, housing and paperwork are scattered across group chats and noticeboards? Scope your build in 3 minutes.

Scope your build
Have a project?

Let's talk

Running a large platform, shaping a first MVP, or getting a product ready for a funding round? Tell us where you are. We'll shape the process around it, and stay with you after launch.