Disclaimer: Independent product concept by Kaushal Khodifad. Not a live commercial product.return to portfolio
Disclaimer: Independent product concept by Kaushal Khodifad.
Lifecycle plot capture · contract farming

The area gap is physics, not people.

Field technicians measure the same smallholding six times a season and land 15 to 25% away from the contracted area. Everyone reads that as care. It is not. A half-acre square walked once on a single-frequency handset carries 12.6% of area error from the measurement method alone, before anyone is careless.

Which reframes the whole product. Six captures per season is not a compliance burden to be minimised. It is six independent looks at one boundary, and with a club’s shared edges it is the error-reduction mechanism. Traverse is built around that.

One boundary, half an acre, Rs 60,000 an acre

One walk, single-frequency handset12.6%
Reconcile 6 stage captures5.1%
Dual-frequency L1+L5 handset2.2%
Club shared-edge constraint1.8%

Disputed value on that one plot falls from Rs 3,777 to Rs 542. No external hardware anywhere in that chain.

12.6%
Area error from one walk on a single-frequency handset, half-acre plot
1.8%
After six reconciled captures, a dual-frequency handset and club topology
7.0x
Reduction, with zero external GPS hardware and no change to the walk
49.8%
Of observed settlement variance that is the measurement itself, across 157 settled plots

EngineEvery figure above was computed by src/lib/traverse when this page rendered, from the covariance of a correlated GNSS error along a walked boundary. Nothing on this tab is a number typed into a paragraph.

1Finding one

Split the 15 to 25% and neither half is carelessness.

Observed settlement variance is contracted area against measured area. That gap has exactly two components: an area written from an eye estimate at onboarding, and a single walk at the handset's horizontal sigma. Both are properties of the method.

Settlement variance, decomposed157 post-harvest captures
Observed, contracted against measured16.4%

median 11.0%, p90 26.3%

The contract's own eye estimate11.9%

written once at onboarding, then never revisited

The measurement itself11.9%

one walk at the device's sigma, 50% of the total

Neither component is a care problem. One is an area written from an eye estimate, the other is a single walk at the device's horizontal sigma. Both are properties of the capture method, and both shrink when the method changes rather than when the technician tries harder.

Synthetic setMeasured over the 157 plots in the synthetic world that reached a post-harvest capture. 30% of them settle more than 15% away from their contracted area and 12% more than 25%, which is the band this study set out to explain, arrived at from the physics rather than assumed.

Why a slower, more careful walk does not help

Consumer GNSS error drifts, it does not flicker. It decorrelates over about 7 m of travel, so two fixes 2.5 m apart are very nearly the same error. Logging more of them adds points, not information.

72
fixes logged
9
independent looks they are worth

Which is why the mechanism has to be more separate looks at the boundary, on different days, from different sides. Six stages, and a neighbour walking the other face of the same bund.

And why the smallest plots are the worst

Area error scales with perimeter and the area does not, so error as a percentage runs roughly as one over the square root of the plot. The plots that matter most to a smallholder are the ones the method serves worst.

0.5 ac12.6%
1 ac7.7%
2 ac4.6%
5 ac2.4%
10 ac1.4%

One walk, sigma 5.0 m. Median plot in this belt is 1.59 acres; 69 of 179 sit under half a hectare.

2The model, live

Play with it until the collapse stops being a claim.

Every output below is recomputed by the engine on each change: the error, the polygon, the band around it, the simulated walks and the rupees. Start where the operator is today, one walk on an L1 handset, then turn the mechanism on.

Capture configuration
0.50 ac

0.5 to 10 acres is the real range in this belt.

Plot shape
Handset
5.00 m

Published band for this class: 4.5 to 8 m. Study input.

Capture method

App logs a track while the technician walks the bund.

1 of 6

One look at the boundary. Today's model.

0%

A shared edge is walked from both sides, so it is observed twice.

12.6%
Expected area error, one sigma
± 0.063 ac on 0.50 ac
Rs 3,777
Disputed value on this plot, per settlement
at Rs 60,000/ac
Rs 12.5 L
Across the 160-farmer book, 179 plots, 396 ac
one walk today: Rs 12.5 L
One boundary, as measured72 fixes, 2.7 min per walk
20 m
True boundary Simulated capture, one per stage One-sigma area band

Simulated1 seeded GNSS walk of this boundary, base seed 4211, sigma 5.00 m, error decorrelating over 7 m along the track. No device was used and no real plot is represented.

