Spaces:
Runtime error
Runtime error
Mathias Claude Opus 4.5 commited on
Commit ·
5f31fe8
1
Parent(s): 9d8ad88
Update sdr-feature skill with browser push workflow
Browse filesCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- .DS_Store +0 -0
- BRAND_GUIDELINES.md +295 -0
- CLAUDE.md +100 -0
- DEVELOPMENT.md +148 -0
- _Case status_ January 2026 - DAILY - for SDR to add data🌟.csv +133 -0
- sdr-feature/SKILL.md +30 -18
.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
BRAND_GUIDELINES.md
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# ScaleupXQ Brand Guidelines
|
| 2 |
+
|
| 3 |
+
A comprehensive guide to our visual identity, tone of voice, and core values. This guide ensures consistency and cohesiveness in every communication, helping amplify the ScaleupXQ brand with clarity and impact.
|
| 4 |
+
|
| 5 |
+
---
|
| 6 |
+
|
| 7 |
+
## 1. Colors
|
| 8 |
+
|
| 9 |
+
### Primary Colors
|
| 10 |
+
|
| 11 |
+
The revised color palette for ScaleupXQ reflects the company's dynamic and authoritative stance in the sales consulting industry. Bold and expressive, designed to make a strong statement.
|
| 12 |
+
|
| 13 |
+
| Name | Hex Code | Usage |
|
| 14 |
+
|------|----------|-------|
|
| 15 |
+
| **Primary 100** | `#6D3EF3` | Primary brand color, headers, key highlights |
|
| 16 |
+
| **Primary 200** | `#602DF2` | Darker primary variant, hover states |
|
| 17 |
+
|
| 18 |
+
### Secondary Colors
|
| 19 |
+
|
| 20 |
+
These colors reinforce ScaleupXQ's identity and enhance visual communication with potential clients.
|
| 21 |
+
|
| 22 |
+
| Family | 100 (Lightest) | 200 | 300 | 400 (Darkest) |
|
| 23 |
+
|--------|----------------|-----|-----|---------------|
|
| 24 |
+
| **Lilac** | `#F4F0FF` | `#E8E0FF` | `#B89EFF` | `#1E0C32` |
|
| 25 |
+
| **Tangerine** | `#FFEBE9` | `#FFD8D3` | `#FF8474` | `#391418` |
|
| 26 |
+
| **Emerald** | `#E8FAF3` | `#D1F5E6` | `#70E0B1` | `#00302A` |
|
| 27 |
+
| **Marigold** | `#FFFDEF` | `#FFFADF` | `#FFF09B` | `#2E2A22` |
|
| 28 |
+
| **Zodiac** | `#F2FCFE` | `#E4F9FD` | `#ABECFA` | `#001630` |
|
| 29 |
+
| **Sierra** | `#FEF4EC` | `#FDE9D9` | `#FAB987` | `#2D1622` |
|
| 30 |
+
|
| 31 |
+
### Base Colors
|
| 32 |
+
|
| 33 |
+
| Name | Hex Code | Usage |
|
| 34 |
+
|------|----------|-------|
|
| 35 |
+
| **Base 100** | `#FFFFFF` | White backgrounds |
|
| 36 |
+
| **Base 200** | `#F5F5F6` | Light gray backgrounds |
|
| 37 |
+
| **Base 300** | `#D8D8D9` | Borders, dividers |
|
| 38 |
+
| **Base 400** | `#B2B1B3` | Muted text |
|
| 39 |
+
| **Base 500** | `#6E6D71` | Secondary text |
|
| 40 |
+
| **Base 600** | `#0D0B13` | Dark backgrounds, primary text |
|
| 41 |
+
|
| 42 |
+
### Color Level Usage (Important!)
|
| 43 |
+
|
| 44 |
+
ScaleupXQ uses colors at different "levels" for different purposes:
|
| 45 |
+
|
| 46 |
+
| Level | Purpose | Example |
|
| 47 |
+
|-------|---------|---------|
|
| 48 |
+
| **100** | Light backgrounds, subtle fills | `#F4F0FF` (Lilac 100) for card backgrounds |
|
| 49 |
+
| **200** | Slightly darker backgrounds, borders | `#E8E0FF` (Lilac 200) for hover states |
|
| 50 |
+
| **300** | Vibrant accents, charts, progress bars | `#B89EFF` (Lilac 300) for highlights |
|
| 51 |
+
| **400** | Dark text, strong contrast | `#1E0C32` (Lilac 400) for headings on light bg |
|
| 52 |
+
|
| 53 |
+
### Dashboard Color Mapping
|
| 54 |
+
|
| 55 |
+
```css
|
| 56 |
+
:root {
|
| 57 |
+
/* Primary brand */
|
| 58 |
+
--primary: #6D3EF3; /* Primary - main accent, buttons, links */
|
| 59 |
+
--primary-dark: #602DF2; /* Primary dark - hover states */
|
| 60 |
+
|
| 61 |
+
/* Status colors - ALWAYS use 300-level (vibrant) for both themes */
|
| 62 |
+
--success: #70E0B1; /* Emerald 300 - positive metrics */
|
| 63 |
+
--warning: #FFF09B; /* Marigold 300 - caution, pending */
|
| 64 |
+
--danger: #FF8474; /* Tangerine 300 - negative, errors */
|
| 65 |
+
--info: #ABECFA; /* Zodiac 300 - informational */
|
| 66 |
+
|
| 67 |
+
/* Card backgrounds - use 100-level colors */
|
| 68 |
+
--bg-lilac: #F4F0FF; /* Lilac 100 */
|
| 69 |
+
--bg-emerald: #E8FAF3; /* Emerald 100 */
|
| 70 |
+
--bg-zodiac: #F2FCFE; /* Zodiac 100 */
|
| 71 |
+
|
| 72 |
+
/* Base colors */
|
| 73 |
+
--bg-white: #FFFFFF; /* Base 100 - main background */
|
| 74 |
+
--bg-light: #F5F5F6; /* Base 200 - subtle background */
|
| 75 |
+
--border: #D8D8D9; /* Base 300 - borders, dividers */
|
| 76 |
+
--text-muted: #6E6D71; /* Base 500 - secondary text */
|
| 77 |
+
--text-dark: #0D0B13; /* Base 600 - primary text */
|
| 78 |
+
}
|
| 79 |
+
```
|
| 80 |
+
|
| 81 |
+
---
|
| 82 |
+
|
| 83 |
+
## 2. Typography
|
| 84 |
+
|
| 85 |
+
### Font: Inter
|
| 86 |
+
|
| 87 |
+
ScaleupXQ uses **Inter** as its typographic standard. This modern and bold font offers a range of weights, providing exceptional flexibility for various design needs.
|
| 88 |
+
|
| 89 |
+
**Download:** [Inter Font](https://fonts.google.com/specimen/Inter)
|
| 90 |
+
|
| 91 |
+
### Font Weights
|
| 92 |
+
|
| 93 |
+
| Weight | CSS Value | Usage |
|
| 94 |
+
|--------|-----------|-------|
|
| 95 |
+
| **Black** | `900` | Hero headlines, impact statements |
|
| 96 |
+
| **Bold** | `700` | Section headers, emphasis |
|
| 97 |
+
| **Semibold** | `600` | Subheadings, labels |
|
| 98 |
+
| **Medium** | `500` | Body text emphasis, buttons |
|
| 99 |
+
| **Regular** | `400` | Body text, paragraphs |
|
| 100 |
+
|
| 101 |
+
### Implementation
|
| 102 |
+
|
| 103 |
+
```html
|
| 104 |
+
<!-- Google Fonts CDN -->
|
| 105 |
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
| 106 |
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| 107 |
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;900&display=swap" rel="stylesheet">
|
| 108 |
+
```
|
| 109 |
+
|
| 110 |
+
```css
|
| 111 |
+
body {
|
| 112 |
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
h1 { font-weight: 900; }
|
| 116 |
+
h2, h3 { font-weight: 700; }
|
| 117 |
+
h4, .label { font-weight: 600; }
|
| 118 |
+
.button { font-weight: 500; }
|
| 119 |
+
body { font-weight: 400; }
|
| 120 |
+
```
|
| 121 |
+
|
| 122 |
+
---
|
| 123 |
+
|
| 124 |
+
## 3. Iconography
|
| 125 |
+
|
| 126 |
+
### Style Guidelines
|
| 127 |
+
|
| 128 |
+
Our iconography features **clean and minimalistic line icons**, providing a perfect counterbalance to our bold fonts and vibrant color palette.
|
| 129 |
+
|
| 130 |
+
**Characteristics:**
|
| 131 |
+
- Simple, understated design
|
| 132 |
+
- Line-based (not filled)
|
| 133 |
+
- Consistent stroke width
|
| 134 |
+
- Enhances clarity and readability
|
| 135 |
+
|
| 136 |
+
**Recommended Icon Sets:**
|
| 137 |
+
- [Lucide Icons](https://lucide.dev/)
|
| 138 |
+
- [Heroicons](https://heroicons.com/) (outline style)
|
| 139 |
+
- [Phosphor Icons](https://phosphoricons.com/) (light weight)
|
| 140 |
+
|
| 141 |
+
---
|
| 142 |
+
|
| 143 |
+
## 4. Assets
|
| 144 |
+
|
| 145 |
+
### Logo Usage
|
| 146 |
+
|
| 147 |
+
| Variant | Use Case |
|
| 148 |
+
|---------|----------|
|
| 149 |
+
| **Color Light** | Dark backgrounds |
|
| 150 |
+
| **Color Dark** | Light backgrounds |
|
| 151 |
+
| **Mono Light** | Single-color on dark |
|
| 152 |
+
| **Mono Dark** | Single-color on light |
|
| 153 |
+
|
| 154 |
+
### Logomark
|
| 155 |
+
|
| 156 |
+
The logomark integrates building blocks and an upward-pointing arrow, symbolising:
|
| 157 |
+
- Foundational strength
|
| 158 |
+
- Growth trajectory
|
| 159 |
+
- Building and elevating B2B sales organizations
|
| 160 |
+
|
| 161 |
+
### Brand Element
|
| 162 |
+
|
| 163 |
+
The graphical brand element features a dynamic composition of squares forming an arrow and stairs, symbolising growth and forward momentum.
|
| 164 |
+
|
| 165 |
+
---
|
| 166 |
+
|
| 167 |
+
## 5. Tone of Voice
|
| 168 |
+
|
| 169 |
+
### Bold, Engaging, and Playfully Authentic
|
| 170 |
+
|
| 171 |
+
We communicate with:
|
| 172 |
+
|
| 173 |
+
| Quality | Description |
|
| 174 |
+
|---------|-------------|
|
| 175 |
+
| **Clarity** | Assertive messaging that's impactful and memorable |
|
| 176 |
+
| **Engagement** | Connect with audience on a deeper level |
|
| 177 |
+
| **Playfulness** | Touch of humor adds unique charm |
|
| 178 |
+
| **Authenticity** | Genuine commitment to excellence shines through |
|
| 179 |
+
|
| 180 |
+
### Writing Guidelines
|
| 181 |
+
|
| 182 |
+
**Do:**
|
| 183 |
+
- Use active voice
|
| 184 |
+
- Be direct and confident
|
| 185 |
+
- Keep messaging concise
|
| 186 |
+
- Add personality where appropriate
|
| 187 |
+
- Focus on value and outcomes
|
| 188 |
+
|
| 189 |
+
**Don't:**
|
| 190 |
+
- Use jargon unnecessarily
|
| 191 |
+
- Be overly formal or stiff
|
| 192 |
+
- Make vague claims
|
| 193 |
+
- Use passive constructions
|
| 194 |
+
- Overuse superlatives
|
| 195 |
+
|
| 196 |
+
### Example Phrases
|
| 197 |
+
|
| 198 |
+
| Instead of... | Write... |
|
| 199 |
+
|---------------|----------|
|
| 200 |
+
| "We provide solutions" | "We build sales machines" |
|
| 201 |
+
| "Our services include" | "We deliver" |
|
| 202 |
+
| "It is possible that" | "You can" |
|
| 203 |
+
| "In order to" | "To" |
|
| 204 |
+
|
| 205 |
+
---
|
| 206 |
+
|
| 207 |
+
## 6. Dashboard-Specific Guidelines
|
| 208 |
+
|
| 209 |
+
### Card Design
|
| 210 |
+
|
| 211 |
+
```css
|
| 212 |
+
.card {
|
| 213 |
+
background: rgba(109, 62, 243, 0.05);
|
| 214 |
+
border: 1px solid rgba(109, 62, 243, 0.2);
|
| 215 |
+
border-radius: 12px;
|
| 216 |
+
}
|
| 217 |
+
```
|
| 218 |
+
|
| 219 |
+
### Progress Indicators
|
| 220 |
+
|
| 221 |
+
Use 300-level colors (vibrant) for progress bars - consistent across light and dark themes:
|
| 222 |
+
- 0-25%: Tangerine 300 (`#FF8474`) - Danger/low
|
| 223 |
+
- 25-50%: Sierra 300 (`#FAB987`) - Caution
|
| 224 |
+
- 50-75%: Marigold 300 (`#FFF09B`) - Warning/medium
|
| 225 |
+
- 75-99%: Zodiac 300 (`#ABECFA`) - Good
|
| 226 |
+
- 100%+: Emerald 300 (`#70E0B1`) - Excellent/complete
|
| 227 |
+
|
| 228 |
+
### Charts
|
| 229 |
+
|
| 230 |
+
Primary chart colors (in order):
|
| 231 |
+
1. `#6D3EF3` - Primary
|
| 232 |
+
2. `#70E0B1` - Emerald
|
| 233 |
+
3. `#ABECFA` - Zodiac
|
| 234 |
+
4. `#FFF09B` - Marigold
|
| 235 |
+
5. `#B89EFF` - Lilac
|
| 236 |
+
6. `#FAB987` - Sierra
|
| 237 |
+
7. `#FF8474` - Tangerine
|
| 238 |
+
|
| 239 |
+
### Leaderboard Rankings
|
| 240 |
+
|
| 241 |
+
| Rank | Style |
|
| 242 |
+
|------|-------|
|
| 243 |
+
| 1st | Gold gradient (`#FFF09B` to `#FAB987`) |
|
| 244 |
+
| 2nd | Silver (`#D8D8D9`) |
|
| 245 |
+
| 3rd | Bronze (`#FAB987`) |
|
| 246 |
+
| Others | Subtle border |
|
| 247 |
+
|
| 248 |
+
---
|
| 249 |
+
|
| 250 |
+
## Quick Reference
|
| 251 |
+
|
| 252 |
+
```css
|
| 253 |
+
/* Copy-paste ready CSS variables */
|
| 254 |
+
:root {
|
| 255 |
+
--scaleup-primary-100: #6D3EF3;
|
| 256 |
+
--scaleup-primary-200: #602DF2;
|
| 257 |
+
|
| 258 |
+
--scaleup-lilac-100: #F4F0FF;
|
| 259 |
+
--scaleup-lilac-200: #E8E0FF;
|
| 260 |
+
--scaleup-lilac-300: #B89EFF;
|
| 261 |
+
--scaleup-lilac-400: #1E0C32;
|
| 262 |
+
|
| 263 |
+
--scaleup-tangerine-100: #FFEBE9;
|
| 264 |
+
--scaleup-tangerine-200: #FFD8D3;
|
| 265 |
+
--scaleup-tangerine-300: #FF8474;
|
| 266 |
+
--scaleup-tangerine-400: #391418;
|
| 267 |
+
|
| 268 |
+
--scaleup-emerald-100: #E8FAF3;
|
| 269 |
+
--scaleup-emerald-200: #D1F5E6;
|
| 270 |
+
--scaleup-emerald-300: #70E0B1;
|
| 271 |
+
--scaleup-emerald-400: #00302A;
|
| 272 |
+
|
| 273 |
+
--scaleup-marigold-100: #FFFDEF;
|
| 274 |
+
--scaleup-marigold-200: #FFFADF;
|
| 275 |
+
--scaleup-marigold-300: #FFF09B;
|
| 276 |
+
--scaleup-marigold-400: #2E2A22;
|
| 277 |
+
|
| 278 |
+
--scaleup-zodiac-100: #F2FCFE;
|
| 279 |
+
--scaleup-zodiac-200: #E4F9FD;
|
| 280 |
+
--scaleup-zodiac-300: #ABECFA;
|
| 281 |
+
--scaleup-zodiac-400: #001630;
|
| 282 |
+
|
| 283 |
+
--scaleup-sierra-100: #FEF4EC;
|
| 284 |
+
--scaleup-sierra-200: #FDE9D9;
|
| 285 |
+
--scaleup-sierra-300: #FAB987;
|
| 286 |
+
--scaleup-sierra-400: #2D1622;
|
| 287 |
+
|
| 288 |
+
--scaleup-base-100: #FFFFFF;
|
| 289 |
+
--scaleup-base-200: #F5F5F6;
|
| 290 |
+
--scaleup-base-300: #D8D8D9;
|
| 291 |
+
--scaleup-base-400: #B2B1B3;
|
| 292 |
+
--scaleup-base-500: #6E6D71;
|
| 293 |
+
--scaleup-base-600: #0D0B13;
|
| 294 |
+
}
|
| 295 |
+
```
|
CLAUDE.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Sales Dashboard Project
|
| 2 |
+
|
| 3 |
+
## Overview
|
| 4 |
+
Interactive sales case status tracker dashboard built as a single HTML file with embedded JavaScript and CSS. Displays sales team performance data from Excel files with charts and leaderboards. Built for **ScaleupXQ** - a B2B sales consulting company.
|
| 5 |
+
|
| 6 |
+
## Project Structure
|
| 7 |
+
```
|
| 8 |
+
sales-dashboard-project/
|
| 9 |
+
├── index.html # Main dashboard (single file, self-contained)
|
| 10 |
+
├── Case status_ October 2025.xlsx # Source data file
|
| 11 |
+
├── README.md # HuggingFace Space config + description
|
| 12 |
+
├── CLAUDE.md # This file - development context
|
| 13 |
+
├── DEVELOPMENT.md # Technical details and customization guide
|
| 14 |
+
└── BRAND_GUIDELINES.md # ScaleupXQ brand identity guide
|
| 15 |
+
```
|
| 16 |
+
|
| 17 |
+
## Brand Guidelines
|
| 18 |
+
**IMPORTANT:** All UI changes must follow the ScaleupXQ brand guidelines in `BRAND_GUIDELINES.md`.
|
| 19 |
+
|
| 20 |
+
Key brand elements:
|
| 21 |
+
- **Primary Color**: `#6D3EF3` (purple)
|
| 22 |
+
- **Font**: Inter (Google Fonts)
|
| 23 |
+
- **Tone**: Bold, engaging, playfully authentic
|
| 24 |
+
|
| 25 |
+
## Deployment
|
| 26 |
+
- **Live URL**: https://huggingface.co/spaces/MathiasAESandnes/case-status-tracker
|
| 27 |
+
- **Platform**: Hugging Face Spaces (static SDK)
|
| 28 |
+
- **Deploy command**: `git push origin main` (from this directory)
|
| 29 |
+
|
| 30 |
+
## Tech Stack
|
| 31 |
+
- **Frontend**: Vanilla HTML/CSS/JavaScript (no build step)
|
| 32 |
+
- **Charts**: Chart.js via CDN
|
| 33 |
+
- **Excel Parsing**: SheetJS (xlsx.js) via CDN
|
| 34 |
+
- **Styling**: CSS custom properties, gradients, glassmorphism
|
| 35 |
+
|
| 36 |
+
## Key Features
|
| 37 |
+
1. **Summary Cards**: Total cases, win rate, active cases, avg value
|
| 38 |
+
2. **Case Table**: Sortable, shows all cases with status badges
|
| 39 |
+
3. **Leaderboard**: Ranked salespeople by points (wins, offers, meetings)
|
| 40 |
+
4. **Charts**:
|
| 41 |
+
- Status distribution (doughnut)
|
| 42 |
+
- Category breakdown (bar)
|
| 43 |
+
- Monthly trend (line)
|
| 44 |
+
- Team comparison (horizontal bar)
|
| 45 |
+
5. **File Upload**: Drag & drop Excel files to update data
|
| 46 |
+
|
| 47 |
+
## Data Structure
|
| 48 |
+
The dashboard expects Excel files with these columns:
|
| 49 |
+
- `Bedrift` - Company name
|
| 50 |
+
- `Løsning` - Solution/product category
|
| 51 |
+
- `Forventet størrelse` - Expected deal size (NOK)
|
| 52 |
+
- `Status` - Case status (Vunnet, Tilbud sendt, Møte booket, etc.)
|
| 53 |
+
- `Salgsansvarlig` - Sales person name
|
| 54 |
+
- `Dato opprettet` - Date created
|
| 55 |
+
- `Siste aktivitet` - Last activity date
|
| 56 |
+
|
| 57 |
+
## Scoring System (Leaderboard)
|
| 58 |
+
- **Won (Vunnet)**: 3 points
|
| 59 |
+
- **Offer Sent (Tilbud sendt)**: 2 points
|
| 60 |
+
- **Meeting Booked (Møte booket)**: 1 point
|
| 61 |
+
|
| 62 |
+
## Color Scheme (ScaleupXQ Brand)
|
| 63 |
+
```css
|
| 64 |
+
/* Primary */
|
| 65 |
+
--primary: #6D3EF3; /* ScaleupXQ Purple - headers, highlights */
|
| 66 |
+
--primary-dark: #602DF2; /* Darker variant - hover states */
|
| 67 |
+
|
| 68 |
+
/* Status colors from brand palette */
|
| 69 |
+
--success: #70E0B1; /* Emerald 300 - won deals, positive */
|
| 70 |
+
--warning: #FFF09B; /* Marigold 300 - pending/offers */
|
| 71 |
+
--danger: #FF8474; /* Tangerine 300 - lost deals */
|
| 72 |
+
--info: #ABECFA; /* Zodiac 300 - informational */
|
| 73 |
+
--purple: #B89EFF; /* Lilac 300 - accents */
|
| 74 |
+
|
| 75 |
+
/* Backgrounds */
|
| 76 |
+
--bg-dark: #0D0B13; /* Base 600 - dark background */
|
| 77 |
+
```
|
| 78 |
+
|
| 79 |
+
See `BRAND_GUIDELINES.md` for complete color palette and usage rules.
|
| 80 |
+
|
| 81 |
+
## Common Tasks
|
| 82 |
+
|
| 83 |
+
### Update data
|
| 84 |
+
Replace the Excel file and redeploy, or use the file upload feature in the UI.
|
| 85 |
+
|
| 86 |
+
### Add new status type
|
| 87 |
+
1. Add to the `getStatusColor()` function
|
| 88 |
+
2. Add to the `getStatusBadgeStyle()` function
|
| 89 |
+
3. Update scoring in `calculateLeaderboard()` if needed
|
| 90 |
+
|
| 91 |
+
### Modify chart colors
|
| 92 |
+
Find the chart initialization in `initCharts()` and update the `backgroundColor` arrays.
|
| 93 |
+
|
| 94 |
+
### Change leaderboard scoring
|
| 95 |
+
Edit the `calculateLeaderboard()` function - points are assigned based on case status.
|
| 96 |
+
|
| 97 |
+
## Git Remote
|
| 98 |
+
```
|
| 99 |
+
origin: https://huggingface.co/spaces/MathiasAESandnes/case-status-tracker
|
| 100 |
+
```
|
DEVELOPMENT.md
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Development Guide
|
| 2 |
+
|
| 3 |
+
## Quick Start
|
| 4 |
+
1. Open `index.html` in a browser for local development
|
| 5 |
+
2. Make changes to the single HTML file
|
| 6 |
+
3. Deploy: `git add -A && git commit -m "message" && git push origin main`
|
| 7 |
+
|
| 8 |
+
## Brand Guidelines
|
| 9 |
+
**All UI changes must follow the ScaleupXQ brand guidelines.** See `BRAND_GUIDELINES.md` for:
|
| 10 |
+
- Color palette (Primary: `#6D3EF3`)
|
| 11 |
+
- Typography (Inter font)
|
| 12 |
+
- Iconography style
|
| 13 |
+
- Tone of voice
|
| 14 |
+
|
| 15 |
+
## Architecture
|
| 16 |
+
|
| 17 |
+
### Single File Design
|
| 18 |
+
The entire dashboard is contained in one `index.html` file:
|
| 19 |
+
- `<style>` block: All CSS (~300 lines)
|
| 20 |
+
- `<body>`: HTML structure
|
| 21 |
+
- `<script>` block: All JavaScript (~600 lines)
|
| 22 |
+
|
| 23 |
+
### Data Flow
|
| 24 |
+
```
|
| 25 |
+
Excel File → SheetJS Parser → JavaScript Arrays → Charts + Tables
|
| 26 |
+
```
|
| 27 |
+
|
| 28 |
+
### Key Functions
|
| 29 |
+
|
| 30 |
+
#### Data Processing
|
| 31 |
+
- `parseExcelData(workbook)` - Converts Excel to JS objects
|
| 32 |
+
- `processData()` - Calculates totals, categories, monthly data
|
| 33 |
+
- `calculateLeaderboard()` - Scores and ranks salespeople
|
| 34 |
+
|
| 35 |
+
#### Rendering
|
| 36 |
+
- `renderTable()` - Builds the case table HTML
|
| 37 |
+
- `initCharts()` - Creates all Chart.js instances
|
| 38 |
+
- `updateCharts()` - Refreshes chart data
|
| 39 |
+
|
| 40 |
+
#### Utilities
|
| 41 |
+
- `getStatusColor(status)` - Returns color for status
|
| 42 |
+
- `getStatusBadgeStyle(status)` - Returns full badge CSS
|
| 43 |
+
- `formatCurrency(value)` - Formats NOK amounts
|
| 44 |
+
|
| 45 |
+
## Customization
|
| 46 |
+
|
| 47 |
+
### Modifying Colors (Brand Compliance)
|
| 48 |
+
All colors should follow the ScaleupXQ brand palette. See `BRAND_GUIDELINES.md` for the full palette.
|
| 49 |
+
|
| 50 |
+
**Chart color order (use in this sequence):**
|
| 51 |
+
```javascript
|
| 52 |
+
['#6D3EF3', '#70E0B1', '#ABECFA', '#FFF09B', '#B89EFF', '#FAB987', '#FF8474', '#E8E0FF', '#D1F5E6', '#602DF2']
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
**Progress bar colors by percentage:**
|
| 56 |
+
- 100%+: `#70E0B1` (Emerald - success)
|
| 57 |
+
- 75-99%: `#ABECFA` (Zodiac - good)
|
| 58 |
+
- 50-74%: `#FFF09B` (Marigold - warning)
|
| 59 |
+
- 25-49%: `#FAB987` (Sierra - caution)
|
| 60 |
+
- 0-24%: `#FF8474` (Tangerine - danger)
|
| 61 |
+
|
| 62 |
+
### Adding a New Chart
|
| 63 |
+
```javascript
|
| 64 |
+
// 1. Add canvas in HTML
|
| 65 |
+
<div class="chart-card">
|
| 66 |
+
<h3>My New Chart</h3>
|
| 67 |
+
<canvas id="myNewChart"></canvas>
|
| 68 |
+
</div>
|
| 69 |
+
|
| 70 |
+
// 2. Initialize in initCharts()
|
| 71 |
+
myNewChart = new Chart(document.getElementById('myNewChart'), {
|
| 72 |
+
type: 'bar', // or 'line', 'doughnut', etc.
|
| 73 |
+
data: {
|
| 74 |
+
labels: [...],
|
| 75 |
+
datasets: [{
|
| 76 |
+
data: [...],
|
| 77 |
+
backgroundColor: [...]
|
| 78 |
+
}]
|
| 79 |
+
},
|
| 80 |
+
options: { ... }
|
| 81 |
+
});
|
| 82 |
+
|
| 83 |
+
// 3. Update in updateCharts()
|
| 84 |
+
myNewChart.data.datasets[0].data = newData;
|
| 85 |
+
myNewChart.update();
|
| 86 |
+
```
|
| 87 |
+
|
| 88 |
+
### Adding a New Summary Card
|
| 89 |
+
```html
|
| 90 |
+
<div class="summary-card">
|
| 91 |
+
<h4>New Metric</h4>
|
| 92 |
+
<div class="value" id="newMetric" style="color: var(--primary);">0</div>
|
| 93 |
+
</div>
|
| 94 |
+
```
|
| 95 |
+
Then update in `processData()`:
|
| 96 |
+
```javascript
|
| 97 |
+
document.getElementById('newMetric').textContent = calculatedValue;
|
| 98 |
+
```
|
| 99 |
+
|
| 100 |
+
### Modifying Status Types
|
| 101 |
+
Current statuses and their meanings:
|
| 102 |
+
- `Vunnet` - Won/Closed deal
|
| 103 |
+
- `Tilbud sendt` - Offer sent, awaiting response
|
| 104 |
+
- `Møte booket` - Meeting scheduled
|
| 105 |
+
- `Dialog` - In discussion
|
| 106 |
+
- `Tapt` - Lost deal
|
| 107 |
+
- `Avsluttet` - Closed/Ended
|
| 108 |
+
|
| 109 |
+
To add a new status:
|
| 110 |
+
```javascript
|
| 111 |
+
// In getStatusColor()
|
| 112 |
+
case 'New Status': return 'var(--new-color)';
|
| 113 |
+
|
| 114 |
+
// In getStatusBadgeStyle()
|
| 115 |
+
case 'New Status': return 'background: rgba(r,g,b,0.2); color: #hex; border-color: #hex;';
|
| 116 |
+
|
| 117 |
+
// In calculateLeaderboard() if it should give points
|
| 118 |
+
if (status === 'New Status') points += X;
|
| 119 |
+
```
|
| 120 |
+
|
| 121 |
+
## Performance Notes
|
| 122 |
+
- Chart.js is loaded from CDN (~200KB)
|
| 123 |
+
- SheetJS is loaded from CDN (~500KB)
|
| 124 |
+
- All data processing happens client-side
|
| 125 |
+
- No server required - fully static
|
| 126 |
+
|
| 127 |
+
## Browser Support
|
| 128 |
+
Tested in:
|
| 129 |
+
- Chrome 90+
|
| 130 |
+
- Firefox 88+
|
| 131 |
+
- Safari 14+
|
| 132 |
+
- Edge 90+
|
| 133 |
+
|
| 134 |
+
## Troubleshooting
|
| 135 |
+
|
| 136 |
+
### Charts not showing
|
| 137 |
+
- Check browser console for Chart.js errors
|
| 138 |
+
- Ensure canvas elements have unique IDs
|
| 139 |
+
- Verify data arrays aren't empty
|
| 140 |
+
|
| 141 |
+
### Excel not loading
|
| 142 |
+
- Check file format (.xlsx required)
|
| 143 |
+
- Verify column names match expected headers
|
| 144 |
+
- Check console for SheetJS parsing errors
|
| 145 |
+
|
| 146 |
+
### Leaderboard empty
|
| 147 |
+
- Ensure `Salgsansvarlig` column exists
|
| 148 |
+
- Check that statuses match scoring conditions
|
_Case status_ January 2026 - DAILY - for SDR to add data🌟.csv
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
$65.00,,,WEEK 2,,,,,,,WEEK 3,,,,,,,WEEK 4,,,,,,,WEEK 5,,,,,,,,,,
|
| 2 |
+
Case,GS,Activity,Column 4,Column 5,Column 6,Column 7,Column 9,Column 10,Column 11,Column 12,Column 13,Column 14,Column 16,Column 17,Column 18,Column 19,Column 20,Column 21,Column 23,Column 24,Column 25,Column 26,Column 32,Column 34,Column 41,Column 40,Column 34,Column 35,Column 36,Column 33,Column 34,T,A,%
|
| 3 |
+
,,,M,T,W,T,F,,,M,T,W,T,F,,,M,T,W,T,F,,,M,T,W,T,F,,,,Total,Total,
|
| 4 |
+
,,,5,6,7,8,9,,,12,13,14,15,16,,,19,20,21,22,23,,,26,27,28,29,30,,,,TARGET,ACTUAL,
|
| 5 |
+
,,Calls,0,26,43,9,26,75,139%,34,21,22,5,0,75,109%,6,,,,,75,8%,,,,,,,75,0%,300,192,64%
|
| 6 |
+
Barde AI,William A,Emails,0,1,31,8,0,15,267%,0,7,0,0,0,15,47%,0,,,,,15,0%,,,,,,,15,0%,60,47,78%
|
| 7 |
+
,,Prospects,0,1,36,8,2,0,,4,0,0,0,0,0,,0,,,,,0,,,,,,,,0,,0,51,
|
| 8 |
+
,,SQL,0,3,2,0,0,2,250%,1,2,0,0,0,3,100%,0,,,,,3,0%,,,,,,,2,0%,10,8,80%
|
| 9 |
+
,,Calls,1,29,19,11,25,60,142%,20,12,0,28,0,60,100%,1,,,,,60,2%,,,,,,,60,0%,240,146,61%
|
| 10 |
+
Once,William A,Emails,0,11,8,4,0,10,230%,3,10,0,0,0,10,130%,0,,,,,10,0%,,,,,,,10,0%,40,36,90%
|
| 11 |
+
,,Prospects,0,3,0,0,0,10,30%,0,0,0,0,0,10,0%,1,,,,,10,10%,,,,,,,10,0%,40,4,10%
|
| 12 |
+
,,SQL,1,1,1,0,0,1,300%,0,0,0,0,0,1,0%,1,,,,,1,100%,,,,,,,2,0%,5,4,80%
|
| 13 |
+
,,Calls,0,0,6,14,68,100,88%,0,43,44,11,25,100,123%,0,0,70,,,100,70%,,,,,,,100,0%,400,281,70%
|
| 14 |
+
Noteless,Erlend,Emails,0,0,0,2,4,,,4,3,3,1,1,,,1,,19,,,,,,,,,,,,,0,38,
|
| 15 |
+
,,Prospects (activated),0,0,0,0,0,,,0,0,0,0,0,,,0,0,0,,,,,,,,,,,,,0,0,
|
| 16 |
+
,,SQL,2,0,0,0,4,3,200%,2,0,0,0,2,3,133%,0,0,1,,,3,33%,,,,,,,3,0%,12,11,92%
|
| 17 |
+
,,Calls,0,0,18,65,21,150,69%,35,27,32,37,22,150,102%,35,29,51,,,150,77%,,,,,,,150,0%,600,372,62%
|
| 18 |
+
Manymore,Erlend,Emails,0,0,0,2,0,40,5%,4,28,23,1,0,40,140%,10,8,16,,,40,85%,,,,,,,40,0%,160,92,58%
|
| 19 |
+
,,Prospects,0,0,97,0,0,50,194%,0,0,41,0,0,50,82%,0,0,0,,,50,0%,,,,,,,50,0%,200,138,69%
|
| 20 |
+
,,SQL,0,0,1,1,0,2,100%,0,1,1,3,0,2,250%,0,1,0,,,1,100%,,,,,,,1,0%,6,8,133%
|
| 21 |
+
,,Calls,0,68,49,19,17,150,102%,63,45,31,21,0,150,107%,28,20,65,45,,150,105%,,,,,,,150,0%,600,471,79%
|
| 22 |
+
Computas,William W,Emails,13,3,2,0,19,25,148%,2,12,12,1,0,25,108%,19,1,8,0,,25,112%,,,,,,,25,0%,100,92,92%
|
| 23 |
+
,,LinkedIn,0,0,0,0,0,0,,0,0,0,0,0,0,,0,0,0,0,,0,,,,,,,,0,,0,0,
|
| 24 |
+
,,Prospects,3,10,1,18,3,25,140%,28,0,3,1,0,25,128%,25,0,0,4,,25,,,,,,,,25,0%,100,96,96%
|
| 25 |
+
,,SQL,0,1,2,0,0,2,150%,2,0,0,0,0,2,100%,2,0,0,0,,2,100%,,,,,,,1,0%,7,7,100%
|
| 26 |
+
,,Calls,17,2,27,29,40,100,115%,18,23,52,12,14,100,119%,22,56,0,36,,100,114%,,,,,,,100,0%,400,348,87%
|
| 27 |
+
TidyPay,William W,Emails,22,2,2,2,0,25,112%,2,16,6,3,3,25,120%,28,1,0,2,,25,124%,,,,,,,25,0%,100,89,89%
|
| 28 |
+
,,LinkedIn,4,0,7,6,2,15,127%,4,8,4,2,2,15,133%,8,9,0,4,,15,140%,,,,,,,15,0%,60,60,100%
|
| 29 |
+
,,Prospects,1,0,1,1,12,15,100%,0,1,2,0,14,15,113%,0,1,0,14,,15,100%,,,,,,,15,0%,60,47,78%
|
| 30 |
+
,,SQL,2,0,1,0,1,1,400%,0,1,0,0,1,2,100%,0,0,0,1,,2,50%,,,,,,,2,0%,7,7,100%
|
| 31 |
+
,,Calls,0,57,37,29,59,150,121%,0,52,78,15,5,150,100%,10,72,19,42,,150,95%,,,,,,,150,0%,600,475,79%
|
| 32 |
+
Rayvn,William W,Emails,25,7,3,7,3,30,150%,0,1,24,8,0,30,110%,1,3,17,15,,30,120%,,,,,,,30,0%,120,114,95%
|
| 33 |
+
,,LinkedIn,3,8,6,11,3,30,103%,0,10,9,6,5,30,100%,4,9,7,13,,30,110%,,,,,,,30,0%,120,94,78%
|
| 34 |
+
,,Prospects,0,1,1,2,28,30,107%,0,25,0,0,5,30,100%,0,1,0,24,,30,83%,,,,,,,30,0%,120,87,73%
|
| 35 |
+
,,SQL,0,1,0,1,0,1,200%,0,1,0,0,0,1,100%,0,1,1,,,1,200%,,,,,,,1,0%,4,5,125%
|
| 36 |
+
,,Calls,0,0,22,21,40,120,69%,23,18,17,35,11,120,87%,0,20,42,0,0,120,52%,,,,,,,120,0%,480,249,52%
|
| 37 |
+
,,Emails,0,8,15,2,0,30,83%,0,0,0,32,2,30,113%,0,1,1,0,0,30,7%,,,,,,,30,0%,120,61,51%
|
| 38 |
+
Rayvn,Christian,LinkedIn,0,0,0,0,0,30,0%,0,0,0,34,0,30,113%,0,0,0,0,0,30,0%,,,,,,,30,0%,120,34,28%
|
| 39 |
+
,,Prospects,0,0,0,0,0,30,0%,0,0,0,34,0,30,113%,0,0,43,0,0,30,143%,,,,,,,30,0%,120,77,64%
|
| 40 |
+
,,SQL,0,0,0,0,0,1,0%,0,0,0,2,1,1,300%,0,0,0,1,0,1,100%,,,,,,,1,0%,4,4,100%
|
| 41 |
+
,,Calls,0,0,22,0,22,100,44%,0,39,30,27,54,100,150%,0,27,27,0,0,100,54%,,,,,,,100,0%,400,248,62%
|
| 42 |
+
3LC,Christian,Emails,1,2,1,0,0,0,,0,0,0,5,0,0,,1,4,2,0,0,0,,,,,,,,0,,0,16,
|
| 43 |
+
,,LinkedIn,0,40,0,0,0,25,160%,29,0,0,0,0,25,116%,0,0,0,0,0,25,0%,,,,,,,25,0%,100,69,69%
|
| 44 |
+
,,Prospects,0,40,0,0,0,25,160%,29,0,0,0,0,25,116%,0,0,0,0,0,25,0%,,,,,,,25,0%,100,69,69%
|
| 45 |
+
,,SQL,1,0,0,0,0,1,100%,0,1,0,0,1,2,100%,0,1,0,0,0,2,50%,,,,,,,2,0%,7,4,57%
|
| 46 |
+
,,Calls,0,31,17,42,60,150,100%,0,34,34,26,47,150,94%,0,0,67,57,,150,83%,,,,,,,150,0%,600,415,69%
|
| 47 |
+
Rayvn,Hans,Emails,2,2,7,15,10,30,120%,0,5,0,32,9,30,153%,0,0,10,,,30,33%,,,,,,,30,0%,120,92,77%
|
| 48 |
+
,,LinkedIn,8,24,35,0,0,30,223%,30,2,15,2,7,30,187%,34,0,16,,,30,167%,,,,,,,30,0%,120,173,144%
|
| 49 |
+
,,Prospects,0,0,0,0,0,30,0%,0,0,0,0,30,30,100%,34,0,,,,30,113%,,,,,,0,30,0%,120,64,53%
|
| 50 |
+
,,SQL,0,1,0,0,0,1,100%,0,1,0,0,0,1,100%,0,0,,,,1,0%,,,,,,,1,0%,4,2,50%
|
| 51 |
+
,,Calls,0,1,0,0,46,60,78%,0,1,19,20,6,60,77%,1,0,,,,60,2%,,,,,,,60,0%,240,94,39%
|
| 52 |
+
Tenix,Hans,Emails,0,1,0,3,15,75,25%,25,16,13,19,8,75,108%,25,0,,,,75,33%,,,,,,,75,0%,300,125,42%
|
| 53 |
+
,,LinkedIn,0,51,20,14,40,75,167%,4,33,3,4,41,75,113%,0,0,,,,75,0%,,,,,,,75,0%,300,210,70%
|
| 54 |
+
,,Prospects,0,0,0,0,40,40,100%,33,0,0,0,0,40,83%,0,0,,,,40,0%,,,,,,,40,0%,160,73,46%
|
| 55 |
+
,,SQL,0,0,0,0,0,1,0%,1,0,0,0,0,1,100%,0,0,,,,1,0%,,,,,,,2,0%,5,1,20%
|
| 56 |
+
,,Calls,6,44,26,20,26,120,102%,30,31,41,7,22,120,109%,28,18,25,,,120,59%,,,,,,,120,0%,480,324,68%
|
| 57 |
+
3LC (DACH),Goenke,Emails,3,0,7,2,1,0,,3,0,1,1,2,0,,0,3,1,,,0,,,,,,,,0,,0,24,
|
| 58 |
+
,,LinkedIn,48,1,5,2,1,40,143%,6,39,6,1,6,40,145%,0,30,0,,,40,75%,,,,,,,40,0%,160,145,91%
|
| 59 |
+
,,Prospects,39,1,0,0,0,30,133%,0,32,0,0,0,30,107%,0,30,0,,,30,100%,,,,,,,30,0%,120,102,85%
|
| 60 |
+
,,SQL,1,0,0,1,0,1,200%,1,0,0,0,0,1,100%,0,0,0,,,2,0%,,,,,,,2,0%,6,3,50%
|
| 61 |
+
,,Calls,0,50,48,28,24,150,100%,0,50,44,84,5,150,122%,32,30,31,31,,150,83%,,,,,,,150,0%,600,457,76%
|
| 62 |
+
,,Emails,10,28,12,14,36,0,,4,18,14,10,3,0,,44,30,18,10,,0,,,,,,,,,,0,251,
|
| 63 |
+
Bannerflow,Goenke,LinkedIn,22,3,4,21,24,0,,1,25,1,2,4,0,,12,34,0,0,,0,,,,,,,,,,0,153,
|
| 64 |
+
,,Prospects,40,4,13,18,0,30,250%,0,31,2,7,0,30,133%,33,27,10,2,,30,240%,,,,,,,30,0%,120,187,156%
|
| 65 |
+
,,Discovery,0,1,0,0,1,1,200%,0,0,0,0,0,2,0%,1,0,1,0,,2,100%,,,,,,,1,0%,6,4,67%
|
| 66 |
+
,,SQL,1,0,0,0,0,0,,0,0,0,0,0,1,0%,1,0,0,0,,1,100%,,,,,,,1,0%,3,2,67%
|
| 67 |
+
,,Calls,0,32,26,22,24,150,69%,33,61,0,70,4,150,112%,25,60,15,,,150,67%,,,,,,,150,0%,600,372,62%
|
| 68 |
+
,,Emails,0,3,15,2,5,0,,2,2,0,2,2,0,,2,6,4,,,0,,,,,,,,,,0,45,
|
| 69 |
+
Bannerflow,Viv,LinkedIn,52,15,22,12,38,0,,10,10,0,0,5,0,,20,2,15,,,0,,,,,,,,,,0,201,
|
| 70 |
+
,,Prospects,15,0,0,0,0,30,50%,20,0,0,58,0,30,260%,0,12,45,,,30,190%,,,,,,,30,0%,120,150,125%
|
| 71 |
+
,,Discovery,0,0,0,0,1,1,100%,0,0,0,0,0,2,0%,0,0,0,,,2,0%,,,,,,,1,0%,6,1,17%
|
| 72 |
+
,,SQL,0,0,0,0,0,0,,0,0,0,0,0,1,0%,0,0,0,,,1,0%,,,,,,,1,0%,3,0,0%
|
| 73 |
+
,,Discovery,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,0,1,
|
| 74 |
+
Bannerflow,Alex,SQL,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,0,1,
|
| 75 |
+
,,Calls,,51,19,51,26,200,74%,61,1,58,50,2,200,86%,70,,,,,,,,,,,,,,,400,389,97%
|
| 76 |
+
Elbilforeningen,David,Emails,,,,,,0,,0,0,0,4,0,0,,40,,,,,,,,,,,,,,,0,44,
|
| 77 |
+
,,Prospects,,,,,,121,0%,0,0,0,0,0,0,,0,,,,,,,,,,,,,,,121,0,0%
|
| 78 |
+
,,SQL (offer sent),,3,1,3,1,7,114%,7,1,0,4,0,8,150%,,,,,,,,,,,,,,,,15,20,133%
|
| 79 |
+
,,Calls,0,46,32,19,32,120,108%,62,55,33,0,0,150,100%,,,,,,150,0%,,,,,,,150,0%,570,279,49%
|
| 80 |
+
Vrex (Norway),David,Emails,0,0,60,0,0,20,300%,5,88,2,55,0,20,750%,,,,,,20,0%,,,,,,,20,0%,80,210,263%
|
| 81 |
+
,,Prospects,0,0,0,0,0,20,0%,1,2,0,39,0,20,210%,,,,,,20,0%,,,,,,,20,0%,80,42,53%
|
| 82 |
+
,,SQL,0,2,0,0,0,1,200%,0,1,1,0,0,1,200%,,,1,,,1,100%,,,,,,,2,0%,5,5,100%
|
| 83 |
+
,,Calls,0,0,86,28,37,150,101%,0,68,82,0,0,150,100%,,,,,,150,0%,,,,,,,150,0%,600,301,50%
|
| 84 |
+
Dekode,David,Emails,0,4,40,0,2,37,124%,0,1,1,0,0,37,5%,,,,,,38,0%,,,,,,,38,0%,150,48,32%
|
| 85 |
+
,,Prospects,0,0,8,0,0,37,22%,0,0,1,0,0,37,3%,,,,,,38,0%,,,,,,,38,0%,150,9,6%
|
| 86 |
+
,,SQL,0,0,1,0,1,2,100%,0,1,1,0,0,2,100%,,,,1,,2,50%,,,,,,,3,0%,9,5,56%
|
| 87 |
+
,,Calls,22,1,19,50,34,125,101%,29,8,26,42,23,125,102%,31,37,29,17,,125,91%,,,,,,,125,0%,500,368,74%
|
| 88 |
+
,,Emails,10,1,21,1,17,25,200%,9,9,6,15,4,25,172%,10,5,4,,,25,76%,,,,,,,25,0%,100,112,112%
|
| 89 |
+
SCG,Kai,LinkedIn,0,0,0,0,0,,,0,0,7,0,3,,,0,0,4,,,,,,,,,,,,,0,14,
|
| 90 |
+
,,Prospects,10,0,21,0,4,25,140%,1,3,2,1,3,25,40%,1,5,2,,,25,32%,,,,,,,25,0%,100,53,53%
|
| 91 |
+
,,SQL,0,0,0,0,0,1,0%,0,1,0,0,1,1,200%,0,0,1,,,1,100%,,,,,,,1,0%,4,3,75%
|
| 92 |
+
,,Calls,0,27,22,38,14,100,101%,40,22,29,11,17,100,119%,16,30,25,12,,100,83%,,,,,,,100,0%,400,303,76%
|
| 93 |
+
,,Emails,0,0,0,0,0,25,0%,9,3,7,0,0,25,76%,2,8,0,,,25,40%,,,,,,,25,0%,100,29,29%
|
| 94 |
+
AFI,Kai,LinkedIn,0,0,0,0,0,0,,0,0,0,0,0,0,,0,0,0,,,0,,,,,,,,0,,0,0,
|
| 95 |
+
,,Prospects,0,0,2,1,1,25,16%,5,1,1,0,1,25,32%,2,3,2,,,25,28%,,,,,,,25,0%,100,19,19%
|
| 96 |
+
,,SQL,0,0,0,0,0,1,0%,0,0,1,2,0,1,300%,0,0,0,1,,1,100%,,,,,,,1,0%,4,4,100%
|
| 97 |
+
,,Calls,25,20,82,23,0,150,100%,41,0,100,36,27,150,136%,14,0,37,54,,150,70%,,,,,,,150,0%,600,459,77%
|
| 98 |
+
Designmaskinen,Johannes,Emails,5,1,9,11,0,30,87%,8,0,14,4,6,30,107%,11,2,0,5,,30,60%,,,,,,,30,0%,120,76,63%
|
| 99 |
+
,,Prospects,2,0,5,3,0,30,33%,0,0,11,6,1,30,60%,17,2,3,6,,30,93%,,,,,,,30,0%,120,56,47%
|
| 100 |
+
,,SQL,1,0,1,0,0,2,100%,0,0,0,1,0,3,33%,1,0,1,1,,3,100%,,,,,,,2,0%,10,6,60%
|
| 101 |
+
,,Calls,66,81,7,50,58,400,66%,71,63,77,102,90,400,101%,20,40,,,,400,15%,,,,,,,400,0%,"1,600",725,45%
|
| 102 |
+
Lawai,Tiril,Emails,0,0,0,0,0,0,,0,0,0,0,0,0,,,,,,,0,,,,,,,,0,,0,0,
|
| 103 |
+
,,Prospects,0,0,0,0,0,100,0%,0,0,0,0,0,100,0%,,,,,,100,0%,,,,,,,100,0%,400,0,0%
|
| 104 |
+
,,SQL,0,0,1,3,5,6,150%,1,,,3,1,6,83%,4,,,,,6,67%,,,,,,,6,0%,24,18,75%
|
| 105 |
+
,,Calls,0,15,63,57,25,100,160%,28,43,31,44,34,100,180%,1,69,27,,,100,97%,,,,,,,100,0%,400,437,109%
|
| 106 |
+
,,Emails,14,6,12,15,30,40,193%,17,31,16,8,7,40,198%,23,1,12,19,,40,138%,,,,,,,40,0%,160,211,132%
|
| 107 |
+
Tenix,Lucy,LinkedIn,10,14,7,23,20,40,185%,5,7,14,26,10,40,155%,6,19,21,,,40,115%,,,,,,,40,0%,160,182,114%
|
| 108 |
+
,,Prospects,37,38,0,1,4,40,200%,25,15,0,0,0,40,100%,42,0,0,0,0,40,105%,,,,,,,40,0%,160,162,101%
|
| 109 |
+
,,SQL,0,0,0,0,0,1,0%,1,0,0,1,0,1,200%,0,0,0,,,1,0%,,,,,,,1,0%,4,2,50%
|
| 110 |
+
,,Calls,0,0,0,0,0,0,#DIV/0!,0,7,4,21,10,200,21%,18,23,20,,,200,31%,,,,,,,200,0%,600,103,17%
|
| 111 |
+
,,Emails,10,15,25,31,27,,,30,55,12,33,58,,,56,38,43,,,,,,,,,,,,,0,433,
|
| 112 |
+
Bannerflow,Ermal,LinkedIn,3,3,6,5,7,,,3,2,5,1,6,,,1,2,2,,,,,,,,,,,,,0,46,
|
| 113 |
+
,,Prospects,4,6,0,0,0,30,33%,18,0,14,14,7,30,177%,10,2,9,,,30,70%,,,,,,,30,0%,120,84,70%
|
| 114 |
+
,,Discovery,0,0,0,1,0,2,50%,0,0,0,1,0,2,50%,0,0,0,1,,2,50%,,,,,,,2,0%,8,3,38%
|
| 115 |
+
,,SQL,0,0,0,0,0,1,0%,0,0,0,0,0,1,0%,0,0,0,,,1,0%,,,,,,,1,0%,4,0,0%
|
| 116 |
+
,,Calls,,,,,,0,#DIV/0!,15,35,40,41,40,200,86%,,,,,,200,0%,,,,,,,200,0%,600,171,29%
|
| 117 |
+
,,Emails,,,,,,,,66,5,21,39,,,,,,,,,,,,,,,,,,,0,131,
|
| 118 |
+
Bannerflow,Ardit,LinkedIn,,,,,,,,30,0,27,0,34,,,,,,,,,,,,,,,,,,0,91,
|
| 119 |
+
,,Prospects,,,,,,30,0%,7,4,8,6,5,30,100%,,,,,,30,0%,,,,,,,30,0%,120,30,25%
|
| 120 |
+
,,Discovery,0,0,0,0,0,2,0%,0,0,1,2,0,2,150%,,,,,,2,0%,,,,,,,2,0%,8,3,38%
|
| 121 |
+
,,SQL,0,0,0,0,0,1,0%,0,0,0,0,0,1,0%,,,,,,1,0%,,,,,,,1,0%,4,0,0%
|
| 122 |
+
,,Calls,x,x,x,x,x,,,,,,,7,,,,16,26,,,200,21%,,,,,,,200,0%,400,49,12%
|
| 123 |
+
Zacco,Johannes,Emails,x,x,x,x,x,,,,,,,0,,,,0,0,,,,,,,,,,,,,0,0,#DIV/0!
|
| 124 |
+
,,Prospects,x,x,x,x,x,,,,,,,0,,,,13,10,,,,,,,,,,,,,0,23,#DIV/0!
|
| 125 |
+
,,SQL,x,x,x,x,x,,,,,,,0,,,,,,,,,,,,,,,,,,0,0,#DIV/0!
|
| 126 |
+
,,Calls,,,,,,,,,,69,39,90,,,11,0,46,,,200,,,,,,,,200,,400,255,64%
|
| 127 |
+
Lawai,Sigmund,Emails,,,,,,,,,,1,0,1,,,0,0,0,,,,,,,,,,,,,0,2,#DIV/0!
|
| 128 |
+
,,Prospects,,,,,,,,,,65,9,48,,,0,0,0,,,,,,,,,,,,,0,122,#DIV/0!
|
| 129 |
+
,,SQL,,,,,2,,,,,0,1,0,,,1,0,0,,,,,,,,,,,,,0,4,#DIV/0!
|
| 130 |
+
,,Calls,,,,,,,,,,,,,,,73,43,72,,,,,,,,,,,,,,188,
|
| 131 |
+
Elbilforeningen,Sigmund,Emails,,,,,,,,,,,,,,,40,48,6,,,,,,,,,,,,,,94,
|
| 132 |
+
,,Prospects,,,,,,,,,,,,,,,0,2,0,,,,,,,,,,,,,,2,
|
| 133 |
+
,,SQL,,,,,,,,,,,,,,,3,4,2,,,,,,,,,,,,,,9,
|
sdr-feature/SKILL.md
CHANGED
|
@@ -18,42 +18,61 @@ Implements features for the SDR Status Tracker dashboard and deploys to Hugging
|
|
| 18 |
|
| 19 |
- **Location**: This folder (sdr-status-tracker)
|
| 20 |
- **Main file**: `index.html` (single-file dashboard with embedded JS/CSS)
|
| 21 |
-
- **
|
| 22 |
- **Brand**: ScaleupXQ (see `BRAND_GUIDELINES.md`)
|
| 23 |
|
| 24 |
-
##
|
| 25 |
|
| 26 |
-
### 1.
|
| 27 |
|
| 28 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
- `index.html` - Main dashboard code
|
| 30 |
- `BRAND_GUIDELINES.md` - Color palette, fonts, styling rules
|
| 31 |
- `CLAUDE.md` - Project overview and data structure
|
| 32 |
|
| 33 |
-
###
|
| 34 |
|
| 35 |
Make changes to `index.html`. Key sections:
|
| 36 |
- **Lines 1-300**: CSS styles (`:root` variables, themes, components)
|
| 37 |
- **Lines 300-450**: HTML structure (theme toggle, table, leaderboards, modals)
|
| 38 |
- **Lines 450+**: JavaScript (data, rendering, calculations)
|
| 39 |
|
| 40 |
-
###
|
| 41 |
-
|
| 42 |
-
After implementing:
|
| 43 |
|
| 44 |
```bash
|
| 45 |
-
cd <project-folder>
|
| 46 |
git add .
|
| 47 |
-
git status
|
| 48 |
git commit -m "$(cat <<'EOF'
|
| 49 |
<descriptive commit message>
|
| 50 |
|
| 51 |
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
| 52 |
EOF
|
| 53 |
)"
|
| 54 |
-
git push hf main
|
| 55 |
```
|
| 56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
## Key Code Patterns
|
| 58 |
|
| 59 |
### CSS Variables (Themes)
|
|
@@ -82,10 +101,3 @@ function getProgressClass(progress) {
|
|
| 82 |
| Marigold 300 | `#FFF09B` | Warning/good states |
|
| 83 |
| Tangerine 300 | `#FF8474` | Danger/caution |
|
| 84 |
| Base 600 | `#0D0B13` | Dark text/backgrounds |
|
| 85 |
-
|
| 86 |
-
## Verification
|
| 87 |
-
|
| 88 |
-
After pushing, verify deployment at:
|
| 89 |
-
`https://huggingface.co/spaces/MathiasAESandnes/sdr-status-tracker`
|
| 90 |
-
|
| 91 |
-
Build typically takes 1-2 minutes after push.
|
|
|
|
| 18 |
|
| 19 |
- **Location**: This folder (sdr-status-tracker)
|
| 20 |
- **Main file**: `index.html` (single-file dashboard with embedded JS/CSS)
|
| 21 |
+
- **HF Space**: `https://huggingface.co/spaces/MathiasAESandnes/sdr-status-tracker`
|
| 22 |
- **Brand**: ScaleupXQ (see `BRAND_GUIDELINES.md`)
|
| 23 |
|
| 24 |
+
## Complete Workflow
|
| 25 |
|
| 26 |
+
### 1. List Requested Changes
|
| 27 |
|
| 28 |
+
Before implementing, clearly list all changes the user requested so nothing is missed.
|
| 29 |
+
|
| 30 |
+
### 2. Understand Context
|
| 31 |
+
|
| 32 |
+
Read relevant files:
|
| 33 |
- `index.html` - Main dashboard code
|
| 34 |
- `BRAND_GUIDELINES.md` - Color palette, fonts, styling rules
|
| 35 |
- `CLAUDE.md` - Project overview and data structure
|
| 36 |
|
| 37 |
+
### 3. Implement Features
|
| 38 |
|
| 39 |
Make changes to `index.html`. Key sections:
|
| 40 |
- **Lines 1-300**: CSS styles (`:root` variables, themes, components)
|
| 41 |
- **Lines 300-450**: HTML structure (theme toggle, table, leaderboards, modals)
|
| 42 |
- **Lines 450+**: JavaScript (data, rendering, calculations)
|
| 43 |
|
| 44 |
+
### 4. Commit Changes
|
|
|
|
|
|
|
| 45 |
|
| 46 |
```bash
|
|
|
|
| 47 |
git add .
|
|
|
|
| 48 |
git commit -m "$(cat <<'EOF'
|
| 49 |
<descriptive commit message>
|
| 50 |
|
| 51 |
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
| 52 |
EOF
|
| 53 |
)"
|
|
|
|
| 54 |
```
|
| 55 |
|
| 56 |
+
### 5. Push to HuggingFace via Browser
|
| 57 |
+
|
| 58 |
+
Since the sandbox cannot directly reach huggingface.co, use Claude in Chrome browser tools:
|
| 59 |
+
|
| 60 |
+
1. Navigate to: `https://huggingface.co/spaces/MathiasAESandnes/sdr-status-tracker/tree/main`
|
| 61 |
+
2. Login if needed (user may need to authenticate)
|
| 62 |
+
3. For each changed file:
|
| 63 |
+
- Click on the file (e.g., `index.html`)
|
| 64 |
+
- Click "Edit" button
|
| 65 |
+
- Select all and replace with the new content
|
| 66 |
+
- Add commit message and click "Commit changes to main"
|
| 67 |
+
|
| 68 |
+
**Alternative**: Ask user to run `git push hf main` from their terminal if browser method is impractical.
|
| 69 |
+
|
| 70 |
+
### 6. Verify Deployment
|
| 71 |
+
|
| 72 |
+
Check the live site: `https://huggingface.co/spaces/MathiasAESandnes/sdr-status-tracker`
|
| 73 |
+
|
| 74 |
+
Build typically takes 1-2 minutes after commit.
|
| 75 |
+
|
| 76 |
## Key Code Patterns
|
| 77 |
|
| 78 |
### CSS Variables (Themes)
|
|
|
|
| 101 |
| Marigold 300 | `#FFF09B` | Warning/good states |
|
| 102 |
| Tangerine 300 | `#FF8474` | Danger/caution |
|
| 103 |
| Base 600 | `#0D0B13` | Dark text/backgrounds |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|