Capstone Proposal · Design-Based Research

SFI Foundation Web Modernization

A storyboard for rebuilding how racers, inspectors, and buyers find safety specifications and verify that a certified part is actually certified — searchable in plain English, verifiable by QR code, usable on a phone in a hot pit lane.

Nonprofit
SFI Foundation, Inc.
User group
Manufacturers, race teams, inspectors, buyers
Sub-issue owner
Ishan Jha — Scrummer
Technologists
Vayun Shekar, Ishan Khandelwal
Status
Proposal — pre-build

1 Why SFI Certification Matters

The Hook

You have spent four months and most of your savings building a car. Race morning, tech inspection pulls you out of line: your harness is out of date and your fire suit's rating cannot be confirmed. You are not slow — you are not allowed on track. Somewhere in a binder is the spec that would have told you this in thirty seconds.

The SFI Foundation is a non-profit that writes and administers voluntary performance standards for motorsports equipment — helmets, harnesses, fire suits, head-and-neck restraints, bellhousings, flywheels. Manufacturers build to a spec, get tested, and earn the right to put an SFI label on the product. Sanctioning bodies then require those labels at the gate. The standards are the language the whole sport uses to talk about safety.

The labels a user has to decode

Spec number

SFI 38.1

Identifies which standard a product was built and tested against — here, head-and-neck restraint systems.

Rating suffix

SFI 3.2A/5

The number after the slash encodes a performance level. On driver suits it maps to thermal protective performance — a higher number means more seconds of protection.

Expiration

Recertification date

Several SFI-labelled products are only valid for a fixed window and must be re-certified. An in-date label and an expired label look nearly identical at a glance.

Provenance

Is the label real?

A printed patch is easy to copy. Nothing on the current site lets a buyer confirm that this manufacturer holds that certification right now.

Honesty note: spec numbers and rating conventions on this page are used illustratively to storyboard the interface. The shipped product ingests the authoritative spec index published by SFI; no certification meaning is invented by our team.

What is actually broken today

Job the user is trying to doWhat the site does nowCost
"Which spec covers my fire suit?"Requires already knowing the spec number; no plain-English searchUsers guess, or call someone
"Is this seller's certification real?"No verification path at allCounterfeit and lapsed gear reaches racers
"Check this in the paddock, on my phone"Desktop-era layout, pinch-and-zoom, slow searchTech inspection slows to paper speed
"Browse what applies to my class"Flat list of 140+ standards, no categoriesDiscovery is effectively impossible

2 Overview & Learning Flow

Goal of the storyboard

This storyboard walks a user — and the build team — through one complete arc: from not knowing a spec exists, to finding it, to verifying a physical part against it, to being confident enough to sign off. Each section below maps to one stage of that arc, and each stage has a matching piece of software we are proposing to build.

flowchart LR
  A["Activation<br/>Why it matters"] --> B["Demonstration<br/>Guided lookup"]
  B --> C["Practice<br/>Fix a bad lookup"]
  C --> D["Application<br/>Scan and verify"]
  D --> E["Assessment<br/>Mastery check"]
  E --> F["Integration<br/>Ship to staging"]

The three things we are building

Feature 1

ML-powered spec search

Natural-language queries ("helmet cert for oval track") ranked semantically, with exact spec-number lookup and a keyword fallback when the ML service is slow or down.

Feature 2

QR manufacturer verification

In-browser camera scan of a certification QR, returning Certified, Expired, or Not Found in real time, with manual code entry as the fallback.

Feature 3

Mobile-first redesign

Search, Verify, and Browse as equal first-class entry points, built for 360–430px first and enhanced upward, with a baseline accessibility pass.

How the pieces connect

flowchart TD
  U["Racer / inspector / buyer<br/>on a phone"] --> N{"Home: 3 entry points"}
  N --> S["Search"]
  N --> V["Verify"]
  N --> B["Browse by category"]
  S --> EMB["Semantic ranking service"]
  EMB -.->|"unavailable or slow"| KW["Keyword fallback"]
  EMB --> D["Spec detail page"]
  KW --> D
  B --> D
  V --> CAM["Camera QR scan"]
  CAM -.->|"permission denied"| MAN["Manual code entry"]
  CAM --> LOOK["Certification lookup"]
  MAN --> LOOK
  LOOK --> R["Certified / Expired / Not Found"]
  R --> D
