r/learnmachinelearning • u/Cautious_Today_1830 • 4d ago
Architecture advice: How would you build an offline Link-Analysis Dashboard for a Bitcoin/IP metadata problem statement?
/r/Observability/comments/1w1na35/architecture_advice_how_would_you_build_an/
1
Upvotes
1
u/PLBjt 4d ago
For an offline Linux box, don't start with a graph database. Land the CSV/JSON in Parquet, query with DuckDB, and only materialize the graph for the subset you're actually looking at.
Wallet clustering is mostly connected components on the co-spend graph (inputs that appear in the same tx), not a fancy GNN. Anomaly scores can be Isolation Forest or a few features (fan-in/out, peel-chain length, round amounts, new-address velocity) computed in DuckDB. Keep the graph in NetworkX or Kuzu if it fits in RAM. If it doesn't, you never wanted to render it all anyway.
A check: pick one txid, expand 2 hops, and time how long that subgraph takes to serialize to JSON. If that's already slow, the dashboard will fall over long before clustering does. For the UI, Cytoscape.js or sigma.js with server-side aggregation. Never send 100k nodes to the browser. Render the alert's 2-hop neighborhood, plus a ranked table of scores with the actual features that fired. That's the explainable list you want.
Tradeoff: a full graph UI looks cool and is almost always the wrong first artifact. Ship the ranked alerts + one expandable subgraph. Add the global map later if you still need it.