The technical core of FPVBuilder. Each rule has a code (R0..R58), category (error or warning), technical rationale and an example trigger. Rules are deterministic — not AI. If a rule fails, we tell you exactly which one and why.
Full documentation Try them in the configuratorR0 (FC presence): no-FC build won't fly. R1-R4 (mechanical mount): motor mount pattern matches frame motor_mount; stack mount matches frame stack_mounts. R5-R10 (electrical): motor voltage in ESC range, battery voltage in FC range, BEC current enough for VTX+camera. R12-R15 (video): camera form_factor fits frame camera_mount, VTX output_type matches camera. R16-R20 (RX): protocol, band, legal frequency. R21 (class coherence): motor/prop/esc/battery coherent with frame class. R49-R58 (advanced): BEC capacity, wire gauge, AUW vs EU class, prop pitch ratio.
Error = build does NOT work (short, impossible mount, voltage out of range). Warning = build flies but suboptimal (6S motor in a race frame designed for 7S, prop pitch too high for freestyle, RX in a non-optimal band for target distance). Only errors block the "valid" badge. Warnings are informational.
Not every rule applies to every build. R1 (NxN motor mount) is skipped for whoops since they use triangular posts not NxN. R13 (VTX on stack mount) is skipped for DJI Air Units which mount on a dedicated bracket. R21e (battery cells vs frame class) only triggers in extreme cases (1S in ≥3" or 6S in whoop). Each skip is documented with its rationale.
Publishing the rules reduces the FPVBuilder technical moat by ~0% — the real moat is verified catalog + cross-store matcher + up-to-date scrapers. Publishing them, conversely, earns technical credibility with r/fpv (which spots slop from 10km) and lets developers flag rule errors. Win-win.