T09 · Insecure Skill Coding Practices
- Location
scripts/create_elevator_pitch.py:55- Finding
Generated pitches contain fabricated business and fundraising claims
- Content
View full analysis
Vulnerability Details
File Location:
scripts/create_elevator_pitch.py, lines 55–82
Vulnerability Type: Unvalidated hardcoded business claims
Risk Level: HighVulnerable Code
python elif args.length == 60: print(f"\n[HOOK - 10 sec]") print(f"{problem}") print(f"\n[SOLUTION - 20 sec]") print(f"{company} {solution}") print(f"\n[TRACTION - 20 sec]") print("We've signed 12 customers and are growing 20% monthly") print(f"\n[ASK - 10 sec]") if args.audience == 'investor': print("We're raising $500K to hit $30K MRR. Are you interested?") elif args.audience == 'customer': print("Can I show you a 5-minute demo next week?") else: # 120 seconds print(f"\n[HOOK - 15 sec]") print(f"{problem}") print(f"\n[SOLUTION - 30 sec]") print(f"{company} {solution}") print(f"\n[MARKET - 20 sec]") print("This is a $2B market growing 30% annually") print(f"\n[TRACTION - 30 sec]") print("12 customers, $15K MRR, growing 20% monthly, 58 NPS") print(f"\n[TEAM - 15 sec]") print("Ex-Stripe and Google engineers") print(f"\n[ASK - 10 sec]") if args.audience == 'investor': print("We're raising $500K. Can I send you our deck?")Technical Analysis
The script inserts fixed customer counts, growth rates, market size, revenue, Net Promoter Score, employee backgrounds, and fundraising targets into generated pitches. These statements are presented as company facts even though the selected foundation record does not supply or validate them.
Because the generated output resembles a finished pitch rather than a template, a user can reasonably mistake these values for data derived from their stored foundation. The script does not mark them as placeholders, request confirmation, or omit claims for which verified data is unavailable.
Attack Path
- A user creates a foundation containing o ...[truncated 1049 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove all hardcoded factual claims from generated pitches.
- Read traction, market, team, and fundraising values from the selected foundation record.
- Validate that each value exists and has been explicitly confirmed by the user before presenting it as fact.
- Omit sections for which no verified information is available, or display conspicuous placeholders such as
[ADD VERIFIED MRR]. - Add an explicit review step listing every factual claim and requiring user confirmation before producing a final version.
- Distinguish template examples from generated output through clear labels.
- Add automated tests confirming that one user's pitch cannot acquire example metrics or claims absent from that user's foundation.