Design rule carried through every screen: every ML or camera path has a non-ML, non-camera path behind it. A user is never stranded because a service was slow or a permission was denied.

3 Case Studies

Activation — why the stakes are real

Before designing anything, the team studied why equipment standards exist at all. These are the cases we present to open the workshop.

Dale Earnhardt — 2001 Daytona 500 · 2001

A last-lap crash that looked survivable killed one of the sport's most recognizable drivers. The investigation that followed pushed head-and-neck restraint devices from optional to mandatory across American motorsport, and the category of equipment now covered by SFI 38.1 became standard equipment rather than a niche accessory.

Discussion prompt: what changed faster — the technology, or the rule that required it?

The expired-harness problem · ongoing

Driver restraint assemblies carry a recertification date. Webbing degrades with UV exposure, sweat, and load. A belt one week past its date and a belt one week inside it are visually indistinguishable, so enforcement depends entirely on someone reading a small printed tag correctly, under time pressure, in a tech line.

Design implication: expiration must be a first-class result state, not a footnote on a detail page.

Counterfeit and misrepresented safety gear · ongoing

Because an SFI label is a printed patch, online marketplaces make it trivial to sell gear that carries the mark without holding the certification. A buyer today has no self-service way to check a claim. This is the single clearest case for QR-based verification: move trust from the printed patch to a live lookup against the foundation's own records.

Design implication: the QR payload must resolve to the foundation's data, not to a manufacturer-controlled page.

The Greppers prototype · prior capstone

A previous Open Coding Society team built a Flask prototype for SFI covering 140+ standards, plain-English search, on-device photo identification, and role-based dashboards for drivers, inspectors, and staff. It proved demand for search and for role separation. It did not cover certification verification, and it was not built mobile-first — which is precisely the gap this sub-issue takes on.

Reference: pages.opencodingsociety.com/capstone/greppers/

4 Spec Lookup Workshop

Demonstration — the guided walkthrough

This is the instructor-facing part of the storyboard: how we demonstrate the tool live, what we say, and what we want the audience to notice.

Guiding questions we open with

  • How would you find the right standard if you did not already know its number?
  • What would convince you that a part in your hands is genuinely certified?
  • What is the last thing you want to be doing on a phone in a hot pit lane?

Prototype assets to capture for the demo

AssetFormatOwnerStatus
Seed spec dataset (number, title, category, description)JSONVayun ShekarSprint 1
Certification records covering all three verdictsJSON / SQLiteIshan KhandelwalSprint 1
Printable demo QR codes (certified / expired / unknown)PNGIshan JhaSprint 2
Screen-recorded scan on a real phoneMP4Ishan JhaSprint 3
Architecture decision recordMarkdown in repoIshan JhaBlocks build

Principles the demo must land

  • A user can reach an answer without knowing SFI's internal vocabulary.
  • Every verdict states plainly what it means and what to do next.
  • No screen requires horizontal scrolling at 360px.
  • Nothing is a dead end: denied camera falls back to typing, failed ML falls back to keywords.
  • No raw error text or blank screen is ever shown to a user.

5 Practice: Fixing a Bad Lookup

Practice — the retrofit method

Most bad lookups fail the same way: the user searches a product name, gets nothing, and gives up. Here is the four-step method the interface is designed to teach implicitly.

  1. Start from the object, not the number.Describe the physical thing and the context: "fire suit for drag racing," not "3.2A." Semantic search is built to accept exactly this.
  2. Narrow by category, not by guessing.If the query is too broad, use the category filter as the second discovery path rather than retyping the query five times.
  3. Read the rating suffix, not just the spec number.Two products can both be "SFI 3.2A" and offer very different protection. The detail page surfaces the suffix at the top, not buried in body text.
  4. Verify the part, not the claim.A spec page proves the standard exists. Only a QR scan against the foundation's records proves this manufacturer holds it and it has not lapsed.

