Geospatial field data collection for crews with no signal. I designed it, wrote most of its frontend and moved a national firm onto it.

My part
Founding designer, then Head of Product.
When
2023 to 2026
With
55 people at its peak, with nearly 30 in engineering. Later, a core product team of three. Who built what
Built in
TypeScript, React, React Native and Mapbox
Its site
www.codifi.com, which I rebuilt as well.
A field archaeologist in a hi-vis vest and sun hat enters data on an iPad in a rugged case, standing next to a shovel and a soil screen.
Memphis. Codifi on an iPad, next to the shovel test it is recording.

What a year of it came to

  • 11% to 44%of project revenue in the domestic offices ran through Codifi, 2025 jobs to 2026 jobs
  • 13 to 108people recording in Codifi each month
  • 777 to 11,190records captured in a month
  • 95%of Memphis’s 2026 field work ran in Codifi, with its margins held
  • 38%fewer GIS hours after fieldwork per revenue dollar on finished Codifi jobs
  • Days to hoursof data entry after fieldwork, in Memphis

At Chronicle Heritage. The user and record counts are August 2025 to August 2026. The GIS hours compare finished 2026 field jobs. The Memphis figures are that office’s own. How the rollout went

Part 1 of 3

What I made

One app in place of the six a survey used to need.

One survey should not need six apps.

Fieldwork ran on a stack nobody chose. A form builder for the forms, a map app for the points, web GIS for the layers, a spreadsheet for checking, a database somebody built years ago and a word processor for the report. Every seam between them was a manual handoff and a place the data could go wrong.

I designed Codifi to replace the seams. You set a project up once, collect on an iPad with no signal, check the data on the web before you leave the site. The report is written from the same records.

Eleven features I designed for a day in the field

Four of the eleven features I designed, each in a render of the real app. Any of the eleven opens for a closer look.

  • A phone drawing a line from GPS as the user walks, with LiveTrack on.
    Mobile

    LiveTrack

    Walk the boundary or the transect. The line draws itself as you go, with GPS accuracy on every point.

  • A phone showing a connected external GPS receiver and its live position data.
    Mobile

    Bring your GNSS receiver

    Pair a Bluetooth receiver. Satellites and fix quality ride along with every point you capture.

  • A tablet downloading an offline map area for a project.
    Mobile

    Offline map areas

    Download the project area’s basemaps and imagery before you lose signal.

  • A tablet showing a record’s history of edits and photos.
    Mobile and web

    Record history

    Who changed what and when, on every record. Review it before anything ships.

Seven more

Part 2 of 3

How I got a firm to use it

I worked with more than twenty offices and practice groups to get their fieldwork into Codifi.

From site visits and from the release videos I recorded. No sound.

More than twenty offices at once

I joined Codifi as employee seven and its sole designer. At its peak, the company had 55 people, with nearly 30 in engineering. I worked across product management, business analysis, engineering and QA before the restructure.

In August 2024 Codifi was folded into its parent. Chronicle Heritage is a cultural resource management firm working in all 50 states. Its offices ran fieldwork on web GIS, map apps, form builders and databases built by hand for each kind of project. My job became replacing all of it with one workflow, in more than twenty offices and practice groups at the same time.

That is a people problem more than a software one: a new tool costs good people time before it saves them any. So we built a cycle we could run with every team at once.

A list of twenty-two Microsoft Teams channels, each with Codifi’s yellow mark beside its name: Codifi-Paleontology, Portland, Underwater, Milwaukee, Dexter, Salt Lake, Headway, New Mexico, Geoarch, Arizona, Denver, Tarboro, Houston, California, Nevada, Buffalo, Built Environment, Puerto Rico, Tallahassee, Production, West Chester and Memphis.
The channels we ran it through in Teams: one for each office or practice group.

The cycle

  1. Deliverable inThe report or agency form the team has to produce, and the forms it uses today.
  2. An agent builds itThe composition, its forms and a demo project, set up in a sandbox for the team.
  3. They pick it apartThe team tries the demo against its own work, in a meeting with us.
  4. Recap and triageWhat changed and why, and a new demo. Back to step two until it fits.
  5. Into the fieldAnd when the product was the problem, the fix went to every team.

Around the cycle: training for crews and managers and site visits in Phoenix, Memphis and Pennsylvania. We moved more than 40 data models by API. What it came to is at the top of the page.

I had done this before, under a different title. Nine years as a pastor was nine years of helping people through change they did not ask for. The rest of that story is on the timeline.

In Memphis, days of data entry became hours

In late 2024 I spent days in the field with the Memphis crew, camera and notebook in hand. They were recording shovel tests in Codifi. I watched the work and turned what they told me into shipped changes within days.

