Aha Provider¶
The Aha provider ingests Ideas from Aha! as enhancement request signals.
Location¶
The Aha provider is implemented in grokify/aha-studio, not in omnisignal core. This keeps heavy Aha SDK dependencies out of the core module.
Registration¶
Import the provider to auto-register:
import (
"github.com/plexusone/omnisignal"
_ "github.com/grokify/aha-studio/omnisignal" // Register Aha provider
)
provider, err := omnisignal.New("aha", omnisignal.Config{
BaseURL: "https://company.aha.io",
APIKey: os.Getenv("AHA_API_KEY"),
Options: map[string]any{
"products": []string{"PROD-1"},
},
})
Configuration¶
| Field | Required | Description |
|---|---|---|
BaseURL |
Yes | Aha instance URL (e.g., https://company.aha.io) |
APIKey |
Yes | Aha API key |
Options["products"] |
No | Filter by product IDs |
Options["statuses"] |
No | Filter by idea status |
Options["customer_mappings"] |
No | Map organization names to typed refs |
Options["capability_mappings"] |
No | Map categories to capability refs |
Signal Mapping¶
Aha Ideas are normalized to signal.TypeEnhancementRequest:
| Aha Field | Signal Field |
|---|---|
id |
ID (prefixed with aha-) |
name |
Summary |
description |
Description |
created_at |
ObservedAt |
votes_count |
Metadata["votes"] |
watchers_count |
Metadata["subscribers"] |
idea_organizations |
Metadata["organizations"] |
idea_contacts |
Metadata["customers"] |
product.id |
Domain.Name |
category |
Domain.Subdomain |
| (derived from votes/watchers) | Severity |
Capabilities¶
Capabilities{
SupportsStreaming: false,
SupportsBatchFetch: true,
SupportsFiltering: true,
SupportsAcknowledge: false,
MaxBatchSize: 200,
RateLimitPerMinute: 300,
SignalTypes: []signal.Type{
signal.TypeEnhancementRequest,
},
}
Raw vs. Curated¶
Aha Ideas are considered "curated" signals — they've already been aggregated and voted on by users. Set the curated metadata key to true so the consolidation pipeline can skip clustering:
See Raw vs. Curated Signals for details.
Implementation Status¶
The Aha provider is tracked in INIT-AHASTUDIO-001. The omnisignal adapter work is covered by the "OmniSignal adapter" RMIs in that initiative.