Worked example

BeforeAfter
QuerySFIfire suit rating for drag racing
Result140+ undifferentiated standardsDriver suit specs ranked first, with rating suffix explained inline
Next actionUser leaves and phones a friendUser taps a result, then scans the suit's tag to confirm it is in date
TimeUnboundedTarget: under 30 seconds end to end

6 Tooling & Ideation

Live prototype — try it in this page

Both tools below run entirely in this page against a small seed dataset. They are not the production system; they exist so the interaction model can be judged before a line of backend code is written. The ranking function here stands in for the embeddings service described in the ADR.

Tool A — Plain-English Spec Search

semantic + keyword

Start typing — results rank as you go.

Fallback demo: turn off semantic ranking to see the keyword-only path a user gets when the ML service is unavailable.

Tool B — QR Certification Verifier

manual-entry fallback path

On a phone this field is filled by the camera. Typing it by hand is the exact fallback shown when camera permission is denied — which is why it is a real, tested path and not an afterthought.

QR payload format

SegmentExampleMeaning
SFISFINamespace prefix; anything else is rejected as malformed before a lookup is attempted
MFG-####MFG-1042Manufacturer identifier issued by the foundation
PN-###-####PN-38A-7791Part / certification identifier, scoped to that manufacturer
Why this shape: it is short enough to encode in a low-density QR that still scans on a scuffed label, it carries no personal data, and it is opaque — a scanned code proves nothing on its own until the foundation's records answer.

7 Small Groups & Feedback

Application — put it in users' hands

Groups of three, each given a phone and one of the three roles. Each group runs the same three tasks and records where they hesitate.

RoleTaskWhat we are watching for
Racer"Find the standard that covers your fire suit and tell me its rating."Do they search plain English, or hunt for a number?
Tech inspector"Verify these three parts and sort them into pass / fail."Is the expired verdict unmistakable at arm's length?
Buyer"This seller says the part is SFI certified. Prove it."Do they find Verify without being told it exists?

Deliberately flawed screen we show first

What a bad verification result looks like

Error: lookup failed (500) — nothing else on screen. No indication whether the part is bad, the network is down, or the code was mistyped. A user reads this as "the part is fine, the site is broken" and goes racing.

Prompt to groups: rewrite this screen in one sentence a driver can act on.

Speaker notes

  • Do not explain the interface before they use it. Hesitation is the data.
  • Record the first tap on the home screen for every participant — that tells us whether Search, Verify, and Browse really are equally weighted.
  • Ask each group for one thing they expected to exist and did not find.
Feedback loop: findings go straight into the Testing & QA sub-issue as test cases, not into an unstructured notes document. Anything that stops a task cold is a build-blocking defect for this sub-issue, not a Testing finding.

8 Rubric & Asset Capture

Evidence — before, plan, after

Every core flow is captured in three phases so progress is provable rather than asserted.

FlowBefore (capture)Action planAfter (capture)
Spec searchScreenshot of current site search for "fire suit"Ingest dataset, build keyword search, layer semantic ranking with fallbackScreen recording: query to correct spec in under 30s
VerificationScreenshot proving no verification path existsDefine payload, seed records, build scan + lookup + three verdictsPhone video of all three verdicts, plus denied-permission fallback
Mobile UI360px screenshot showing horizontal scrollDesign system, mobile-first rebuild, breakpoint pass360 / 768 / 1280px screenshots, zero horizontal scroll
AccessibilityBaseline contrast and focus-state auditFix contrast, add alt text, restore visible focus, semantic HTMLPost-fix audit with the failures listed and closed

Wireframes captured for the "after" column

SFI 38.1
Head & Neck Restraints
SFI 3.2A/5
Driver Suits
SFI 16.5
Restraint Assemblies
SearchVerifyBrowse
Search results
camera viewfinder
SearchVerifyBrowse
QR scan
CERTIFIED
SearchVerifyBrowse
Verdict

9 Mastery & Certification

Assessment — the done condition