The office cut its data entry after fieldwork from days to hours. By 2026 it was running 95% of its field work in Codifi with its margins held.

Try a report from the field records
Two field archaeologists with packs walk through an overgrown clearing with autumn trees behind them.
A crew on a transect outside Memphis.

How I checked the result

I led a review of 1,082 jobs, joining revenue and costs to Codifi usage and GIS timesheets. Finished Codifi jobs held their margins on field-heavy work. GIS hours after fieldwork were 38% lower per revenue dollar on finished Codifi jobs. That comparison covers the firm’s jobs, not just Memphis.

Work that agencies review

What crews recorded in Codifi went into the reports state and federal agencies review. So the product had to meet each agency’s rules as well as the crew’s day.

State and federal submissions
Each state and territory had its own forms and rules. I configured Codifi jurisdiction by jurisdiction so its reports filled each agency’s own templates. They went to state historic preservation offices and to federal agencies like the Bureau of Land Management and the Forest Service.
Defense
The Defense POW/MIA Accounting Agency was one of Codifi’s first customers. I led the relationship and ran discovery and scoping. I built its configuration and training. Its teams successfully used Codifi on two missions in Europe.
Security and accessibility
I owned Codifi’s part of a CMMC Level 2 review for controlled unclassified information. I built in single sign-on and multi-factor authentication for enterprise users. I designed it to WCAG 2.2 AA.

I cut an office’s setup from weeks to hours

Bringing an office on used to mean weeks or months on a few databases across two or three offices. I used AI agents to build each team’s configuration from the forms and reports it already used.

I could turn a database around in hours and put a demo in front of the team. Then I folded in their changes and sent back the questions we still needed to settle. That let us keep working with up to twenty offices at a time.

What made it work was writing down what each project knows, in a form an agent can use: layered docs that say how the codebase works, what its conventions are and what not to touch. Then I taught the team to work the same way.

Part 3 of 3

How I designed and built it

I designed in the real product and put builds in crews’ hands. What they told me went into the next release.

I led the redesign across product and marketing

A crew lead on an iPad and a GIS analyst at a desk work from the same records. They should plainly be looking at the same product. I directed the rebrand with an outside firm and carried it into the frontends. Then I led a full redesign across the web app, the mobile app and the marketing site.

I designed in code. A prototype in the real product went to a field crew and what came back went into the next build. I also rebuilt the marketing site and made the release videos. The App Store screens below are mine too.

App Store screen. Headline: Collect the right data, the first time, every time. An iPad shows a 3D terrain map with survey records.
Field collection, shown on the map.
App Store screen. Headline: Office and field, one platform. An iPad and a laptop show the same project map.
One project across the office and the field.
App Store screen. Headline: Built-in relationships, no redundant data entry. A diagram links a site to its units, trenches, features, shovel test pits and artifacts.
The data model, explained for the listing.
App Store screen. Headline: Scan a code. Start working. An iPad shows a tree of records ready to scan.
A way into the work with a QR code.

I rebuilt the marketing site around the whole workflow

I redesigned Codifi’s marketing site and rebuilt it in Next.js, replacing WordPress. The story follows a record from a paper form to the iPad, through checking in the office and into the report. The clips below are from that site.

  1. Collect in the field

  2. Check in the office

  3. Deliver the report

One thing at a time
The first hero showed three devices at once. I changed it to a sequence with one object on stage at a time. The sync story moved further down the page where there was room to explain it.
The product’s own design
I used the product’s typography and colors on the site and showed the real app in the device renders. The App Store screens above carry the same design into the listing.
One next step
The site leads to booking a demo. Each section explains another part of the work before asking someone to book time.

Open the marketing site I rebuilt

I made offline sync something a crew never has to manage

A crew can spend the whole day out of signal. So the rule I held to was that sync should never be something they have to manage. Every change is saved on the device the moment it is made and travels when there is signal. Nobody presses save and nobody stands in a field watching a bar fill.

Hydra is Hugo’s offline sync engine. My part was making it make sense to the people in the field: the cloud sync status, its icons and the motion that shows what is happening and when. When two people change the same field while they are apart the most recent edit wins. The older value stays in the history, where anyone can see it and bring it back.

Version 3.3 added Nearby Sync. Two tablets in the same field trade their records directly, with no internet involved. Whichever one finds signal later carries the crew’s records up with it.

Codifi on an iPad, seen at an angle: a list of 1,338 records, and in the header a cloud icon with a small cross on it, the offline state.
The cloud sync icon, in its offline state. From the App Store screens I designed.

Try it: two tablets, no signal

Step 1 of 4Turn the signal off on both tablets.

Mill Creek surveySynced

