Codifi

The whole field workflow in one product, built for crews with no signal.

My part
Product designer, then Head of Product. I designed it and wrote most of the frontend.
When
2023 to 2026
With
A small team. Hugo Bounoua, our solutions architect, built the sync engine and much of the backend.
Built in
TypeScript, React, React Native and Mapbox
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.

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.

Codifi replaces 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, and the report is written from the same records.

Hydra: sync you do not have to think about

Hydra is Codifi’s offline-first sync engine. 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.

Hugo Bounoua, our solutions architect, built the engine. My job was everything a crew sees of it, and the rule I held to was that sync should never be something they have to manage. It has one icon and three states. When two people change the same field while they are apart, the most recent edit wins, and the older value stays in the history, where anyone can see it and bring it back.

Version 3.3 went a step further with Nearby Sync. Two tablets in the same field trade their records directly, with no internet involved. Later, whichever one finds signal carries the crew’s records up with it.

App Store screen I designed. Headline: No signal? No problem. An iPad shows 1,338 records with the cloud icon in its offline state.
The App Store screen for it. I designed these too.

Try it: two tablets, no signal

  1. Turn the signal off on both tablets.
  2. Change the depth on each one. They now disagree, and neither minds.
  3. Bring one signal back, then the other, and watch the office.
Mill Creek surveySynced

Maya’s iPad

STP-014

Result
Depth (cm)
40

Everything here is synced.

Tablet to tablet. No internet.

Mill Creek surveySynced

Sam’s iPhone

STP-014

Result
Depth (cm)
40

Everything here is synced.

Both tablets have signal, and everything is synced.

What the office sees

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

A toy of mine in a couple of hundred lines, not Codifi’s code. It does what Codifi’s public documentation says a crew will experience, and nothing more.

Ripple: forms that do the math

Ripple is Codifi’s formula engine. Someone writes a rule once, in the project’s template, and it runs everywhere the form does: on an iPad with no signal, in the browser, and on the server. It adds up repeating rows, reaches up to a parent record, asks a question only when it applies, and does geometry: area, length, distance to a line.

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.

App Store screen I designed. Headline: Less work. More done. An iPad shows a record whose area, perimeter and coordinates are filled in 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)Bottom (cm)TextureThickness FX
20 cm
25 cm
Result
Did the test find anything?
Location
T-2

Drag the point, or use the sliders.

Distance from Transect FX3.3 m

The five rules behind this form

  • 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

The rules are written the way Codifi’s docs show Ripple storing them, as JsonLogic. The little engine running them here is mine, not Codifi’s.

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

This report is written from the shovel test in the form above. Go back and mark STP-014 Positive, and the last line here changes.

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.

The tags follow Codifi’s documented conventions. The engine is another toy of mine.

Maps, and knowing exactly where you stand

Most of what I built with my own hands is here. 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.

Draw Mode
Capture and edit points, lines and polygons on the device, with vertex editing and undo.
Magnet Snapping
The crosshair pulls onto geometry that is already on the map.
Offset Capture
Record a point you cannot stand on, from a bearing and a distance.
LiveTrack
Walk the line and it draws itself, with more points on the turns.
Camera Compass
The camera shows your bearing, referenced to true north, and saves it with the photo.
External GPS
Survey-grade receivers over Bluetooth, from Emlid, Bad Elf, Juniper, Trimble, EOS and Garmin, with the quality of the fix shown as you work.
App Store screen I designed. Headline: From consumer GPS to centimeter accuracy. An iPad shows the external devices screen with a connected receiver.
App Store screen I designed. Headline: Walk the line. We’ll map it. Intelligently. An iPad shows a path being recorded around a building.
App Store screen I designed. Headline: Annotate. Measure. Document. An iPad shows drawing and measuring tools over an aerial map.

One design system, three surfaces

I owned Codifi’s design system. We refined it with an outside agency, and then I led a full redesign across the web app, the mobile app and the marketing site, so a crew lead on an iPad and a GIS analyst at a desk are plainly looking at the same product.

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 designed how the product is presented. These are its App Store screens.

App Store screen. Headline: Collect the right data, the first time, every time. An iPad shows a 3D terrain map with survey records.
App Store screen. Headline: Office and field, one platform. An iPad and a laptop show the same project map.
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.
App Store screen. Headline: Scan a code. Start working. An iPad shows a tree of records ready to scan.

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, so 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.

Logo to stream in five frames, drawn by the same code that animates it.

  1. The mark
  2. Its gaps close
  3. The ring unwinds
  4. It uncurls
  5. The stream

My motion study, rebuilt for this page with the same geometry and timings. It is not the app’s code.

Four releases in seven months

Over the last year I wrote about half of the web app’s commits and more than half of the mobile app’s, while owning the roadmap, the docs and the release notes.

  1. Version 3.0

    February 12, 2026

    Hydra, the offline-first sync engine. Activity history on every project and record.

  2. Version 3.1

    March 31, 2026

    Calculated fields and conditional visibility. Annotation and measurement. LiveTrack. QR codes and batch record creation. A QA table on the device.

  3. Version 3.2

    June 24, 2026

    A redesigned web app. Raster map layers. Overlay data tables. Navigate To. A refreshed data entry screen. Auto-numbering.

  4. Version 3.3

    August 23, 2026

    Nearby Sync. Single sign-on and multi-factor sign-in. Camera Compass. Magnet Snapping and Offset Capture. Draw Mode on the web. File Geodatabase export.

Building with AI agents

Since August 2025 I have written production code with Claude as a daily collaborator: more than 1,100 AI-assisted commits across the web and mobile apps.

The part that mattered was not the typing. It was writing down what the project knows, in a form an agent can use: layered docs that say how this codebase works, what its conventions are, and what not to touch. People read the same docs, and they are better for having to be that clear.

Then I taught the team. I wrote the guide a new teammate used to pick the workflow up.

Two field archaeologists with packs work their way across an overgrown clearing, with autumn trees behind them under a clear sky.

Then get a whole company to use it

In 2024 Codifi was folded into its parent, Chronicle Heritage, and my job grew from shipping features to changing how a national firm works. That meant training crews and managers, visiting sites in Phoenix, Tallahassee and Memphis, listening to skeptics, and earning trust one office at a time.

The rest of that story is on the timeline.