47 KiB
Updated Search Implementation Plan: Solution Extraction & Assessment Layer
Executive Summary
This plan outlines the implementation of a Solution Extraction and Assessment Layer for the OSINT TechScout application. The goal is to transform the system from a topic search engine into a solution discovery and assessment tool that provides analyst-ready technology insights for capability gap analysis.
Core Transformation:
CURRENT: Gap → Search → Score by topic relevance → Return search results
PROPOSED: Gap → Search → Extract technologies → Assess gap-fit → Return analyst-ready assessments
Table of Contents
- Problem Statement
- Solution Architecture
- Implementation Phases
- Detailed Component Specifications
- Data Models
- API Changes
- UI/UX Considerations
- Testing Strategy
- Risk Mitigation
- Success Metrics
1. Problem Statement
Current Behavior
- Users enter a capability gap description
- System searches multiple sources (SBIR, USPTO, arXiv, Brave, etc.)
- Results are scored by keyword/topic relevance
- Output: List of search results with metadata (title, snippet, source, TRL estimate)
Issues Identified
- Results are headers, not insights — Snippets prioritize metadata over technical content
- Topic discussions, not solutions — Results mention the problem domain but don't propose solutions
- No technology extraction — Results are documents, not identified technologies
- Missing gap-fit assessment — No evaluation of whether a technology actually addresses the stated need
- Not analyst-ready — Output doesn't support "should I investigate further?" decisions
Desired Behavior
- Users enter a capability gap description
- System identifies technologies that could address the gap
- Each technology is presented with:
- What it is and what it does
- How it addresses the specific gap
- Maturity level with evidence
- Developer/source information
- Corroboration across sources
- Key unknowns and risks
- Investigation-worthiness assessment
2. Solution Architecture
High-Level Architecture
┌─────────────────────────────────────────────────────────────────────────────┐
│ USER INPUT │
│ Capability Gap (Natural Language) │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ PHASE 1: GAP ANALYSIS & DECOMPOSITION │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Enhanced Decomposition Service │ │
│ │ - Parse functional requirements from gap description │ │
│ │ - Identify solution characteristics needed │ │
│ │ - Generate solution-seeking queries (not topic queries) │ │
│ │ - Define evaluation criteria for gap-fit assessment │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ PHASE 2: MULTI-SOURCE SEARCH │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Existing Search Infrastructure (Enhanced) │ │
│ │ - SBIR/STTR Awards │ │
│ │ - USPTO Patents │ │
│ │ - USASpending Contracts │ │
│ │ - arXiv / Google Scholar │ │
│ │ - Brave Web Search │ │
│ │ + Enhanced content extraction for web results │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ PHASE 3: SOLUTION EXTRACTION [NEW] │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Technology Extraction Service │ │
│ │ - Identify distinct technologies mentioned in results │ │
│ │ - Extract: name, description, capabilities, developer, maturity │ │
│ │ - Cluster results by technology (not by source) │ │
│ │ - Merge information from multiple sources about same technology │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ PHASE 4: GAP-FIT ASSESSMENT [NEW] │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Solution Assessment Service │ │
│ │ - Evaluate: Does technology X address capability gap Y? │ │
│ │ - Assess functional fit (not just keyword match) │ │
│ │ - Identify how the technology addresses specific requirements │ │
│ │ - Flag partial fits, limitations, and unknowns │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ PHASE 5: INSIGHT SYNTHESIS [NEW] │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Analyst Output Generator │ │
│ │ - Compile evidence for each technology │ │
│ │ - Highlight corroborated vs. single-source claims │ │
│ │ - Identify key unknowns and investigation priorities │ │
│ │ - Generate investigation-worthiness recommendation │ │
│ │ - Format as structured analyst-ready assessment │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ OUTPUT │
│ Technology Solution Assessments (Analyst-Ready) │
└─────────────────────────────────────────────────────────────────────────────┘
Key Architectural Decisions
-
Technology-Centric, Not Document-Centric
- Primary output entity is a "Technology Solution", not a "Search Result"
- Multiple search results may contribute to a single technology assessment
-
LLM-Powered Extraction and Assessment
- Use LLM for technology extraction from unstructured content
- Use LLM for gap-fit assessment (functional understanding, not keyword matching)
- Fallback to rule-based methods when LLM unavailable
-
Evidence-Based Presentation
- Every claim about a technology links back to source evidence
- Corroboration is explicit (which sources support which claims)
- Unknowns are as important as knowns
-
Layered Processing
- Existing search infrastructure remains intact
- New layers added on top for extraction, assessment, and synthesis
- Can toggle between "search results view" and "solutions view"
3. Implementation Phases
Phase A: Enhanced Gap Decomposition
Goal: Generate solution-seeking queries and define evaluation criteria
Tasks:
- Update decomposition prompt to extract functional requirements
- Generate "solution indicator" keywords alongside topic keywords
- Define gap-fit evaluation criteria from the gap description
- Add exclusion patterns for topic-discussion content
Files to Modify:
src/config/techscout.ts— Update decomposition promptsrc/services/decomposition/index.ts— Enhanced decomposition logicsrc/types/index.ts— Extended QueryDecomposition type
Estimated Effort: Medium
Phase B: Content Extraction Enhancement
Goal: Get substantive content from web sources, not just snippets
Tasks:
- Add optional page content fetching for top web results
- Implement readability-based content extraction
- Increase snippet/abstract lengths in existing connectors
- Add content quality scoring (substantive vs. header-like)
Files to Modify:
src/services/sources/braveSearch.ts— Add content fetching optionsrc/services/sources/sbir.ts— Increase abstract length in snippets- New:
src/services/extraction/contentExtractor.ts
Estimated Effort: Medium
Phase C: Technology Extraction Service [NEW]
Goal: Extract distinct technologies from search results
Tasks:
- Create TechnologyExtraction service
- Implement LLM-based technology identification
- Build technology clustering algorithm (group results about same tech)
- Implement information merging across sources
- Add rule-based fallback extraction
New Files:
src/services/synthesis/technologyExtractor.tssrc/services/synthesis/technologyClusterer.tssrc/services/synthesis/types.ts
Estimated Effort: High
Phase D: Gap-Fit Assessment Service [NEW]
Goal: Evaluate whether each technology addresses the capability gap
Tasks:
- Create GapFitAssessment service
- Implement LLM-based functional fit evaluation
- Build fit scoring with explanations
- Identify partial fits and limitations
- Flag unknowns that affect fit assessment
New Files:
src/services/synthesis/gapFitAssessor.tssrc/services/synthesis/fitScoring.ts
Estimated Effort: High
Phase E: Analyst Output Generator [NEW]
Goal: Produce structured, analyst-ready technology assessments
Tasks:
- Define TechnologyAssessment output schema
- Implement evidence compilation (with source attribution)
- Build corroboration analysis
- Generate unknowns/risks section
- Implement investigation-worthiness recommendation
- Create structured output formatter
New Files:
src/services/synthesis/analystOutputGenerator.tssrc/services/synthesis/evidenceCompiler.tssrc/services/synthesis/recommendationEngine.ts
Estimated Effort: High
Phase F: API Integration
Goal: Expose new capabilities through API
Tasks:
- Create new
/api/techscout/synthesizeendpoint - Update
/api/techscout/searchto optionally include synthesis - Add synthesis options to request schema
- Implement streaming for long-running synthesis
Files to Modify:
- New:
src/app/api/techscout/synthesize/route.ts src/app/api/techscout/search/route.ts— Add synthesis option
Estimated Effort: Medium
Phase G: UI Updates
Goal: Present technology assessments in the frontend
Tasks:
- Create TechnologyAssessmentCard component
- Build SolutionsView (technology-centric display)
- Add toggle between "Search Results" and "Solutions" views
- Implement evidence drill-down (click to see sources)
- Add investigation priority indicators
New Files:
src/components/TechnologyAssessmentCard.tsxsrc/components/SolutionsView.tsxsrc/components/EvidencePanel.tsx
Estimated Effort: Medium-High
4. Detailed Component Specifications
4.1 Enhanced Decomposition Service
Purpose: Transform capability gap into solution-seeking search strategy
Input:
interface GapDecompositionInput {
capabilityGap: string; // Natural language gap description
context?: {
domain?: string; // e.g., "defense", "space", "cyber"
urgency?: 'immediate' | 'near-term' | 'future';
constraints?: string[]; // e.g., "must be ITAR compliant"
};
}
Output:
interface EnhancedDecomposition extends QueryDecomposition {
// Existing fields...
// NEW: Functional requirements extracted from gap
functionalRequirements: {
primary: string; // Core capability needed
secondary: string[]; // Supporting capabilities
constraints: string[]; // Must-have constraints
};
// NEW: Solution characteristics to look for
solutionIndicators: {
technologyTypes: string[]; // e.g., "sensor", "algorithm", "material"
maturityIndicators: string[]; // e.g., "prototype", "demonstrated", "patent"
innovationSignals: string[]; // e.g., "novel", "breakthrough", "first"
};
// NEW: Evaluation criteria for gap-fit
evaluationCriteria: {
mustAddress: string[]; // Required capabilities
niceToHave: string[]; // Bonus capabilities
disqualifiers: string[]; // Deal-breakers
};
}
LLM Prompt Template:
You are a technology scout analyzing a capability gap to find solutions.
CAPABILITY GAP:
{capabilityGap}
Analyze this gap and provide:
1. FUNCTIONAL REQUIREMENTS
- What is the core capability that's missing?
- What specific functions must a solution provide?
- What constraints must a solution meet?
2. SOLUTION INDICATORS
- What types of technology might address this? (sensor, algorithm, material, system, etc.)
- What maturity indicators suggest a viable solution? (prototype, demonstrated, patent, contract, etc.)
- What innovation signals suggest emerging solutions? (novel, breakthrough, first, etc.)
3. SEARCH STRATEGY
- Generate queries that will find TECHNOLOGIES and SOLUTIONS, not topic discussions
- Focus on: patents, SBIR awards, technical papers with results, prototypes, demonstrations
- Avoid: overview articles, educational content, news commentary, problem descriptions
4. EVALUATION CRITERIA
- What must a technology do to address this gap?
- What would be nice to have but not required?
- What would disqualify a technology?
Respond with JSON only.
4.2 Technology Extraction Service
Purpose: Identify distinct technologies from search results
Process:
- Analyze each search result to identify technologies mentioned
- Extract structured information about each technology
- Cluster results that discuss the same technology
- Merge information from multiple sources
LLM Prompt for Extraction:
Analyze this search result and extract any SPECIFIC TECHNOLOGIES mentioned.
SEARCH RESULT:
Title: {title}
Content: {content}
Source: {source}
For each distinct technology found, extract:
1. Technology name (specific, not generic)
2. What it is (1-2 sentence description)
3. What it does / capabilities claimed
4. Developer/organization (if mentioned)
5. Maturity indicators (TRL, phase, prototype status, etc.)
6. Performance claims (if any)
Rules:
- Extract SPECIFIC technologies, not general categories
- "Machine learning" is too generic; "Convolutional neural network for image classification" is specific
- If no specific technology is identifiable, return empty array
- Include technologies even if partially described
Respond with JSON array of technologies.
Clustering Algorithm:
interface TechnologyCluster {
canonicalName: string; // Best name for this technology
alternateNames: string[]; // Other names/references found
contributingResults: string[]; // IDs of results that mention this tech
mergedInformation: {
descriptions: string[]; // All descriptions found
capabilities: string[]; // All capabilities mentioned
developers: string[]; // All developers mentioned
maturityIndicators: string[]; // All maturity evidence
performanceClaims: string[]; // All performance claims
};
}
Clustering approach:
- Use embedding similarity to group technologies with similar names/descriptions
- Apply entity resolution to merge "SpaceTech SPAD Array" with "SPAD-based imaging system from SpaceTech"
- Preserve source attribution for each piece of information
4.3 Gap-Fit Assessment Service
Purpose: Evaluate whether each technology addresses the capability gap
Input:
interface GapFitInput {
technology: TechnologyCluster;
decomposition: EnhancedDecomposition;
capabilityGap: string;
}
Output:
interface GapFitAssessment {
overallFit: 'HIGH' | 'MEDIUM' | 'LOW' | 'UNCERTAIN';
fitScore: number; // 0-100
// How the technology addresses specific requirements
requirementMapping: Array<{
requirement: string; // From decomposition.functionalRequirements
addressed: 'YES' | 'PARTIAL' | 'NO' | 'UNKNOWN';
explanation: string;
evidence: string[]; // Source quotes/references
}>;
// Overall fit narrative
fitSummary: string; // 2-3 sentences on how tech addresses gap
// Limitations and gaps
limitations: string[]; // Known limitations relative to gap
unknowns: string[]; // Information needed to fully assess fit
// Disqualifiers (if any)
disqualifiers: Array<{
criterion: string;
reason: string;
}>;
}
LLM Prompt for Assessment:
Assess whether this technology addresses the stated capability gap.
CAPABILITY GAP:
{capabilityGap}
FUNCTIONAL REQUIREMENTS:
- Primary: {primary}
- Secondary: {secondary}
- Constraints: {constraints}
TECHNOLOGY:
Name: {technologyName}
Description: {description}
Capabilities: {capabilities}
Maturity: {maturity}
EVALUATION CRITERIA:
- Must address: {mustAddress}
- Nice to have: {niceToHave}
- Disqualifiers: {disqualifiers}
Assess:
1. Does this technology address the PRIMARY requirement? How?
2. Does it address secondary requirements? Which ones?
3. Does it meet the constraints?
4. Are there any disqualifiers?
5. What's unknown that would affect this assessment?
Rate overall fit as HIGH, MEDIUM, LOW, or UNCERTAIN with explanation.
Respond with JSON.
4.4 Analyst Output Generator
Purpose: Produce structured, analyst-ready technology assessments
Output Schema:
interface TechnologySolutionAssessment {
// Identity
id: string;
technologyName: string;
alternateNames: string[];
// Summary (analyst-ready)
executiveSummary: string; // 2-3 sentences for quick scan
// What it is
description: {
whatItIs: string; // Technology description
howItWorks: string; // Mechanism/approach (if known)
keyCapabilities: string[]; // Bullet list of capabilities
};
// Gap fit
gapFit: {
assessment: 'HIGH' | 'MEDIUM' | 'LOW' | 'UNCERTAIN';
score: number;
howItAddressesGap: string; // Narrative explanation
addressedRequirements: string[];
unaddressedRequirements: string[];
limitations: string[];
};
// Maturity & development
maturity: {
estimatedTRL: number;
trlConfidence: number;
maturityEvidence: string[]; // What supports TRL estimate
developmentStatus: string; // e.g., "Phase II SBIR, prototype testing"
};
// Developer/source
developers: Array<{
name: string;
type: 'company' | 'university' | 'government' | 'unknown';
location?: string;
fundingHistory?: string[];
}>;
// Evidence & sources
evidence: {
sourceCount: number;
sources: Array<{
sourceId: string;
sourceName: string;
sourceType: string;
reliability: 'A' | 'B' | 'C' | 'D';
url: string;
keyFindings: string[]; // What this source contributes
}>;
corroboration: {
level: 'STRONG' | 'MODERATE' | 'WEAK' | 'SINGLE_SOURCE';
corroboratedClaims: string[];
unconroboratedClaims: string[];
};
};
// Unknowns & risks
unknowns: {
critical: string[]; // Must-know before proceeding
important: string[]; // Should investigate
minor: string[]; // Nice to know
};
risks: Array<{
category: string; // e.g., "Technical", "Schedule", "Cost"
description: string;
severity: 'HIGH' | 'MEDIUM' | 'LOW';
}>;
// Recommendation
recommendation: {
investigationWorthiness: 'HIGH' | 'MEDIUM' | 'LOW';
rationale: string;
suggestedNextSteps: string[];
keyQuestionsToAnswer: string[];
};
// Metadata
metadata: {
assessmentDate: string;
sourcesAnalyzed: number;
confidenceLevel: 'HIGH' | 'MEDIUM' | 'LOW';
caveats: string[];
};
}
5. Data Models
New Types to Add
// src/types/synthesis.ts
export interface FunctionalRequirement {
id: string;
description: string;
priority: 'PRIMARY' | 'SECONDARY' | 'CONSTRAINT';
evaluationCriteria?: string;
}
export interface ExtractedTechnology {
id: string;
name: string;
description: string;
capabilities: string[];
developer?: string;
maturityIndicators: string[];
performanceClaims: string[];
sourceResultId: string; // Link back to search result
}
export interface TechnologyCluster {
id: string;
canonicalName: string;
technologies: ExtractedTechnology[];
mergedDescription: string;
mergedCapabilities: string[];
allDevelopers: string[];
allMaturityIndicators: string[];
sourceResultIds: string[];
}
export interface GapFitResult {
technologyId: string;
fit: 'HIGH' | 'MEDIUM' | 'LOW' | 'UNCERTAIN';
score: number;
requirementResults: RequirementAssessment[];
summary: string;
limitations: string[];
unknowns: string[];
}
export interface RequirementAssessment {
requirementId: string;
addressed: 'YES' | 'PARTIAL' | 'NO' | 'UNKNOWN';
explanation: string;
evidenceIds: string[];
}
export interface TechnologySolutionAssessment {
// Full schema as defined in section 4.4
}
export interface SynthesisResult {
capabilityGap: string;
decomposition: EnhancedDecomposition;
searchResults: TechScoutResult[];
extractedTechnologies: ExtractedTechnology[];
technologyClusters: TechnologyCluster[];
gapFitAssessments: GapFitResult[];
solutionAssessments: TechnologySolutionAssessment[];
metadata: {
totalSourcesSearched: number;
totalResultsAnalyzed: number;
technologiesIdentified: number;
processingTimeMs: number;
};
}
6. API Changes
New Endpoint: POST /api/techscout/synthesize
Purpose: Full synthesis pipeline from gap to analyst-ready assessments
Request:
interface SynthesizeRequest {
capabilityGap: string;
options?: {
maxTechnologies?: number; // Limit output (default: 10)
minFitScore?: number; // Filter low-fit results (default: 30)
includeRawResults?: boolean; // Include search results in response
sources?: string[]; // Limit to specific sources
targetTRL?: { min: number; max: number };
};
}
Response:
interface SynthesizeResponse {
// Primary output
solutions: TechnologySolutionAssessment[];
// Summary
summary: {
totalTechnologiesFound: number;
highFitCount: number;
mediumFitCount: number;
lowFitCount: number;
topRecommendation?: string;
};
// Context
decomposition: EnhancedDecomposition;
// Optional: raw search results
searchResults?: TechScoutResult[];
// Metadata
metadata: {
processingTimeMs: number;
sourcesSearched: string[];
llmCallsUsed: number;
timestamp: string;
};
}
Updated Endpoint: POST /api/techscout/search
Add optional synthesis:
interface SearchRequest {
capabilityGap: string;
options?: {
// Existing options...
// NEW: Enable synthesis
synthesize?: boolean; // If true, include solution assessments
synthesizeOptions?: {
maxTechnologies?: number;
minFitScore?: number;
};
};
}
7. UI/UX Considerations
New Views
-
Solutions View (Primary for analyst workflow)
- Technology cards with executive summary
- Gap-fit indicator (visual: green/yellow/red)
- Expandable details (evidence, unknowns, recommendations)
- Sort by: fit score, maturity, corroboration level
-
Search Results View (Existing, for transparency)
- Traditional search results list
- Shows what sources returned
- Useful for understanding where solutions came from
-
Comparison View (For decision support)
- Side-by-side technology comparison
- Normalized criteria comparison table
- Gap-fit heatmap across requirements
UI Components to Create
TechnologyAssessmentCard
├── Header: Technology name, fit badge, TRL badge
├── Executive Summary (2-3 lines)
├── Expandable Sections:
│ ├── Description & Capabilities
│ ├── Gap Fit Analysis
│ ├── Maturity & Development
│ ├── Evidence & Sources
│ ├── Unknowns & Risks
│ └── Recommendation
└── Actions: Deep Dive, Compare, Export
SolutionsView
├── Summary Bar (X solutions found, Y high-fit)
├── Filters (fit level, TRL, source type)
├── Sort Controls
├── Technology Cards Grid/List
└── Pagination
EvidencePanel
├── Source badges with reliability
├── Key findings per source
├── Corroboration indicators
└── Link to original source
User Flow
1. User enters capability gap
2. System shows loading state with progress
- "Searching sources..."
- "Extracting technologies..."
- "Assessing gap fit..."
- "Generating assessments..."
3. Results appear in Solutions View
4. User can:
- Scan executive summaries
- Filter by fit level
- Expand cards for details
- Compare technologies
- Export assessment report
- Switch to raw search results view
8. Testing Strategy
Unit Tests
-
Decomposition Enhancement
- Test functional requirement extraction
- Test solution indicator generation
- Test evaluation criteria definition
-
Technology Extraction
- Test technology identification from various content types
- Test clustering algorithm
- Test information merging
-
Gap-Fit Assessment
- Test requirement mapping
- Test fit scoring
- Test limitation/unknown identification
-
Output Generation
- Test evidence compilation
- Test corroboration analysis
- Test recommendation generation
Integration Tests
-
Full Pipeline
- Test complete flow from gap to assessments
- Test with real source responses (mocked)
- Test error handling at each stage
-
API Endpoints
- Test /synthesize endpoint
- Test search with synthesize option
- Test streaming responses
Quality Validation
-
Assessment Quality
- Manual review of assessments for accuracy
- Compare against analyst-generated assessments
- Measure gap-fit accuracy
-
Technology Extraction Quality
- Precision: Are extracted technologies real?
- Recall: Are relevant technologies found?
- Clustering accuracy: Are same technologies grouped?
Test Cases by Capability Gap Type
| Gap Type | Example | Key Validation |
|---|---|---|
| Sensor/Detection | "Detect objects below diffraction limit" | Finds optical/imaging technologies |
| Algorithm/Processing | "Real-time threat classification" | Finds ML/AI approaches |
| Materials | "Hypersonic thermal protection" | Finds materials research |
| Systems | "Autonomous swarm coordination" | Finds integrated solutions |
| Hybrid | "Secure mesh networking for contested environments" | Combines multiple tech types |
9. Risk Mitigation
Technical Risks
| Risk | Mitigation |
|---|---|
| LLM latency increases response time | Implement streaming; cache common extractions; parallelize LLM calls |
| LLM hallucination in extraction | Require source attribution for all claims; implement confidence thresholds |
| Technology clustering errors | Use conservative clustering; allow user correction; show contributing sources |
| High LLM cost | Implement tiered processing (quick scan vs. deep analysis); use cheaper models for extraction |
Quality Risks
| Risk | Mitigation |
|---|---|
| Miss relevant technologies | Use multiple extraction passes; allow user to flag missed technologies |
| Over-cluster different technologies | Require high similarity threshold; show cluster membership for transparency |
| Incorrect gap-fit assessment | Show requirement-by-requirement mapping; allow user override |
| Misleading confidence | Show confidence caveats prominently; distinguish corroborated vs. single-source |
User Experience Risks
| Risk | Mitigation |
|---|---|
| Long wait times | Progressive loading; show intermediate results; background processing option |
| Information overload | Executive summaries first; expandable details; filtering |
| Opaque assessments | Full evidence chain visible; show "how we determined this" |
10. Success Metrics
Primary Metrics
-
Solution Relevance
- % of high-fit assessments validated as relevant by users
- Target: >80% of top 5 results are actually relevant
-
Technology Extraction Accuracy
- Precision: % of extracted technologies that are real/specific
- Target: >90%
- Recall: % of relevant technologies found
- Target: >70%
-
Gap-Fit Accuracy
- % of fit assessments that match analyst judgment
- Target: >75% agreement on HIGH/MEDIUM/LOW
-
Analyst Time Savings
- Reduction in time to identify candidate technologies
- Target: 50% reduction vs. manual search
Secondary Metrics
-
Source Coverage
- Number of distinct sources contributing to each assessment
- Target: Average 2+ sources per technology
-
Corroboration Rate
- % of technologies with multi-source corroboration
- Target: >40% have 2+ sources
-
Unknown Identification
- % of assessments with meaningful unknowns identified
- Target: >90% include relevant unknowns
-
Processing Performance
- Time from query to complete assessment
- Target: <30 seconds for top 10 technologies
User Satisfaction Metrics
-
Assessment Usefulness
- "Did this assessment help you decide whether to investigate further?"
- Target: >4/5 average rating
-
Investigation Actions
- % of high-fit technologies that users choose to investigate
- Correlation between fit score and investigation rate
-
Return Usage
- Users returning to use synthesis feature
- Target: >60% return rate
Appendix A: Example Output
Input
Capability Gap: "Need a technology that improves Space Domain Awareness
for detecting and tracking objects beyond the diffraction limit of
conventional optical systems"
Output (One Technology Assessment)
TECHNOLOGY SOLUTION ASSESSMENT
══════════════════════════════════════════════════════════════════════
Technology: Single-Photon Avalanche Diode (SPAD) Array Imaging
Executive Summary:
SPAD-based imaging systems detect individual photons, enabling detection
of objects smaller than the diffraction limit of conventional optics by
accumulating photon counts over time. Active development funded by AFRL
with Phase II SBIR demonstrates 3x improvement in small object detection.
───────────────────────────────────────────────────────────────────────
GAP FIT ASSESSMENT: HIGH (Score: 82/100)
───────────────────────────────────────────────────────────────────────
How it addresses the gap:
SPAD arrays directly address the diffraction limit constraint by using
photon-counting rather than intensity-based detection. This allows
detection of objects that produce fewer photons than needed for
conventional imaging, effectively extending detection capability to
sub-diffraction-limit objects in space.
Requirements addressed:
✓ PRIMARY: Detect objects beyond diffraction limit
✓ SECONDARY: Space-based applicability
✓ SECONDARY: Compatible with existing optical systems
? UNKNOWN: Real-time processing capability
Limitations:
- Requires longer integration times than conventional imaging
- Current prototypes optimized for LEO; GEO performance unknown
- Daylight operation challenging (photon noise)
───────────────────────────────────────────────────────────────────────
MATURITY
───────────────────────────────────────────────────────────────────────
Estimated TRL: 4-5 (Component validated in laboratory environment)
Confidence: MEDIUM
Evidence:
- Phase II SBIR award (2023) indicates TRL 4+ achieved
- IEEE paper shows laboratory prototype results
- No operational environment testing reported
Development Status:
Phase II SBIR with AFRL, prototype under laboratory testing
───────────────────────────────────────────────────────────────────────
DEVELOPERS
───────────────────────────────────────────────────────────────────────
Primary: PhotonTech Systems Inc.
- Type: Small business
- Location: Boulder, CO
- Funding: $1.2M SBIR Phase II (AFRL, 2023)
- Prior: Phase I SBIR (2021), 2 related patents
Also active: MIT Lincoln Laboratory (academic research)
───────────────────────────────────────────────────────────────────────
EVIDENCE & CORROBORATION
───────────────────────────────────────────────────────────────────────
Sources: 4
Corroboration: MODERATE
┌─────────────────┬─────────────┬────────────────────────────────────┐
│ Source │ Reliability │ Key Contribution │
├─────────────────┼─────────────┼────────────────────────────────────┤
│ SBIR.gov │ A │ Funding, company, phase, abstract │
│ IEEE Xplore │ A │ Technical approach, test results │
│ USPTO │ A │ Patent claims, technical details │
│ Brave (company) │ C │ Company background, team info │
└─────────────────┴─────────────┴────────────────────────────────────┘
Corroborated claims:
- Technology approach (SPAD for sub-diffraction detection) [3 sources]
- Developer identity (PhotonTech Systems) [3 sources]
- Active government funding [2 sources]
Single-source claims:
- "3x improvement" performance claim [SBIR abstract only]
- Integration with existing systems [patent claims only]
───────────────────────────────────────────────────────────────────────
UNKNOWNS & RISKS
───────────────────────────────────────────────────────────────────────
Critical unknowns:
- Operational performance in space environment (radiation, thermal)
- Processing requirements for real-time detection
- Size, weight, power constraints for space deployment
Important unknowns:
- Cost trajectory for production systems
- Integration complexity with existing SSA infrastructure
- Timeline to TRL 6+ demonstration
Risks:
- TECHNICAL (MEDIUM): Laboratory results may not translate to space
- SCHEDULE (MEDIUM): No published roadmap to operational capability
- PROGRAMMATIC (LOW): Strong government interest reduces funding risk
───────────────────────────────────────────────────────────────────────
RECOMMENDATION
───────────────────────────────────────────────────────────────────────
Investigation Worthiness: HIGH
Rationale:
Technology directly addresses stated capability gap with demonstrated
laboratory results. Active government funding and multiple sources
confirm viability. Maturity level appropriate for technology watch
and potential future transition partnership.
Suggested next steps:
1. Contact PhotonTech Systems for technical briefing
2. Review SBIR final report when available
3. Monitor for Phase III transition announcements
4. Assess MIT Lincoln Lab research for complementary approaches
Key questions to answer:
- What are the SWaP constraints for space deployment?
- What integration is required with existing SSA systems?
- What is the realistic timeline to TRL 6 demonstration?
───────────────────────────────────────────────────────────────────────
Assessment generated: 2026-01-20
Sources analyzed: 4
Confidence: MEDIUM
Caveats: Performance claims from SBIR abstract not independently verified
Appendix B: File Structure
src/
├── app/
│ └── api/
│ └── techscout/
│ ├── search/route.ts # Updated with synthesize option
│ ├── synthesize/route.ts # NEW: Full synthesis endpoint
│ └── ...
├── services/
│ ├── decomposition/
│ │ └── index.ts # Enhanced with functional requirements
│ ├── sources/
│ │ └── ... # Existing, minor updates
│ ├── intelligence/
│ │ └── ... # Existing
│ └── synthesis/ # NEW DIRECTORY
│ ├── index.ts # Main synthesis orchestrator
│ ├── types.ts # Synthesis types
│ ├── technologyExtractor.ts # Extract technologies from results
│ ├── technologyClusterer.ts # Cluster same technologies
│ ├── gapFitAssessor.ts # Assess technology-gap fit
│ ├── evidenceCompiler.ts # Compile evidence with attribution
│ ├── recommendationEngine.ts # Generate recommendations
│ └── analystOutputGenerator.ts # Format analyst-ready output
├── components/
│ ├── TechnologyAssessmentCard.tsx # NEW
│ ├── SolutionsView.tsx # NEW
│ ├── EvidencePanel.tsx # NEW
│ └── ...
├── config/
│ └── techscout.ts # Updated prompts
└── types/
├── index.ts # Updated
└── synthesis.ts # NEW: Synthesis types
Appendix C: Prompt Templates
Technology Extraction Prompt
You are extracting specific technologies from a search result about potential
solutions to a capability gap.
CAPABILITY GAP CONTEXT:
{capabilityGap}
SEARCH RESULT:
Source: {sourceName} ({sourceType})
Title: {title}
Content: {content}
Extract any SPECIFIC TECHNOLOGIES that could address the capability gap.
For each technology, provide:
{
"name": "Specific technology name",
"description": "What it is (1-2 sentences)",
"capabilities": ["capability 1", "capability 2"],
"developer": "Organization name if mentioned",
"maturityIndicators": ["Phase II SBIR", "prototype demonstrated", etc.],
"performanceClaims": ["3x improvement", "sub-meter resolution", etc.],
"relevanceToGap": "How this might address the gap"
}
Rules:
- Extract SPECIFIC technologies, not generic categories
- Only include technologies that could plausibly address the gap
- Include partial information if specific technology is identifiable
- Return empty array if no specific technologies found
- Do not invent information not present in the content
Return JSON array of technologies.
Gap-Fit Assessment Prompt
Assess whether this technology addresses the stated capability gap.
CAPABILITY GAP:
{capabilityGap}
KEY REQUIREMENTS:
- Must address: {mustAddress}
- Nice to have: {niceToHave}
- Constraints: {constraints}
TECHNOLOGY:
Name: {name}
Description: {description}
Capabilities: {capabilities}
Maturity: {maturity}
Performance claims: {performanceClaims}
Evaluate:
1. Does this technology address the core need? Explain how.
2. For each requirement, assess: YES (clearly addresses), PARTIAL (somewhat
addresses), NO (does not address), or UNKNOWN (insufficient information)
3. What limitations does this technology have relative to the gap?
4. What information is missing that would affect this assessment?
5. Overall fit: HIGH (directly addresses core need with evidence),
MEDIUM (addresses need with caveats), LOW (tangentially related),
UNCERTAIN (insufficient information)
Provide fit score 0-100 where:
- 80-100: High fit, directly addresses gap
- 50-79: Medium fit, addresses with limitations
- 20-49: Low fit, partially relevant
- 0-19: Not relevant
Return JSON with structure:
{
"overallFit": "HIGH|MEDIUM|LOW|UNCERTAIN",
"fitScore": 0-100,
"howItAddressesGap": "explanation",
"requirementAssessments": [...],
"limitations": [...],
"unknowns": [...]
}
Document Version: 1.0 Created: 2026-01-20 Purpose: Implementation plan for Solution Extraction & Assessment Layer