Maya’s iPad

Turn the signal off

STP-014

Result
Depth (cm)
40

Everything here is synced.

Mill Creek surveySynced

Sam’s iPad

Turn the signal off

STP-014

Result
Depth (cm)
40

Everything here is synced.

Both tablets have signal, and everything is synced.

What the office sees on the web

Result
Negative
Depth
40 cm
Everything that happened to STP-014, newest first
WhenWho changed whatRecall
9:12Maya on iPad. Depth: new to 40 cm
9:12Maya on iPad. Result: new to Negative

Two iPads with no signal and the office’s view under them. A guide takes you through it in four steps, from losing signal to seeing which edit the office keeps.

It was built for a bigger screen. On a phone it stacks into a long scroll.

Motion with a reason

Nearby Sync needed an icon for something nobody can see: two tablets trading records with no internet between them. I drew it out of Codifi’s own mark. Unwind the ring and it lays out as a stream between two points.

It moves only when something happens. Turn Nearby Sync on and the stream grows out of nothing. When someone connects, a pulse runs out and back, because sync goes both ways. Then it stops. At rest it is a still drawing. An icon that sits in the nav bar all day costs the battery nothing.

I worked the motion out as a prototype with an AI agent, then built it into the app.

Try it: the Nearby Sync icon

Nearby Sync is on and nothing is happening, so nothing is moving. The icon is a still drawing.

I built the map tools crews trust in the field

A record in the field is a place before it is anything else. So the map had to be good enough to trust and quick enough to use with gloves on. Most of what I built with my own hands is here.

LiveTrack, snapping, the camera compass and external GPS are among the features above. Two more tools did the daily work:

Draw Mode
Capture and edit points, lines and polygons on the device, with vertex editing and undo.
Offset Capture
Record a point you cannot stand on, from a bearing and a distance.
Codifi on an iPad: drawing and measuring tools over an aerial map of an intersection, with shapes, colours and line weights to choose from.
Draw Mode on the iPad.

“Software can’t replace the site visit”

A senior field director told me that. However good our app got, he said, he would still have to go out to a site and look. Only there could he see how everything sat and which way it faced.

I took that as a challenge. I designed and built the answer on the phone and on the web.

How each photo gets there
Clicking from photo to photo on the web, in a training project. One road name is blurred.

Field directors brought it up to me more than once, and they asked for more. Next on their list was taking the photo points and their cones out as a GIS file.

Native where it counts

React Native let us write the mobile app once. Fieldwork asked for things it does not do on its own. So I treat React Native as a way to reach the platform, not a way round it.

Where it stopped I wrote the native part. A diagnostics module in Objective-C reports memory, CPU and thermal state. I wrote several Expo config plugins. I added Emlid and Bad Elf receivers to the app’s GPS accessory bridge. The bridge itself is mostly a colleague’s work. Those two protocols are mine.

In the current release the interface uses SwiftUI components through Expo UI, native sheets and the system’s Liquid Glass material. It behaves like the iPad it runs on. From version 2.0 on I also ran the iOS releases: I built the app, uploaded it to App Store Connect and took it through two Expo SDK upgrades.

I designed forms that do the math

A field form is full of math. Repeating rows get added up, values come down from a parent record, some questions only apply sometimes and the map brings area, length and distance to a line. The person filling it in is at the hole with no signal.

Ripple is Hugo’s formula engine. It runs a rule written once in the project’s template everywhere the form does: on an iPad with no signal, in the browser and on the server.

What I cared about was how that feels to fill in. A calculated field is marked so you know a formula is behind it. If you type over it your value stands, because the person at the hole knows something the formula does not. And a question that does not apply is simply not there.

Codifi on an iPad: a record called Points of Interest 1, with its polygon area, perimeter, centroid and UTM coordinates filled in by formulas.
Area, perimeter, centroid and coordinates, worked out by formulas.

Try it: a shovel test that fills itself in

Mill Creek survey

A shovel test on transect T-2

STP-014

Stratigraphy
Horizons, from the surface down
Top (cm) FXBottom (cm)TextureThickness FX
0 cm20 cm
20 cm25 cm

Step 1 of 5

Change where the first horizon ends. Try 30.

Result
Did the test find anything?
Location
T-2

Drag the point, or use the sliders.

Distance from Transect FX3.3 m

