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.
Storyboard sections
- Why SFI Certification Matters
- Overview & Learning Flow
- Case Studies (Activation)
- Spec Lookup Workshop (Demonstration)
- Practice: Fixing a Bad Lookup
- Tooling & Ideation (Live Prototype)
- Small Groups & Feedback (Application)
- Rubric & Asset Capture
- Mastery & Certification (Assessment)
- Summary & Key Takeaways
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
SFI 38.1
Identifies which standard a product was built and tested against — here, head-and-neck restraint systems.
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.
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.
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.
What is actually broken today
| Job the user is trying to do | What the site does now | Cost |
|---|---|---|
| "Which spec covers my fire suit?" | Requires already knowing the spec number; no plain-English search | Users guess, or call someone |
| "Is this seller's certification real?" | No verification path at all | Counterfeit and lapsed gear reaches racers |
| "Check this in the paddock, on my phone" | Desktop-era layout, pinch-and-zoom, slow search | Tech inspection slows to paper speed |
| "Browse what applies to my class" | Flat list of 140+ standards, no categories | Discovery 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
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.
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.
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
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
| Asset | Format | Owner | Status |
|---|---|---|---|
| Seed spec dataset (number, title, category, description) | JSON | Vayun Shekar | Sprint 1 |
| Certification records covering all three verdicts | JSON / SQLite | Ishan Khandelwal | Sprint 1 |
| Printable demo QR codes (certified / expired / unknown) | PNG | Ishan Jha | Sprint 2 |
| Screen-recorded scan on a real phone | MP4 | Ishan Jha | Sprint 3 |
| Architecture decision record | Markdown in repo | Ishan Jha | Blocks 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.
- 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.
- 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.
- 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.
- 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
| Before | After | |
|---|---|---|
| Query | SFI | fire suit rating for drag racing |
| Result | 140+ undifferentiated standards | Driver suit specs ranked first, with rating suffix explained inline |
| Next action | User leaves and phones a friend | User taps a result, then scans the suit's tag to confirm it is in date |
| Time | Unbounded | Target: 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.
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.
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
| Segment | Example | Meaning |
|---|---|---|
SFI | SFI | Namespace prefix; anything else is rejected as malformed before a lookup is attempted |
MFG-#### | MFG-1042 | Manufacturer identifier issued by the foundation |
PN-###-#### | PN-38A-7791 | Part / certification identifier, scoped to that manufacturer |
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.
| Role | Task | What 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.
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.
8 Rubric & Asset Capture
Evidence — before, plan, after
Every core flow is captured in three phases so progress is provable rather than asserted.
| Flow | Before (capture) | Action plan | After (capture) |
|---|---|---|---|
| Spec search | Screenshot of current site search for "fire suit" | Ingest dataset, build keyword search, layer semantic ranking with fallback | Screen recording: query to correct spec in under 30s |
| Verification | Screenshot proving no verification path exists | Define payload, seed records, build scan + lookup + three verdicts | Phone video of all three verdicts, plus denied-permission fallback |
| Mobile UI | 360px screenshot showing horizontal scroll | Design system, mobile-first rebuild, breakpoint pass | 360 / 768 / 1280px screenshots, zero horizontal scroll |
| Accessibility | Baseline contrast and focus-state audit | Fix contrast, add alt text, restore visible focus, semantic HTML | Post-fix audit with the failures listed and closed |
Wireframes captured for the "after" column
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.
- 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.
- CI passes on
main.Clean build on every push, no secrets in the repo, all environment-specific config behind environment variables. - A staging URL is live and shareable.Reachable by the Testing & QA and Deployment sub-issues without needing our machines.
- 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.
- The ADR and known limitations are committed.Framework, hosting, and search provider documented before implementation; edge cases written up for handoff.
Sprint plan
ADR committed, repo scaffolded with linting and a CI build check, design system and base layout components, spec dataset ingested and normalized.
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.
QR payload finalized, certification records seeded for all three verdicts, camera scan flow with permission and error handling, manual-entry fallback, verdict screens.
Responsive pass across breakpoints, accessibility pass, staging deploy, known-limitations document, handoff to Testing & QA.
Risks we are carrying
| Risk | Likelihood | Mitigation |
|---|---|---|
| Embeddings provider is slow, rate-limited, or costs money | Medium | Keyword 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 origin | Medium | Manual code entry is a designed primary path, not an error state; staging served over HTTPS |
| Authoritative spec data is hard to obtain or license | High | Build 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 standards | Low | Explicitly 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
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.
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