mirror of
https://github.com/xx254/linkedin_skills.git
synced 2026-06-26 06:14:37 +03:00
setup sample data
This commit is contained in:
Vendored
+69
-13
@@ -67,28 +67,84 @@ function showSampleLeads() {
|
|||||||
if (!fs.existsSync(samplePath)) return;
|
if (!fs.existsSync(samplePath)) return;
|
||||||
|
|
||||||
const lines = fs.readFileSync(samplePath, "utf8").trim().split("\n");
|
const lines = fs.readFileSync(samplePath, "utf8").trim().split("\n");
|
||||||
const rows = lines.slice(1).filter(l => l.trim()); // skip header
|
const rows = lines.slice(1).filter(l => l.trim());
|
||||||
const preview = rows.slice(0, 5);
|
const preview = rows.slice(0, 5);
|
||||||
const remaining = rows.length - preview.length;
|
const remaining = rows.length - preview.length;
|
||||||
|
|
||||||
const pad = (s, n) => String(s).slice(0, n).padEnd(n);
|
// Fixed column widths (total inner width including 1-space padding each side)
|
||||||
|
const COLS = [5, 16, 28, 15, 62];
|
||||||
|
const HEADERS = ["#", "Name", "Title", "Company", "Signal"];
|
||||||
|
|
||||||
console.log("\nHere's a sample of warm leads with signals:\n");
|
// Word-wrap text to fit within content width (col width minus 2 for padding)
|
||||||
console.log("| # | Name | Title | Company | Signal |");
|
function wrap(text, colWidth) {
|
||||||
console.log("|---|------|-------|---------|--------|");
|
const maxW = colWidth - 2;
|
||||||
|
const words = text.split(" ");
|
||||||
|
const result = [];
|
||||||
|
let line = "";
|
||||||
|
for (const word of words) {
|
||||||
|
if (!line) {
|
||||||
|
line = word.slice(0, maxW);
|
||||||
|
let rest = word.slice(maxW);
|
||||||
|
while (rest) { result.push(line); line = rest.slice(0, maxW); rest = rest.slice(maxW); }
|
||||||
|
} else if (line.length + 1 + word.length <= maxW) {
|
||||||
|
line += " " + word;
|
||||||
|
} else {
|
||||||
|
result.push(line);
|
||||||
|
line = word.slice(0, maxW);
|
||||||
|
let rest = word.slice(maxW);
|
||||||
|
while (rest) { result.push(line); line = rest.slice(0, maxW); rest = rest.slice(maxW); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (line) result.push(line);
|
||||||
|
return result.length ? result : [""];
|
||||||
|
}
|
||||||
|
|
||||||
preview.forEach((line, i) => {
|
function cell(text, colWidth) {
|
||||||
|
return " " + text.padEnd(colWidth - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function center(text, colWidth) {
|
||||||
|
const space = colWidth - 2 - text.length;
|
||||||
|
const l = Math.floor(space / 2);
|
||||||
|
const r = space - l;
|
||||||
|
return " " + " ".repeat(l) + text + " ".repeat(r) + " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
const border = (l, m, r) => l + COLS.map(w => "─".repeat(w)).join(m) + r;
|
||||||
|
const dataRow = cells => "│" + cells.map((t, i) => cell(t, COLS[i])).join("│") + "│";
|
||||||
|
|
||||||
|
const parsed = preview.map((line, i) => {
|
||||||
const cols = line.split(",");
|
const cols = line.split(",");
|
||||||
const name = `${cols[0].trim()} ${cols[1].trim()}`;
|
return [
|
||||||
const title = cols[2].trim();
|
String(i + 1),
|
||||||
const company = cols[4].trim();
|
`${cols[0].trim()} ${cols[1].trim()}`,
|
||||||
const signal = cols[9].trim().replace(/^"|"$/g, "").slice(0, 60);
|
cols[2].trim(),
|
||||||
console.log(`| ${i + 1} | ${name} | ${title} | ${company} | ${signal} |`);
|
cols[4].trim(),
|
||||||
|
cols[9].trim().replace(/^"|"$/g, ""),
|
||||||
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
if (remaining > 0) {
|
console.log("\nLoading sample warm leads — placeholder contacts with realistic signals so you can run the full pipeline right now. Swap in your real\n leads any time.\n");
|
||||||
console.log(`| ... | and ${remaining} more | | | |`);
|
console.log(border("┌", "┬", "┐"));
|
||||||
|
console.log("│" + HEADERS.map((h, i) => center(h, COLS[i])).join("│") + "│");
|
||||||
|
|
||||||
|
for (const row of parsed) {
|
||||||
|
console.log(border("├", "┼", "┤"));
|
||||||
|
const wrapped = row.map((val, i) => wrap(val, COLS[i]));
|
||||||
|
const height = Math.max(...wrapped.map(w => w.length));
|
||||||
|
for (let l = 0; l < height; l++) {
|
||||||
|
console.log(dataRow(wrapped.map(w => w[l] || "")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (remaining > 0) {
|
||||||
|
console.log(border("├", "┼", "┤"));
|
||||||
|
const totalInner = COLS.reduce((a, b) => a + b, 0) + COLS.length - 1;
|
||||||
|
const msg = ` and ${remaining} more`;
|
||||||
|
console.log("│" + msg.padEnd(totalInner) + "│");
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(border("└", "┴", "┘"));
|
||||||
console.log("");
|
console.log("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,13 @@ for skill_dir in "$REPO_DIR"/*/; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ ${#linked[@]} -gt 0 ]; then
|
if [ ${#linked[@]} -gt 0 ]; then
|
||||||
echo " linked: ${linked[*]}"
|
echo ""
|
||||||
|
printf " %-30s %s\n" "Skill" "Status"
|
||||||
|
printf " %-30s %s\n" "------------------------------" "--------"
|
||||||
|
for skill in "${linked[@]}"; do
|
||||||
|
printf " %-30s %s\n" "$skill" "linked"
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
else
|
else
|
||||||
echo " (all skills already linked)"
|
echo " (all skills already linked)"
|
||||||
fi
|
fi
|
||||||
@@ -70,6 +76,8 @@ echo "linkedin-skills ready."
|
|||||||
echo " skills dir: $INSTALL_SKILLS_DIR"
|
echo " skills dir: $INSTALL_SKILLS_DIR"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next steps:"
|
echo "Next steps:"
|
||||||
echo " 1. Open this folder in Claude Code"
|
echo " ─────────────────────────────────────────────────────────────────────"
|
||||||
echo " 2. Run /onboard — it will analyze your landing page and set up your ICP"
|
printf " %-28s %s\n" "1. Open in Claude Code" "Open this folder in Claude Code"
|
||||||
echo " 3. Run /linkedin-lead-filter with your CSV to start filtering leads"
|
printf " %-28s %s\n" "2. /onboard" "Analyze your landing page and set up your ICP"
|
||||||
|
printf " %-28s %s\n" "3. /linkedin-lead-filter" "Filter your CSV leads against your ICP"
|
||||||
|
echo " ─────────────────────────────────────────────────────────────────────"
|
||||||
|
|||||||
Reference in New Issue
Block a user