The six rules behind this form

  • ValueTop

    The first horizon starts at the surface. Each one after starts where the one above it ended, and nobody types it.

    {"if": [ {"==": [ {"rowIndex": [ {"var": ""} ]}, 0]}, 0, {"repeaterFieldAtRow": ["Horizon", "Bottom", {"-": [ {"rowIndex": [ {"var": ""} ]}, 1]} ]} ]}

    Right now: 0 cm, 20 cm

  • ValueThickness

    Each horizon’s thickness is its bottom minus its top.

    {"-": [ {"getFieldByLabel": [ {"var": ""}, "Bottom"]}, {"getFieldByLabel": [ {"var": ""}, "Top"]} ]}

    Right now: 20 cm, 25 cm

  • ValueTotal Depth

    Total depth is the deepest horizon’s bottom. If you type a depth yourself, yours wins.

    {"maxRepeater": ["Horizon", "Bottom"]}

    Right now: 45 cm

  • VisibilityArtifact Count

    Only ask how many artifacts when the result is Positive.

    {"==": [ {"getFieldByLabel": [ {"var": ""}, "Result"]}, "Positive"]}

    Right now: hidden

  • ValueDistance from Transect

    Measure from this point to its parent transect’s line, to a tenth of a metre.

    {"round": [ {"pointToLineDistance": [ {"var": ""}, {"parent": [ {"var": ""} ]} ]}, 1]}

    Right now: 3.3 m

  • VisibilityOff the line

    Warn when the point is more than 10 m off the transect.

    {">": [ {"getFieldByLabel": [ {"var": ""}, "Distance from Transect"]}, 10]}

    Right now: hidden

A shovel test form beside a small map and the rules that drive it. A short tour walks you through five changes and marks each rule as it fires.

It was built for a bigger screen. On a phone it stacks into a long scroll.

Reports: the deliverable writes itself

The report is the reason the fieldwork happens. In Codifi it is a Word or Excel file with tags in it. You bring the template your agency already accepts and the server fills it from the records: fields, tables of child records, photos with their captions and bearings.

Nothing is retyped so nothing is mistyped. The Memphis office cut its post-field data entry from days to hours.

Try it: one template, the same records

Anything in double curly brackets is filled in from the records. Edit it. A tag the engine cannot read prints __INVALID TAG__, the way a real report does.

The report

Transect T-2: shovel test results

Recorded by Maya R. on October 14, 2026

3 shovel tests were dug on this transect.

Shovel tests on this transect
STP-012Negative60 cm
STP-013Positive45 cm
STP-014Negative45 cm

Cultural material was found. See the positive tests above.

Every tag was filled.

A report template on the left and the page it writes on the right, from the shovel test in the form demo above. Mark STP-014 Positive up there and the last line here changes.

It was built for a bigger screen. On a phone it stacks into a long scroll.

Features I designed and built

I have been on the product since version 1, through version 2 and more than 25 releases since. These are some of the features I designed and helped build in the most recent ones.

I owned the roadmap, the docs and the release notes and cut the iOS builds myself.

  1. Version 3.0

    February 12, 2026

    Hydra is Hugo’s offline sync engine. I designed and built what crews see of it: the sync status, recalling an earlier value and a history of every edit, offline ones included.

  2. Version 3.1

    March 31, 2026

    The forms’ calculated fields and conditional visibility, on Ripple (Hugo’s formula engine). LiveTrack. Annotation and measurement. QR codes and batch record creation. A redesigned records list and a QA table on the device.

  3. Version 3.2

    June 24, 2026

    The redesign across web and mobile. Pipelines for geospatial rasters: USGS 3DEP LiDAR flattened into digital elevation models, with hillshades lit from several directions or one the user picks. Historical topo and other raster layers.

  4. Version 3.3

    August 23, 2026

    Nearby Sync’s experience and its icon. Camera Compass. Draw Mode and GeoTools on the web: trace, snap and shape history. Survey-grade positioning from the Emlid Reach RX2.

Alex and Hugo stand on a sand dune with an arm round each other’s shoulders, each holding a wooden sandboard, under a clear blue sky.
Hugo and me, March 2026.

Three of us rebuilt it.

After Codifi’s larger startup phase, Hugo, Jonathan and I rebuilt the product and led its rollout. Each of us covered what the others could not: what to build, how it works underneath, and whether it actually does.

  • Alex Voigt

    Head of Product

    Designed the product and its design system and wrote most of what you touch in it. Took a minimal first version, redid most of its early designs and led it to a company-wide rollout.

  • Hugo Bounoua

    Solutions architect

    Architected Hydra, the sync engine, and Ripple, the formula engine, and built much of the backend underneath them.

  • Jonathan Sims

    Project manager

    Ran the projects, the regression testing and QA, and the log of what users asked for. Each release started from what crews needed and was tested before it went out.

I would work with both of them again tomorrow.

The demos on this page are mine. They do what Codifi’s public documentation says a crew will see and contain none of Codifi’s code.

Ask Alex

What would you like to see?

Type / for the kinds of work.