What each simulated capture readworst single +15.8%
Onboarding0.579 ac+15.8%

Same technician, same boundary, same care. The spread between these readings is the problem, and it is why a single capture cannot be the settlement number.

The collapse, on a 0.50 acre plot7.0x
0One walk, single-frequency handset12.6%

0.5 acre plot, sigma 5.0 m, 72 fixes at 2.5 m spacing, decorrelating over 7 m.

1Reconcile 6 stage captures5.1%

6 independent looks at one boundary on 6 different days. Random error falls as 1/sqrt(N), so 2.45x. Assumes no shared path offset.

2Dual-frequency L1+L5 handset2.2%

Sigma 5.0 m to 2.10 m. Area error is linear in sigma. Handset refresh, no external hardware, no new training.

3Club shared-edge constraint1.8%

60% of the perimeter is shared with a neighbour and therefore observed twice. Variance halves on that portion: sqrt(1 - f/2).

Your configuration1 capture · L1 · 0% shared12.6%

The four rungs above scale sigma linearly, which is the first-order result. This row re-integrates the covariance at the sigma and method you actually selected, so it sits a little off the rung above it. Where they disagree, this row is the accurate one.

Disputed value, one walk, 0.50 acRs 3,777
Disputed value, full mechanismRs 542
Fixes recorded per capture72
Worth this many independent looks9.0

Two models, and where they part

Engine, correlated track, one sigma12.6% to 1.8%
Generator, 4 independent vertices, one sigma15.8% to 2.2%
Reduction, the claim being made7.0x and 7.1x

These two do not agree on the level and should not be presented as if they did. The generator observes 4 vertices independently; the engine integrates a correlated error along the whole walked track, which is the more faithful model and the one every figure on this page uses. On the same statistic they sit about 20% apart. What does survive both models is the reduction factor, and that is the claim this study is actually making: the mechanism is worth about seven times, whichever noise model you believe. The closed form itself is checked against a Monte Carlo of its own covariance in selftest.ts, which is the like-for-like test.

Why a longer walk does not fix it

Decorrelation length, along track7 m
Fix spacing on a logged walk2.5 m
Sigma cut by a 20 s corner dwell33%

Receiver error drifts, it does not flicker. Two fixes 2.5 m apart are almost the same error, so logging more of them buys almost nothing, and standing still for 20 s buys a fraction of what the square root of the sample count would promise. The way out is more independent looks at the boundary, not a longer walk. That is the whole design.

Walked track, one fix every 2.5 m, error decorrelating over 7 m.

Every rung assumes the captures are of the same physical boundary. A plot that genuinely changed, for example a sub-let strip, is a data event, not a measurement error, and the anomaly rules must separate the two.

Book roll-up: each of the 179 plots is modelled at its own acreage, rounded to the nearest quarter acre, at its own measured shared-boundary share and at its own crop gross value. Disputes settle plot by plot, so they add rather than cancel.

3Finding two

Satellite is a clock here, not a ruler.

The obvious move is to check the walk against free imagery. At this plot size that does not settle disputes, it manufactures them: a 10 m pixel on a half-acre holding is arbitrating two contracts at once. Temporal questions are a different matter entirely, and those the same pixels answer well.

Resolution
PLT-0015 · survey 109/6 · Soybean · 0.63 ac · 0.255 ha · 5 vertices
Pure: wholly inside a neighbourMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryPure: wholly inside a neighbourMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside a neighbourMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside this plotMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside this plotPure: wholly inside this plotPure: wholly inside this plotMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryPure: wholly inside this plotPure: wholly inside this plotPure: wholly inside this plotMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryPure: wholly inside this plotPure: wholly inside this plotPure: wholly inside this plotPure: wholly inside this plotMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside this plotPure: wholly inside this plotMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryMixed: straddles a boundaryPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbourPure: wholly inside a neighbour
13 pure pixels 24 mixed, every one across two holdings The contracted boundary

EnginePixels classified at render time against this plot’s actual geometry and its 4 abutting neighbours, using the study’s own rule: a pixel counts as pure only when its centre and all four corners fall inside one holding. 99.9% of this boundary is shared with a neighbour, so nearly every edge pixel is arbitrating two contracts at once.

At 10 m, on this plot
Best-case boundary area error11.4%
One walk of the same plot, L1 handset10.7%
Area sitting in mixed pixels36%
Pure pixels, counted on this geometry13
Pure pixels, closed form16
Area recoverable from pure pixels51%