This sub-issue is not "done" when it looks finished. It is done when all five conditions below hold at once, verified on a real phone.

  1. All three features work end to end.Semantic search with keyword fallback, QR verification with all three verdicts, mobile-first UI across every core flow.
  2. CI passes on main.Clean build on every push, no secrets in the repo, all environment-specific config behind environment variables.
  3. A staging URL is live and shareable.Reachable by the Testing & QA and Deployment sub-issues without needing our machines.
  4. A real user completes the arc on a real phone.Search a spec, get a correct result, scan a code, get a real-time verdict, navigate every flow with no unhandled error.
  5. The ADR and known limitations are committed.Framework, hosting, and search provider documented before implementation; edge cases written up for handoff.

Sprint plan

Sprint 1
Foundation

ADR committed, repo scaffolded with linting and a CI build check, design system and base layout components, spec dataset ingested and normalized.

Sprint 2
Search

Keyword search, results list, spec detail page, category browse. Semantic layer integrated behind a feature flag with keyword fallback proven by forcing the service off.

Sprint 3
Verify

QR payload finalized, certification records seeded for all three verdicts, camera scan flow with permission and error handling, manual-entry fallback, verdict screens.

Sprint 4
Polish & handoff

Responsive pass across breakpoints, accessibility pass, staging deploy, known-limitations document, handoff to Testing & QA.

Risks we are carrying

RiskLikelihoodMitigation
Embeddings provider is slow, rate-limited, or costs moneyMediumKeyword search ships first and is never removed; semantic ranking is an enhancement behind a flag with a hard timeout
Camera API blocked by browser, OS, or an insecure originMediumManual code entry is a designed primary path, not an error state; staging served over HTTPS
Authoritative spec data is hard to obtain or licenseHighBuild against clearly-labelled seed data with a documented ingestion boundary, so swapping in real data is a data task, not a rewrite
Scope creep from the parent issue into policy or standardsLowExplicitly out of scope; any such request routes back to the parent issue owner

10 Summary & Key Takeaways

Integration

Problem statement. Users need a fast and reliable way to search SFI safety specifications and verify manufacturer certifications on mobile devices, because the current experience is hard to navigate, slow to search, and not optimized for modern verification workflows.

Success statement. We know this works when users can find the correct spec in seconds, scan a QR code to verify manufacturer certification in real time, and complete key tasks easily from a phone without support help.

Scope boundaries

In scope

This sub-issue builds

Architecture decisions, the design system, ML spec search with fallback, QR verification with all error states, the mobile-first redesign, and a feature-complete staging deploy.

Out of scope

Owned elsewhere

Formal test planning and bug triage (Testing & QA sub-issue); production release, monitoring, and rollback (Deployment sub-issue); rewriting SFI standards or changing compliance policy (out of scope for the whole parent issue).

Dependencies and handoffs

  • Blocks: Testing & QA cannot begin full test execution until this reaches a feature-complete staging build.
  • Blocks: Deployment cannot promote to production until Testing & QA signs off on this build.
  • Depends on: nothing — this is the foundational build sub-issue.

Task breakdown

  • Write and commit the architecture decision record (framework, hosting, search approach)
  • Scaffold the project (repo, linting, formatting, CI build check)
  • Build the shared design system and base layout components
  • Ingest and normalize the spec dataset
  • Build baseline keyword search: search bar, results list, spec detail page
  • Integrate the ML/semantic layer with keyword fallback
  • Add category filtering and the browse view
  • Define the QR payload format and seed certification test data
  • Build the QR scan flow: camera access, permissions, error states
  • Build certification lookup and the three verdict screens
  • Build the mobile-first home page and primary navigation
  • Implement responsive behavior across mobile, tablet, and desktop
  • Run and resolve the baseline accessibility pass
  • Deploy the feature-complete build to staging
  • Document known limitations and edge cases for Testing & QA

Team approval

✓ Ishan JhaScrummer · owner of this sub-issue
✓ Vayun ShekarTechnologist 1
✓ Ishan KhandelwalTechnologist 2
The one-sentence version: move trust from a printed patch to a live lookup, and make the whole thing work with one thumb.