At 10 m this plot carries a time series (16 clean pixels) but not a boundary (11.4% area error, 36% of the area in mixed pixels).

The imagery is worse than the walk it would be checking. Using it as the arbiter of a boundary dispute does not settle disputes, it manufactures them.

What the same pixels are good forUSABLE
OnbSowGermPestPre-HPost-H

Canopy cover over the season, from the lifecycle model. Did the crop emerge, did it die back, did it recover: every one of those is a question about a time series, and a time series needs a handful of clean pixels and no boundary at all. Counted on this plot’s real geometry there are 13 of them at 10 m, against 16 from the closed form for a square of the same acreage, refreshed every 5 to 10 days. Either way it is plenty. That is the job satellite should be given.

Measured across this world
Sub-0.5 ha plots in the set69
Separable at 10 m1.4%
Separable at 3 m100.0%
Mean area retained, 10 m vs 3 m62% vs 87%
Pixels covering 2+ holdings, 10 m vs 3 m17.0% vs 5.5%

Whatever a delineation recovers cannot be larger than the plot's pure-pixel core, because every boundary pixel mixes this holding with the next one. A recovered polygon that has lost more than a quarter of the field's area cannot be used to settle that field's area, so retention below 0.75 counts as not separable.

Synthetic setComputed by the world generator over all 69 sub-0.5 hectare holdings in the synthetic set, not read off a paper. The separability threshold is a stated 75% area retention, and the pixel grid is axis-aligned to the local projection, which flatters the coarse case, because a real orbit grid is not aligned to field edges.

The published claim this study carries

About 7.5% of sub-0.5 hectare fields stay separable as distinct polygons at 10 m, against about 88% at 3 m.

Study inputCarried as a study input, not produced by this engine. The published work I can point at supports the direction and the order of magnitude but does not state these two numbers, so they stay flagged until the underlying source is cited. The measured panel beside this one is what this study actually stands behind.

This bears on BOUNDARY work only. Temporal signals - did the crop emerge, did it die back, did it recover - need no boundary resolution, and remain the right job for 10 m Sentinel-class imagery at this plot size.

4Finding three

The hardware answer is a handset, not a receiver.

Dual-frequency L1 + L5 halves horizontal sigma, and area error is linear in sigma. It arrived in phones in 2018 and reached mid-tier Android from about 2022, which means the accuracy upgrade is a device refresh the operator already budgets for, with no second gadget and no new training.

Plot size
one walk, 72 fixes
HandsetBandsSigmaArea errorAt risk / plotUnit cost
Entry Android (2020 class)Android 11 · Ramulu M. · no raw GNSS APIL1GPS, GLONASS5.6 m14.4%Rs 4,326Rs 8,500
Mid Android (2021 class)Android 12 · Srikanth B.L1GPS, GLONASS, NavIC4.9 m12.3%Rs 3,689Rs 10,500
Mid Android (2023 class)Android 14 · Anusha P.L1 + L5GPS, Galileo, NavIC2.4 m5.6%Rs 1,683Rs 13,900
Mid Android (2024 class)Android 15 · refresh candidate, not yet issued to any technicianL1 + L5GPS, Galileo, BeiDou, NavIC2.1 m4.9%Rs 1,465Rs 15,200

On a 0.5 acre plot the oldest handset in this fleet carries 14.4% of area error and the newest dual-frequency one carries 4.9%, for a difference of Rs 2,861 of arguable value on that single plot, every time it is settled. Area error is very nearly linear in sigma, so almost the whole gain is the second civil signal resolving ionospheric delay and rejecting multipath. The technician walks the same boundary the same way, on a phone that costs Rs 6,700 more than the one being replaced.

EngineError recomputed per handset at the selected plot size by the same covariance sum behind the model above. Handset sigma, cost and fleet status are attributes of the synthetic device table, not estimates made here.

Refreshing the fleet
Handsets to replace, of 32
Capital cost, one offRs 30,400
Arguable value across the book today, sigma 5.25 mRs 13.3 L
After the refresh, sigma 2.10 mRs 4.90 L
Value that stops being arguableRs 8.39 L

This is the device rung on its own: one walk, no reconciliation, no shared-edge constraint, so none of it is double counted against the mechanism above. And it is contract value sitting inside the error band, which is what a settlement argument is about. It is not a profit line.

Measured across the synthetic captures

Single-frequency, 552 captures10.1%
Dual-frequency, 384 captures5.7%

Synthetic setMean absolute area error of every capture in the synthetic world, against the boundary the generator drew. Higher than the closed form because these captures also carry canopy attenuation and village sky obstruction, which the idealised model above leaves out.

Why not an external receiver

A bluetooth GNSS receiver is a second device to charge, pair, carry, justify and lose, on a caseload of 150 to 200 farmers per technician across villages. It needs its own training step and its own support path, and the training budget here is the binding constraint, not the hardware budget. A handset refresh is a line item the operator already runs on a cycle, costs nothing in training because the walk does not change, and it upgrades the whole app at the same time.

That is why DeviceClass rides on every capture in this design rather than sitting in an asset register. A capture taken on an L1-only handset is a different measurement from one taken on L1+L5, and every tolerance, confidence band and settlement check downstream has to know which it is holding.

So what is Traverse

A measurement system that treats every capture as evidence, never as the answer.

Traverse is an offline-first field app and the reconciliation engine behind it. A plot never stores a boundary. It stores what the contract says, and it stores the captures, each with its own error budget, its own handset class and its own provenance. Six lifecycle walks and the shared edges a farmer club already has in the ground are then reconciled by least squares into one boundary with a confidence interval, so settlement runs against a number that knows how certain it is. The phone assumes no network, the queue is write-ahead so a closed app loses nothing, two technicians on the same plot and stage produce a conflict with both sides preserved rather than a silent overwrite, and satellite is wired to the question it can answer, which is whether the crop emerged, died back or recovered. It is not a training programme, because the problem was never care.

What is real here

Computed, simulated, or still owed a citation.

EngineComputed at render time

Every error percentage, tolerance, confidence band and rupee figure. The engine sums the covariance of a correlated GNSS error over the boundary polygon; it is not a lookup table, which is why moving any slider moves the answer. The whole-book roll-up runs across all 179 plots at their own acreage, shared-boundary share and crop value, and the pixel classification in the satellite panel is run against real polygon geometry rather than quoted.

SimulatedSimulated, seeded, labelled

Every GNSS track drawn on this page came from a seeded noise model, not from a device. The noise is an AR(1) process along the walk so that extra fixes inside one decorrelation length correctly buy almost nothing. The world behind the aggregates is synthetic: 179 plots, 954 captures, 8 clubs, seed 20260912, world clock 2026-03-14T09:30:00+05:30.

SYNTHETIC DATA. Every company, village, club, farmer, plot boundary, capture, contract, rate and settlement in this file is fabricated for a product study. No real person, holding or agreement is represented. District and state names are real Indian administrative names used only to anchor the belt; village centroids are approximate synthetic points inside it and do not correspond to any actual settlement.

Study inputCarried, not proved

  • The 7.5% against 88% sub-0.5 hectare separability split at 10 m against 3 m. The direction is well supported; those two exact figures are not yet traced to a source, so every surface labels them a study input.
  • Dual-frequency L1 + L5 reaching MID-TIER Android specifically from 2022. Availability in flagships from 2018 is cited above; the mid-tier timing is not yet cited.
  • The 15 to 25% contracted-against-actual variance band as an industry figure. This study reproduces a comparable spread on its own synthetic contracts and reports that instead.
  • Rs 60,000 per acre as a gross-value benchmark. It sits inside this world's own per-crop range, from Rs 38,000 for soybean to Rs 1,47,600 for chilli, but it is a round number, not a survey.

Wherever one of these appears on a surface it is flagged as a study input, and the engine’s own measurement is shown next to it.

Sources

Field constraints taken as given

No internet at the field. Sync only at office, home or town.
Mid-range Android. No external GNSS receiver.
Basic smartphone literacy. Limited training budget.
Twice-monthly per farmer; a whole club is covered in one trip.
150 to 200 farmers per technician across villages.
0.5 to 10 acres, irregular shapes common, multiple crops on one plot possible.
Sentinel-2 class, 10 m, refreshed every 5 to 10 days.

Crop gross values in this world run from Rs 38,000 to Rs 1,47,600 an acre across 5 crops, so the Rs 60,000 benchmark used for value at risk sits inside the range rather than at the top of it. Separately from the measurement band, the synthetic world carries about Rs 29.0 L of value attached to its 65 planted anomalies across 24 disputed plots. That is a different quantity, and the Operations tab is where it is worked.

↑ Independent product concept by Kaushal Khodifad. Traverse is an independent product concept by Kaushal Khodifad; it is not a real company or a commercial product. It explores the lifecycle farm-plot capture for contract farming space. Not a live commercial product. Data is illustrative.

Return to portfolioOpen the live demo